Add tests for UTF-8 ill-formed sequence handling.
authorLudovic Courtès <ludo@gnu.org>
Wed, 27 Apr 2011 19:55:42 +0000 (21:55 +0200)
committerLudovic Courtès <ludo@gnu.org>
Wed, 27 Apr 2011 19:55:42 +0000 (21:55 +0200)
* test-suite/tests/ports.test ("string ports"): Add for
  `test-decoding-error' tests for ill-formed UTF-8 sequences.  Thanks
  to Mark H Weaver <mhw@netris.org> for pointing this out.

test-suite/tests/ports.test

index d4924fe01dc2ad3c6c8f4c9398d6603ba532ba5b..69e028f365c2e2083f17a57242fa5bb4ee60c9bc 100644 (file)
        (read-char -> #\A)
        (read-char -> #\B)
        (read-char -> #\C)
+       (read-char -> eof)))
+
+    ;; Check how ill-formed UTF-8 sequences are handled (see Table 3-7
+    ;; of the "Conformance" chapter of Unicode 6.0.0.)
+
+    (test-decoding-error (#xc0 #x80 #x41) "UTF-8" 'error
+      (tests
+       (read-char -> error) ;; C0: should be in the C2..DF range
+       (read-char -> error) ;; 80: invalid
+       (read-char -> #\A)
+       (read-char -> eof)))
+
+    (test-decoding-error (#xc0 #x80 #x41) "UTF-8" 'error
+      (tests
+       (read-char -> error) ;; C0: should be in the C2..DF range
+       (read-char -> error) ;; 80: invalid
+       (read-char -> #\A)
+       (read-char -> eof)))
+
+    (test-decoding-error (#xe0 #x88 #x88) "UTF-8" 'error
+      (tests
+       (read-char -> error) ;; 2nd byte should be in the A0..BF range
+       (read-char -> eof)))
+
+    (test-decoding-error (#xf0 #x88 #x88 #x88) "UTF-8" 'error
+      (tests
+       (read-char -> error) ;; 2nd byte should be in the 90..BF range
        (read-char -> eof)))))
 
 (with-test-prefix "call-with-output-string"