more structured testing

diff --git a/skeletons/tests/check-UTF8String.c b/skeletons/tests/check-UTF8String.c
index 78415ab..1497921 100644
--- a/skeletons/tests/check-UTF8String.c
+++ b/skeletons/tests/check-UTF8String.c
@@ -7,11 +7,6 @@
 #include <constraints.c>
 #include <sys/time.h>
 
-static int errlog(const void *buf, size_t size, void *key) {
-	fwrite(buf, 1, size, stdout);
-	return 0;
-}
-
 static void
 check(int expect_length, char *buf, int buflen) {
 	UTF8String_t st;
@@ -25,7 +20,7 @@
 
 	for(ret = 0; ret < buflen; ret++)
 		printf("%c", buf[ret]);
-	ret = UTF8String_length(&st, 0, errlog, 0);
+	ret = UTF8String_length(&st);
 	printf("]: size=%d, expect=%d, got=%d\n",
 		buflen, expect_length, ret);
 	assert(ret == expect_length);
@@ -49,14 +44,14 @@
 	st.buf = long_test;
 	st.size = sizeof(long_test) - 1;
 
-	ret = UTF8String_length(&st, 0, errlog, 0);
+	ret = UTF8String_length(&st);
 	assert(ret == 40);
 	printf("Now wait a bit...\n");
 
 	gettimeofday(&tv, 0);
 	start = tv.tv_sec + tv.tv_usec / 1000000.0;
 	for(i = 0; i < cycles; i++) {
-		ret += UTF8String_length(&st, 0, errlog, 0);
+		ret += UTF8String_length(&st);
 	}
 	gettimeofday(&tv, 0);
 	stop = tv.tv_sec + tv.tv_usec / 1000000.0;
@@ -71,16 +66,23 @@
 
 	check(0, "", 0);
 	check(1, "\0", 1);
-	check(-1, "\377", 1);
 	check(1, "a", 1);
 	check(2, "ab", 2);
 	check(3, "abc", 3);
 	assert(sizeof("a\303\237cd") == 6);
 	check(4, "a\303\237cd", 5);
-	check(-1, "a\303", 2);
-	check(-1, "a\370\200\200\200c", 5);
-	check(3, "a\370\201\200\201\257c", 7);
-	/* not yet check(-1, "a\370\200\200\200\257c", 7); */
+	check(3, "a\370\211\200\201\257c", 7);
+	check(3, "\320\273\320\265\320\262", 6);
+
+	check(-1, "a\303", 2);	/* Truncated */
+	check(-2, "\377", 1);	/* Invalid UTF-8 sequence start */
+	check(-2, "\200", 1);
+	check(-2, "\320\273\265\320\262", 5);
+	check(-3, "\320c", 2);	/* Not continuation */
+	check(-3, "a\370\200\200\200c", 6);
+	check(-4, "a\370\200\200\200\257c", 7);
+	check(-4, "\320\273\320\265\340\200\262", 7);
+	check(-5, 0, 0);
 
 	check_speed();