on master help sign in
Make the splitTimes/split correspondence property more sophisticated.
0436c84Bryan O'Sullivan
tests/Properties.hs+7−1
@@ -37,6 +37,9 @@ crashy onException p = unsafePerformIO $
37 let types = e :: SomeException
37 let types = e :: SomeException
38 in trace ("*** Exception: " ++ show e) return onException
38 in trace ("*** Exception: " ++ show e) return onException
39
39
40+tracer f a = let r = f a
41+ in trace (show r) r
42+
40prop_T_pack_unpack = (T.unpack . T.pack) `eq` id
43prop_T_pack_unpack = (T.unpack . T.pack) `eq` id
41prop_TL_pack_unpack = (TL.unpack . TL.pack) `eq` id
44prop_TL_pack_unpack = (TL.unpack . TL.pack) `eq` id
42prop_T_stream_unstream = (S.unstream . S.stream) `eq` id
45prop_T_stream_unstream = (S.unstream . S.stream) `eq` id
@@ -300,7 +303,10 @@ prop_TL_tails = L.tails `eqP` (map unpackS . TL.tails)
300
303
301prop_T_split_i t = id `eq` (T.intercalate t . T.split t)
304prop_T_split_i t = id `eq` (T.intercalate t . T.split t)
302prop_T_splitTimes_i k t = id `eq` (T.intercalate t . T.splitTimes k t)
305prop_T_splitTimes_i k t = id `eq` (T.intercalate t . T.splitTimes k t)
303−prop_T_splitTimes_split t = T.splitTimes maxBound t `eq` T.split t
306+prop_T_splitTimes_split k t = T.splitTimes k t `eq` \u ->
307+ case L.splitAt k (T.split t u) of
308+ (a,[]) -> a
309+ (a,b) -> a ++ [T.intercalate t b]
304prop_T_splitTimesEnd_i k t = id `eq` (T.intercalate t . T.splitTimesEnd k t)
310prop_T_splitTimesEnd_i k t = id `eq` (T.intercalate t . T.splitTimesEnd k t)
305prop_T_splitTimesEnd_split t = T.splitTimesEnd maxBound t `eq` T.split t
311prop_T_splitTimesEnd_split t = T.splitTimesEnd maxBound t `eq` T.split t
306prop_TL_split_i c = id `eq` (TL.intercalate (TL.singleton c) . TL.split c)
312prop_TL_split_i c = id `eq` (TL.intercalate (TL.singleton c) . TL.split c)