pike.git
/
src
/
testsuite.in
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/testsuite.in:13109:
test_unicode("\777077", "\330\277\336\77", "\277\330\77\336") test_unicode("\777077foo\77077\777077blä\777077", "\330\277\336\77\0f\0o\0o\176\77\330\277\336\77\0b\0l\0ä\330\277\336\77", "\277\330\77\336f\0o\0o\0\77\176\277\330\77\336b\0l\0ä\0\277\330\77\336") test_eval_error(return string_to_unicode("\7077077")) test_eval_error(return string_to_unicode("\xffff\x10000")) test_eval_error(return unicode_to_string(" ")) // - string_to_utf8, utf8_to_string
-
test_eq(string_to_utf8("foo"), "foo")
-
test_eq(string_to_utf8("blä"), "bl\303\244")
-
test_eq(string_to_utf8("\77077"), "\347\270\277")
-
test_eq(string_to_utf8("\U0010ffff\U00100000\U00010000"), "\364\217\277\277\364\200\200\200\360\220\200\200")
-
test_eq(string_to_utf8("\U0010ffff\U00100000\U00010000", 2), "\355\257\277\355\277\277\355\257\200\355\260\200\355\240\200\355\260\200")
-
test_eq(string_to_utf8("\7077077", 1), "\367\207\270\277")
-
test_eq(string_to_utf8("\77077077", 1), "\370\277\207\270\277")
-
test_eq(string_to_utf8("\7077077077", 1), "\374\270\277\207\270\277")
+
-
+
// We run the same test for different multiples of the strings
+
// to make sure that the vectorization does not accidentally
+
// work or not work.
+
define(test_utf8_to_string, [[
+
test_eq(utf8_to_string($1, $3), $2)
+
test_eq(utf8_to_string($1*2, $3), $2*2)
+
test_eq(utf8_to_string($1*3, $3), $2*3)
+
test_eq(utf8_to_string($1*4, $3), $2*4)
+
test_eq(utf8_to_string($1*5, $3), $2*5)
+
test_eq(utf8_to_string($1*6, $3), $2*6)
+
test_eq(utf8_to_string($1*7, $3), $2*7)
+
test_eq(utf8_to_string($1*8, $3), $2*8)
+
test_eq(utf8_to_string($1*23, $3), $2*23)
+
test_eq(utf8_to_string($1*24, $3), $2*24)
+
test_eq(utf8_to_string($1*25, $3), $2*25)
+
test_eq(utf8_to_string($1*63, $3), $2*63)
+
test_eq(utf8_to_string($1*64, $3), $2*64)
+
test_eq(utf8_to_string($1*65, $3), $2*65)
+
+
test_eq(string_to_utf8($2, $3), $1)
+
test_eq(string_to_utf8($2*2, $3), $1*2)
+
test_eq(string_to_utf8($2*3, $3), $1*3)
+
test_eq(string_to_utf8($2*4, $3), $1*4)
+
test_eq(string_to_utf8($2*5, $3), $1*5)
+
test_eq(string_to_utf8($2*6, $3), $1*6)
+
test_eq(string_to_utf8($2*7, $3), $1*7)
+
test_eq(string_to_utf8($2*8, $3), $1*8)
+
test_eq(string_to_utf8($2*23, $3), $1*23)
+
test_eq(string_to_utf8($2*24, $3), $1*24)
+
test_eq(string_to_utf8($2*25, $3), $1*25)
+
test_eq(string_to_utf8($2*63, $3), $1*63)
+
test_eq(string_to_utf8($2*64, $3), $1*64)
+
test_eq(string_to_utf8($2*65, $3), $1*65)
+
]])
+
define(test_string_to_utf8, [[
+
test_utf8_to_string($2, $1, $3)
+
]])
+
test_string_to_utf8("foo", "foo", 0)
+
test_string_to_utf8("blä", "bl\303\244", 0)
+
test_string_to_utf8("\77077", "\347\270\277", 0)
+
test_string_to_utf8("\U0010ffff\U00100000\U00010000",
+
"\364\217\277\277\364\200\200\200\360\220\200\200", 0)
+
test_string_to_utf8("\U0010ffff\U00100000\U00010000",
+
"\355\257\277\355\277\277\355\257\200\355\260\200\355\240\200\355\260\200",
+
2)
+
test_string_to_utf8("\7077077", "\367\207\270\277", 1)
+
test_string_to_utf8("\77077077", "\370\277\207\270\277", 1)
+
test_string_to_utf8("\7077077077", "\374\270\277\207\270\277", 1)
+
define(test_utf8_encdec, [[ test_eq(utf8_to_string(string_to_utf8($1, $2), $2), $1) test_eq(utf8_to_string(string_to_utf8($1*13, $2), $2), $1*13) test_eq(utf8_to_string(string_to_utf8($1*64, $2), $2), $1*64) ]]) // Boundary tests for each encoding length test_utf8_encdec("\u00000000", 0) test_utf8_encdec("\u00000080", 0) test_utf8_encdec("\u00000800", 0) test_utf8_encdec("\u00010000", 0)
pike.git/src/testsuite.in:13142:
test_utf8_encdec("\u0000FFFF", 0) test_utf8_encdec("\u001FFFFF", 0) test_utf8_encdec("\u03FFFFFF", 1) test_utf8_encdec("\u7FFFFFFF", 1) // 077077077077 has 33 bits unsigned. The escape sequence parser used // to silently truncate too long char values, but not anymore. dnl test_eq(string_to_utf8("\77077077077", 1), "\376\203\270\277\207\270\277") dnl test_eq(utf8_to_string("\376\203\270\277\207\270\277", 1), "\77077077077") // The following uses the char that actually got tested.
-
test_
eq(
string_to_utf8("\37077077077",
1),
"\376\203\270\277\207\270\277")
-
test_
eq(
utf8_to_string("\376\203\270\277\207\270\277",
1),
"\37077077077")
+
test_string_to_utf8("\37077077077", "\376\203\270\277\207\270\277"
, 1
)
+
test_utf8_to_string("\376\203\270\277\207\270\277", "\37077077077"
, 1
)
-
test_
eq(
utf8_to_string("\374\270\277\207\270\277",
1),
"\7077077077")
-
test_
eq(
utf8_to_string("\370\277\207\270\277",
1),
"\77077077")
-
test_
eq(
utf8_to_string("\367\207\270\277",
1),
"\7077077")
+
test_utf8_to_string("\374\270\277\207\270\277", "\7077077077"
, 1
)
+
test_utf8_to_string("\370\277\207\270\277", "\77077077"
, 1
)
+
test_utf8_to_string("\367\207\270\277", "\7077077"
, 1
)
test_eval_error(return utf8_to_string("\355\257\277\355\277\277\355\257\200\355\260\200\355\240\200\355\260\200"))
-
test_
eq(
utf8_to_string("\355\257\277\355\277\277\355\257\200\355\260\200\355\240\200\355\260\200",
2),
"\U0010ffff\U00100000\U00010000")
-
test_
eq(
utf8_to_string("\364\217\277\277\364\200\200\200\360\220\200\200"
)
, "\U0010ffff\U00100000\U00010000")
-
test_
eq(
utf8_to_string("\347\270\277"
)
, "\77077")
-
test_
eq(
utf8_to_string("bl\303\244"
)
, "blä")
-
test_
eq(
utf8_to_string("foo"
)
, "foo")
+
test_utf8_to_string("\355\257\277\355\277\277\355\257\200\355\260\200\355\240\200\355\260\200",
+
"\U0010ffff\U00100000\U00010000"
, 2
)
+
test_utf8_to_string("\364\217\277\277\364\200\200\200\360\220\200\200",
+
"\U0010ffff\U00100000\U00010000"
, 0
)
+
test_utf8_to_string("\347\270\277", "\77077"
, 0
)
+
test_utf8_to_string("bl\303\244", "blä"
, 0
)
+
test_utf8_to_string("foo", "foo"
, 0
)
test_eval_error(return string_to_utf8("\77077077077")) test_eval_error(return utf8_to_string("\376\203\270\277\207\270\277")) test_eval_error(return utf8_to_string("\277")); test_eval_error(return utf8_to_string("\377")); test_eval_error(return utf8_to_string("\376\203\270\277\207\270", 1)); test_eval_error(return utf8_to_string("\374\270\277\207\270")); test_eval_error(return utf8_to_string("\370\277\207\270")); test_eval_error(return utf8_to_string("\367\207\270")); test_eval_error(return utf8_to_string("\347\270")); test_eval_error(return utf8_to_string("\303")); test_eval_error(return utf8_to_string("\376\203\270\277\207\270a")); test_eval_error(return utf8_to_string("\374\270\277\207\270a")); test_eval_error(return utf8_to_string("\370\277\207\270a")); test_eval_error(return utf8_to_string("\367\207\270a")); test_eval_error(return utf8_to_string("\347\270a")); test_eval_error(return utf8_to_string("\303a")); // Invalid ranges
-
test_
eq(
string_to_utf8
("\ud7ff"
)
, "\u00ed\u009f\u00bf")
+
test_string_to_utf8("\ud7ff", "\u00ed\u009f\u00bf"
, 0
)
test_eval_error(return string_to_utf8 ("\ud800"))
-
test_
eq(
string_to_utf8
("\ud800",
1),
"\u00ed\u00a0\u0080")
-
test_
eq(
string_to_utf8
("\udfff",
1),
"\u00ed\u00bf\u00bf")
+
test_string_to_utf8("\ud800", "\u00ed\u00a0\u0080"
, 1
)
+
test_string_to_utf8("\udfff", "\u00ed\u00bf\u00bf"
, 1
)
test_eval_error(return string_to_utf8 ("\udfff"))
-
test_
eq(
string_to_utf8
("\ue000"
)
, "\u00ee\u0080\u0080")
-
test_
eq(
string_to_utf8
("\U0010ffff"
)
, "\u00f4\u008f\u00bf\u00bf")
+
test_string_to_utf8("\ue000", "\u00ee\u0080\u0080"
, 0
)
+
test_string_to_utf8("\U0010ffff", "\u00f4\u008f\u00bf\u00bf"
, 0
)
test_eval_error(return string_to_utf8 ("\U00110000"))
-
test_
eq(
string_to_utf8
("\U00110000",
1),
"\u00f4\u0090\u0080\u0080")
+
test_string_to_utf8("\U00110000", "\u00f4\u0090\u0080\u0080"
, 1
)
-
test_
eq(
utf8_to_string
("\u00ed\u009f\u00bf"
)
, "\ud7ff")
+
test_utf8_to_string("\u00ed\u009f\u00bf", "\ud7ff"
, 0
)
test_eval_error(return utf8_to_string ("\u00ed\u00a0\u0080"))
-
test_
eq(
utf8_to_string
("\u00ed\u00a0\u0080",
1),
"\ud800")
-
test_
eq(
utf8_to_string
("\u00ed\u00bf\u00bf",
1),
"\udfff")
+
test_utf8_to_string("\u00ed\u00a0\u0080", "\ud800"
, 1
)
+
test_utf8_to_string("\u00ed\u00bf\u00bf", "\udfff"
, 1
)
test_eval_error(return utf8_to_string ("\u00ed\u00bf\u00bf"))
-
test_
eq(
utf8_to_string
("\u00ee\u0080\u0080"
)
, "\ue000")
-
test_
eq(
utf8_to_string
("\u00f4\u008f\u00bf\u00bf"
)
, "\U0010ffff")
+
test_utf8_to_string("\u00ee\u0080\u0080", "\ue000"
, 1
)
+
test_utf8_to_string("\u00f4\u008f\u00bf\u00bf", "\U0010ffff"
, 0
)
test_eval_error(return utf8_to_string ("\u00f4\u0090\u0080\u0080"))
-
test_
eq(
utf8_to_string
("\u00f4\u0090\u0080\u0080",
1),
"\U00110000")
+
test_utf8_to_string("\u00f4\u0090\u0080\u0080", "\U00110000"
, 1
)
test_eval_error(return utf8_to_string ("\u00f8\u0088\u0080\u0080\u0080")) test_eval_error(return utf8_to_string ("\u00fc\u0084\u0080\u0080\u0080\u0080")) test_eval_error(return utf8_to_string ("\u00fe\u0082\u0080\u0080\u0080\u0080\u0080"))
-
test_
eq(
utf8_to_string
("\u00fe\u0083\u00bf\u00bf\u00bf\u00bf\u00bf",
1),
"\Uffffffff")
+
test_utf8_to_string("\u00fe\u0083\u00bf\u00bf\u00bf\u00bf\u00bf", "\Uffffffff"
, 1
)
test_eval_error(return utf8_to_string ("\u00fe\u0084\u0080\u0080\u0080\u0080\u0080", 1)) test_eval_error(return utf8_to_string ("\u00ff")) test_eval_error(return utf8_to_string ("\u00ff", 1)) // Non-shortest forms test_eval_error(return utf8_to_string ("\u00c0\u0080")) test_eval_error(return utf8_to_string ("\u00c1\u00bf"))
-
test_
eq(
utf8_to_string
("\u00c2\u0080"
)
, "\u0080")
+
test_utf8_to_string("\u00c2\u0080", "\u0080"
, 0
)
test_eval_error(return utf8_to_string ("\u00e0\u0080\u0080")) test_eval_error(return utf8_to_string ("\u00e0\u009f\u00bf"))
-
test_
eq(
utf8_to_string
("\u00e0\u00a0\u0080"
)
, "\u0800")
)
+
test_utf8_to_string("\u00e0\u00a0\u0080", "\u0800"
, 0
)
test_eval_error(return utf8_to_string ("\u00f0\u0080\u0080\u0080")) test_eval_error(return utf8_to_string ("\u00f0\u008f\u00bf\u00bf"))
-
test_
eq(
utf8_to_string
("\u00f0\u0090\u0080\u0080"
)
, "\U00010000")
+
test_utf8_to_string("\u00f0\u0090\u0080\u0080", "\U00010000"
, 0
)
test_eval_error(return utf8_to_string ("\u00f8\u0080\u0080\u0080\u0080", 1)) test_eval_error(return utf8_to_string ("\u00f8\u0087\u00bf\u00bf\u00bf", 1))
-
test_
eq(
utf8_to_string
("\u00f8\u0088\u0080\u0080\u0080",
1),
"\U00200000")
+
test_utf8_to_string("\u00f8\u0088\u0080\u0080\u0080", "\U00200000"
, 1
)
test_eval_error(return utf8_to_string ("\u00fc\u0080\u0080\u0080\u0080\u0080", 1)) test_eval_error(return utf8_to_string ("\u00fc\u0083\u00bf\u00bf\u00bf\u00bf", 1))
-
test_
eq(
utf8_to_string
("\u00fc\u0084\u0080\u0080\u0080\u0080",
1),
"\U04000000")
+
test_utf8_to_string("\u00fc\u0084\u0080\u0080\u0080\u0080", "\U04000000"
, 1
)
test_eval_error(return utf8_to_string ("\u00fe\u0080\u0080\u0080\u0080\u0080\u0080", 1)) test_eval_error(return utf8_to_string ("\u00fe\u0081\u00bf\u00bf\u00bf\u00bf\u00bf", 1))
-
test_
eq(
utf8_to_string
("\u00fe\u0082\u0080\u0080\u0080\u0080\u0080",
1),
"\U80000000")
+
test_utf8_to_string("\u00fe\u0082\u0080\u0080\u0080\u0080\u0080", "\U80000000"
, 1
)
// validate_utf8 test_true(validate_utf8("foo")) test_false(validate_utf8("blä")) test_true(validate_utf8("bl\303\244")) test_false(validate_utf8([string(8bit)](mixed)"\77077")) test_true(validate_utf8("\347\270\277")) test_false(validate_utf8([string(8bit)](mixed)"\7077077")) test_false(validate_utf8("\367\207\270\277")) test_true(validate_utf8("\367\207\270\277", 1))