@@ -8,6 +8,7 @@ import Debug.Trace
8import Text.Printf
8import Text.Printf
9import System.Environment
9import System.Environment
10import Control.Applicative
10import Control.Applicative
11import Control.Monad
12import Control.Monad
12import qualified Data.Text as T
13import qualified Data.Text as T
13import Data.Text (pack,unpack)
14import Data.Text (pack,unpack)
@@ -34,9 +35,10 @@ prop_cons x = (x:) `eqP` (unpack . T.cons x)
34prop_snoc x = (++ [x]) `eqP` (unpack . (flip T.snoc) x)
35prop_snoc x = (++ [x]) `eqP` (unpack . (flip T.snoc) x)
35prop_append s = (s++) `eqP` (unpack . T.append (pack s))
36prop_append s = (s++) `eqP` (unpack . T.append (pack s))
36prop_appendS s = (s++) `eqP` (unpack . unstream . S.append (stream (pack s)) . stream)
37prop_appendS s = (s++) `eqP` (unpack . unstream . S.append (stream (pack s)) . stream)
37−prop_uncons s = case T.uncons (pack s) of
38+prop_uncons s = uncons `eqP` (fmap (second unpack) . T.uncons)
38− Nothing -> null s
39+ where uncons (x:xs) = Just (x,xs)
39− Just (x,xs) -> x == head s && unpack xs == tail s
40+ uncons _ = Nothing
40prop_head = head `eqEP` T.head
42prop_head = head `eqEP` T.head
41prop_last = last `eqEP` T.last
43prop_last = last `eqEP` T.last
42prop_lastS = last `eqEP` (S.last . stream)
44prop_lastS = last `eqEP` (S.last . stream)