mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
Test and fix CESU-8 handling in String builtins.
Fixes #757 JerryScript-DCO-1.0-Signed-off-by: Laszlo Vidacs lvidacs.u-szeged@partner.samsung.com
This commit is contained in:
parent
cb0087b517
commit
b8b3b1f275
@ -594,7 +594,11 @@ ecma_builtin_helper_string_find_index (ecma_string_t *original_str_p, /**< index
|
||||
|
||||
ecma_length_t index = start_pos;
|
||||
|
||||
lit_utf8_byte_t *original_str_curr_p = original_str_utf8_p + index;
|
||||
lit_utf8_byte_t *original_str_curr_p = original_str_utf8_p;
|
||||
for (ecma_length_t idx = 0; idx < index; idx++)
|
||||
{
|
||||
lit_utf8_incr (&original_str_curr_p);
|
||||
}
|
||||
|
||||
/* create utf8 string from search string */
|
||||
MEM_DEFINE_LOCAL_ARRAY (search_str_utf8_p,
|
||||
|
||||
@ -43,13 +43,14 @@ assert("w2\uFFA2A".indexOf("A") === 3);
|
||||
|
||||
assert("w2\u1D306A".indexOf("A") === 4);
|
||||
|
||||
// check surrogate pairs
|
||||
assert("\uD834\uDF06".indexOf("\uDF06") === 1);
|
||||
|
||||
assert("\uD834\uDF06w2\u1D306D".indexOf("D") === 6);
|
||||
|
||||
assert("\ud800\dc00".indexOf("\dc00") === 1);
|
||||
|
||||
assert("\u8000\u0700\u8000\u8000A".indexOf("A", 3) === 4);
|
||||
|
||||
// check prefix search
|
||||
assert("aaaabaaa".indexOf("aaaba") === 1);
|
||||
|
||||
|
||||
@ -39,6 +39,33 @@ assert("Hello welcome, welcome to the universe o.".lastIndexOf("o", 25) === 24);
|
||||
|
||||
assert("Helloooo woooorld".lastIndexOf("oooo", 6) === 4);
|
||||
|
||||
// check utf8 strings
|
||||
assert("\uFFA2".lastIndexOf("\uFFA2") === 0);
|
||||
|
||||
assert("\uFFA2".lastIndexOf("A") === -1);
|
||||
|
||||
assert("w2\uFFA2 A".lastIndexOf("A") === 4);
|
||||
|
||||
assert("w2\u1D306A".indexOf("A") === 4);
|
||||
|
||||
assert("\u0070A".lastIndexOf("A") === 1);
|
||||
|
||||
assert("\u8000A".lastIndexOf("A") === 1);
|
||||
|
||||
assert("\u0080\u0080\u0980\u1080A".lastIndexOf("A") === 4);
|
||||
|
||||
assert("\u0080\u0980\u1080A\u0080\u0080\u0980\u1080".lastIndexOf("A", 4) === 3);
|
||||
|
||||
assert("\u0080\u0080\u0980\u1080A\u0980AA\u0980A".lastIndexOf("A\u0980A") === 7);
|
||||
|
||||
assert("\u0080\u0080\u0980\u1080A\u0980AA\u0980A".lastIndexOf("A\u0980A", 4) === 4);
|
||||
|
||||
assert("\uD834\uDF06".lastIndexOf("\uDF06") === 1);
|
||||
|
||||
assert("\uD834\uDF06w2\u1D306D\uDF06w2\u1D306D".lastIndexOf("D") === 12);
|
||||
|
||||
assert("\ud800\dc00\ud800\dc00".lastIndexOf("\dc00") === 6);
|
||||
|
||||
// check empty string
|
||||
assert(String.prototype.lastIndexOf.call(new String()) === -1);
|
||||
|
||||
@ -75,7 +102,7 @@ assert("true".lastIndexOf(true, false) === 0);
|
||||
|
||||
// check coercible - undefined
|
||||
try {
|
||||
assert(String.prototype.lastIndexOf.call(undefined) === -1);
|
||||
String.prototype.lastIndexOf.call(undefined);
|
||||
assert(false);
|
||||
} catch(e) {
|
||||
assert(e instanceof TypeError);
|
||||
@ -83,7 +110,7 @@ try {
|
||||
|
||||
// check coercible - null
|
||||
try {
|
||||
assert(String.prototype.lastIndexOf.call(null, 0) === -1);
|
||||
String.prototype.lastIndexOf.call(null);
|
||||
assert(false);
|
||||
} catch (e) {
|
||||
assert(e instanceof TypeError);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user