Added UTF-8 Unit Tests
darcs-hash:20071231114752-a4fee-cd9e3941771199ed6e5930ad3bae48c69f064605
This commit is contained in:
parent
82b0a26ec9
commit
7490c4ae72
67
Test/Tests.hs
Normal file
67
Test/Tests.hs
Normal file
@ -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])
|
||||
]
|
||||
Loading…
Reference in New Issue
Block a user