aboutsummaryrefslogtreecommitdiffstats
path: root/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics
diff options
context:
space:
mode:
Diffstat (limited to 'external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics')
-rw-r--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
322 files changed, 15225 insertions, 0 deletions
diff --git 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]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+