summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2020-11-16 12:48:00 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2020-11-16 12:48:00 (GMT)
commit0943b7181074269ccea4e40288d91575ae211a0a (patch)
tree5ebeaa57f5013633614a356c8a1ce2f732678eed
parent106838de02ee97e81b6a945add9138eacbe2c7ba (diff)
downloadtcl-0943b7181074269ccea4e40288d91575ae211a0a.zip
tcl-0943b7181074269ccea4e40288d91575ae211a0a.tar.gz
tcl-0943b7181074269ccea4e40288d91575ae211a0a.tar.bz2
Enhance misleading test-case utf-6.23 with better diagnostics: Byte 0xE8 is the start of a 3-byte UTF-8 sequence, so Tcl_UtfNext is expected to read next byte and see if it is a continuation byte.
Comment 4 testcases (utf-6.110/111/114/115) for being misleading too, because they don't even call Tcl_UtfNext(). No change to code, only testcases
-rw-r--r--generic/tclTest.c6
-rw-r--r--tests/utf.test8
2 files changed, 10 insertions, 4 deletions
diff --git a/generic/tclTest.c b/generic/tclTest.c
index f1e3fac..2c29cda 100644
--- a/generic/tclTest.c
+++ b/generic/tclTest.c
@@ -6825,8 +6825,10 @@ TestUtfNextCmd(
/* Run Tcl_UtfNext with many more possible bytes at src[end], all should give the same result */
result = Tcl_UtfNext(buffer + 1);
if (first != result) {
- first = buffer;
- break;
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
+ "Tcl_UtfNext is not supposed to read src[end]\n"
+ "Different result when src[end] is %#x", UCHAR(p[-1])));
+ return TCL_ERROR;
}
}
diff --git a/tests/utf.test b/tests/utf.test
index 6839860..f5b4da8 100644
--- a/tests/utf.test
+++ b/tests/utf.test
@@ -252,8 +252,8 @@ test utf-6.22 {Tcl_UtfNext} {testutfnext testbytestring} {
testutfnext [testbytestring \xD0\xF8]
} 1
test utf-6.23 {Tcl_UtfNext} {testutfnext testbytestring} {
- testutfnext [testbytestring \xE8]
-} -1
+ testutfnext [testbytestring \xE8\x00]
+} 1
test utf-6.24 {Tcl_UtfNext} {testutfnext testbytestring} {
testutfnext [testbytestring \xE8]G
} 1
@@ -545,9 +545,11 @@ test utf-6.108 {Tcl_UtfNext, read limits} {testutfnext testbytestring} {
test utf-6.109 {Tcl_UtfNext, read limits} {testutfnext testbytestring} {
testutfnext \u8820[testbytestring \xA0] 3
} 3
+# This testcase actually tests Tcl_UtfCharComplete, not Tcl_UtfNext
test utf-6.110 {Tcl_UtfNext, read limits} {testutfnext testbytestring} {
testutfnext [testbytestring \xF2\xA0\xA0\xA0]G 1
} 0
+# This testcase actually tests Tcl_UtfCharComplete, not Tcl_UtfNext
test utf-6.111 {Tcl_UtfNext, read limits} {testutfnext testbytestring} {
testutfnext [testbytestring \xF2\xA0\xA0\xA0]G 2
} 0
@@ -563,9 +565,11 @@ test utf-6.113.0 {Tcl_UtfNext, read limits} {testutfnext testbytestring ucs2} {
test utf-6.113.1 {Tcl_UtfNext, read limits} {testutfnext testbytestring fullutf} {
testutfnext [testbytestring \xF2\xA0\xA0\xA0]G 4
} 4
+# This testcase actually tests Tcl_UtfCharComplete, not Tcl_UtfNext
test utf-6.114 {Tcl_UtfNext, read limits} {testutfnext testbytestring} {
testutfnext [testbytestring \xF2\xA0\xA0\xA0\xA0] 1
} 0
+# This testcase actually tests Tcl_UtfCharComplete, not Tcl_UtfNext
test utf-6.115 {Tcl_UtfNext, read limits} {testutfnext testbytestring} {
testutfnext [testbytestring \xF2\xA0\xA0\xA0\xA0] 2
} 0