@@ -78,7 +78,9 @@ t_ascii t = E.decodeASCII (E.encodeUtf8 a) == a
78tl_ascii t = EL.decodeASCII (EL.encodeUtf8 a) == a
78tl_ascii t = EL.decodeASCII (EL.encodeUtf8 a) == a
79 where a = TL.map (\c -> chr (ord c `mod` 128)) t
79 where a = TL.map (\c -> chr (ord c `mod` 128)) t
80t_utf8 = forAll genUnicode $ (E.decodeUtf8 . E.encodeUtf8) `eq` id
80t_utf8 = forAll genUnicode $ (E.decodeUtf8 . E.encodeUtf8) `eq` id
81+t_utf8' = forAll genUnicode $ (E.decodeUtf8' . E.encodeUtf8) `eq` (id . Right)
81tl_utf8 = forAll genUnicode $ (EL.decodeUtf8 . EL.encodeUtf8) `eq` id
82tl_utf8 = forAll genUnicode $ (EL.decodeUtf8 . EL.encodeUtf8) `eq` id
83+tl_utf8' = forAll genUnicode $ (EL.decodeUtf8' . EL.encodeUtf8) `eq` (id . Right)
82t_utf16LE = forAll genUnicode $ (E.decodeUtf16LE . E.encodeUtf16LE) `eq` id
84t_utf16LE = forAll genUnicode $ (E.decodeUtf16LE . E.encodeUtf16LE) `eq` id
83tl_utf16LE = forAll genUnicode $ (EL.decodeUtf16LE . EL.encodeUtf16LE) `eq` id
85tl_utf16LE = forAll genUnicode $ (EL.decodeUtf16LE . EL.encodeUtf16LE) `eq` id
84t_utf16BE = forAll genUnicode $ (E.decodeUtf16BE . E.encodeUtf16BE) `eq` id
86t_utf16BE = forAll genUnicode $ (E.decodeUtf16BE . E.encodeUtf16BE) `eq` id
@@ -110,6 +112,10 @@ t_utf8_err (DE _ de) bs = monadicIO $ do
110 Left err -> assert $ length (show err) >= 0
112 Left err -> assert $ length (show err) >= 0
111 Right n -> assert $ n >= 0
113 Right n -> assert $ n >= 0
115+t_utf8_err' bs = monadicIO . assert $ case E.decodeUtf8' bs of
116+ Left err -> length (show err) >= 0
117+ Right t -> T.length t >= 0
113class Stringy s where
119class Stringy s where
114 packS :: String -> s
120 packS :: String -> s
115 unpackS :: s -> String
121 unpackS :: s -> String
@@ -831,7 +837,9 @@ tests = [
831 testProperty "t_ascii" t_ascii,
837 testProperty "t_ascii" t_ascii,
832 testProperty "tl_ascii" tl_ascii,
838 testProperty "tl_ascii" tl_ascii,
833 testProperty "t_utf8" t_utf8,
839 testProperty "t_utf8" t_utf8,
840+ testProperty "t_utf8'" t_utf8',
834 testProperty "tl_utf8" tl_utf8,
841 testProperty "tl_utf8" tl_utf8,
842+ testProperty "tl_utf8'" tl_utf8',
835 testProperty "t_utf16LE" t_utf16LE,
843 testProperty "t_utf16LE" t_utf16LE,
836 testProperty "tl_utf16LE" tl_utf16LE,
844 testProperty "tl_utf16LE" tl_utf16LE,
837 testProperty "t_utf16BE" t_utf16BE,
845 testProperty "t_utf16BE" t_utf16BE,
@@ -841,7 +849,8 @@ tests = [
841 testProperty "t_utf32BE" t_utf32BE,
849 testProperty "t_utf32BE" t_utf32BE,
842 testProperty "tl_utf32BE" tl_utf32BE,
850 testProperty "tl_utf32BE" tl_utf32BE,
843 testGroup "errors" [
851 testGroup "errors" [
844− testProperty "t_utf8_err" t_utf8_err
852+ testProperty "t_utf8_err" t_utf8_err,
853+ testProperty "t_utf8_err'" t_utf8_err'