use
open
qw( :encoding(UTF-8)
:std );
is grapheme_index(
'Hello World'
,
'H'
), 0,
'One char, at beginning'
;
is grapheme_index(
'Hello World'
,
'l'
), 2,
'One char, in the middle'
;
is grapheme_index(
'Hello World'
,
'd'
), 10,
'One char, in the end'
;
is grapheme_index(
'Hello World'
,
'x'
), -1,
'One char, no match'
;
is grapheme_index(
'Hello World'
,
'l'
, 0), 2,
'One char, find first match, pos = 0'
;
is grapheme_index(
'Hello World'
,
'l'
, 2), 2,
'- 1. match again, pos @ match'
;
is grapheme_index(
'Hello World'
,
'l'
, 3), 3,
'- 2. match'
;
is grapheme_index(
'Hello World'
,
'l'
, 4), 9,
'- 3. match'
;
is grapheme_index(
'Hello World'
,
'l'
, 10), -1,
'- no more matches'
;
is grapheme_index(
'Hello World'
,
'Hello'
), 0,
'Substr, at beginning'
;
is grapheme_index(
'Hello World'
,
'o W'
), 4,
'Substr, in the middle'
;
is grapheme_index(
'Hello World'
,
'World'
), 6,
'Substr, at the end'
;
is grapheme_index(
'Hello World'
,
'low'
), -1,
'Substr, no match'
;
is grapheme_index(
'Hello World'
,
'Hello World'
), 0,
'Substr eq Str'
;
is grapheme_index(
'Hello World'
,
''
), 0,
'Substr is empty'
;
is grapheme_index(
''
,
''
), 0,
'Both strings are empty'
;
is grapheme_index(
''
,
'Hello'
), -1,
'Only main-string is empty'
;
is grapheme_index(
'Hello'
,
''
, 3), 3,
'Substr is empty, pos within str'
;
is grapheme_index(
'Hello'
,
''
, 5), 5,
'Substr is empty, pos at end of str'
;
is grapheme_index(
'Hello'
,
''
, 999), 5,
'Substr is empty, pos > length of str'
;
is grapheme_index(
'ababcabcd'
,
'abcd'
), 5,
'Start-of-substr matches several times'
;
is grapheme_index(
'uuúuúuùù'
,
'úuù'
), 4,
'Accented chars'
;
is grapheme_index(
'Ümlaut'
,
'Ü'
), 0,
'Umlaut'
;
is grapheme_index(1234, 3), 2,
'index on non-strings'
;
is grapheme_index(1023,
'0'
), 1,
'grapheme_index($str, "0") works'
;
is grapheme_index(1023, 0), 1,
'grapheme_index($str, 0) works'
;