From 7490c4ae724eebe4b20c9d4f05a186208230b054 Mon Sep 17 00:00:00 2001 From: Henning Guenther Date: Mon, 31 Dec 2007 03:47:52 -0800 Subject: [PATCH] Added UTF-8 Unit Tests darcs-hash:20071231114752-a4fee-cd9e3941771199ed6e5930ad3bae48c69f064605 --- Test/Tests.hs | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Test/Tests.hs diff --git a/Test/Tests.hs b/Test/Tests.hs new file mode 100644 index 0000000..380c4d3 --- /dev/null +++ b/Test/Tests.hs @@ -0,0 +1,67 @@ +module Test.Tests where + +import Data.Encoding +import Data.Encoding.UTF8 +import Test.Tester +import Test.HUnit + +utf8Tests :: Test +utf8Tests = TestList $ map test $ + -- Simple encoding tests + concat [[EncodingTest enc "\x0041\x2262\x0391\x002E" + [0x41,0xE2,0x89,0xA2,0xCE,0x91,0x2E] + ,EncodingTest enc "\xD55C\xAD6D\xC5B4" + [0xED,0x95,0x9C,0xEA,0xB5,0xAD,0xEC,0x96,0xB4] + ,EncodingTest enc "\x65E5\x672C\x8A9E" + [0xE6,0x97,0xA5,0xE6,0x9C,0xAC,0xE8,0xAA,0x9E] + ,EncodingTest enc "\x233B4" + [0xF0,0xA3,0x8E,0xB4] + -- First possible sequence of a certain length + ,EncodingTest enc "\x0000" + [0x00] + ,EncodingTest enc "\x0080" + [0xC2,0x80] + ,EncodingTest enc "\x0800" + [0xE0,0xA0,0x80] + ,EncodingTest enc "\x10000" + [0xF0,0x90,0x80,0x80] + -- Last possible sequence of a certain length + ,EncodingTest enc "\x007F" + [0x7F] + ,EncodingTest enc "\x07FF" + [0xDF,0xBF] + ,EncodingTest enc "\xFFFF" + [0xEF,0xBF,0xBF] + -- Other boundaries + ,EncodingTest enc "\xD7FF" + [0xED,0x9F,0xBF] + ,EncodingTest enc "\xE000" + [0xEE,0x80,0x80] + ,EncodingTest enc "\xFFFD" + [0xEF,0xBF,0xBD]] + | enc <- [UTF8,UTF8Strict] + ]++ + [DecodingError UTF8 [0xFE] (IllegalCharacter 0xFE) + ,DecodingError UTF8 [0xFF] (IllegalCharacter 0xFF) + -- Overlong representations of '/' + ,DecodingError UTF8Strict [0xC0,0xAF] + (IllegalRepresentation [0xC0,0xAF]) + ,DecodingError UTF8Strict [0xE0,0x80,0xAF] + (IllegalRepresentation [0xE0,0x80,0xAF]) + ,DecodingError UTF8Strict [0xF0,0x80,0x80,0xAF] + (IllegalRepresentation [0xF0,0x80,0x80,0xAF]) + -- Maximum overlong sequences + ,DecodingError UTF8Strict [0xC1,0xBF] + (IllegalRepresentation [0xC1,0xBF]) + ,DecodingError UTF8Strict [0xE0,0x9F,0xBF] + (IllegalRepresentation [0xE0,0x9F,0xBF]) + ,DecodingError UTF8Strict [0xF0,0x8F,0xBF,0xBF] + (IllegalRepresentation [0xF0,0x8F,0xBF,0xBF]) + -- Overlong represenations of '\NUL' + ,DecodingError UTF8Strict [0xC0,0x80] + (IllegalRepresentation [0xC0,0x80]) + ,DecodingError UTF8Strict [0xE0,0x80,0x80] + (IllegalRepresentation [0xE0,0x80,0x80]) + ,DecodingError UTF8Strict [0xF0,0x80,0x80,0x80] + (IllegalRepresentation [0xF0,0x80,0x80,0x80]) + ]