@@ -57,6 +57,8 @@ class Target t where
57 packT :: String -> t
57 packT :: String -> t
58 unpackT :: t -> String
58 unpackT :: t -> String
59 splitAtT :: Int -> t -> (t,t)
59 splitAtT :: Int -> t -> (t,t)
60+ packTChunkSize :: Int -> String -> t
61+ packTChunkSize _ = packT
61instance Target (S.Stream Char) where
63instance Target (S.Stream Char) where
62 packT = S.streamList
64 packT = S.streamList
@@ -69,6 +71,7 @@ instance Target T.Text where
69 splitAtT = T.splitAt
71 splitAtT = T.splitAt
71instance Target TL.Text where
73instance Target TL.Text where
74+ packTChunkSize k = SL.unstreamChunks k . S.streamList
72 packT = TL.pack
75 packT = TL.pack
73 unpackT = TL.unpack
76 unpackT = TL.unpack
74 splitAtT = TL.splitAt . fromIntegral
77 splitAtT = TL.splitAt . fromIntegral
@@ -81,9 +84,11 @@ eq a b s = crashy False $ a s == b s
81eqP :: (Eq a, Show a, Target t) =>
84eqP :: (Eq a, Show a, Target t) =>
82 (String -> a) -> (t -> a) -> String -> Word8 -> Bool
85 (String -> a) -> (t -> a) -> String -> Word8 -> Bool
83eqP a b s w = eq "orig" (a s) (b t) &&
86eqP a b s w = eq "orig" (a s) (b t) &&
87+ eq "mini" (a s) (b mini) &&
84 eq "head" (a sa) (b ta) &&
88 eq "head" (a sa) (b ta) &&
85 eq "tail" (a sb) (b tb)
89 eq "tail" (a sb) (b tb)
86 where t = packT s
90 where t = packT s
91+ mini = packTChunkSize 10 s
87 (sa,sb) = splitAt m s
92 (sa,sb) = splitAt m s
88 (ta,tb) = splitAtT m t
93 (ta,tb) = splitAtT m t
89 l = length s
94 l = length s
@@ -97,11 +102,13 @@ eqP a b s w = eq "orig" (a s) (b t) &&
97eqEP :: (Eq a, Target t) =>
102eqEP :: (Eq a, Target t) =>
98 (String -> a) -> (t -> a) -> NotEmpty String -> Word8 -> Bool
103 (String -> a) -> (t -> a) -> NotEmpty String -> Word8 -> Bool
99eqEP a b e w = a s == b t &&
104eqEP a b e w = a s == b t &&
100 (null sa || a sa == b ta) &&
106 (null sa || a sa == b ta) &&
101 (null sb || a sb == b tb)
107 (null sb || a sb == b tb)
102 where (sa,sb) = splitAt m s
108 where (sa,sb) = splitAt m s
103 (ta,tb) = splitAtT m t
109 (ta,tb) = splitAtT m t
104 t = packT s
110 t = packT s
111+ mini = packTChunkSize 10 s
105 l = length s
112 l = length s
106 m | l == 0 = n
113 m | l == 0 = n
107 | otherwise = n `mod` l
114 | otherwise = n `mod` l