This repository was archived by the owner on Oct 4, 2020. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +17
-0
lines changed Expand file tree Collapse file tree 1 file changed +17
-0
lines changed Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ module Tests.Data.Map where
22
33import Debug.Trace
44
5+ import Control.Alt ((<|>))
56import Data.Maybe
67import Data.Tuple
78import Data.Array (map , length , nubBy )
@@ -166,6 +167,9 @@ mapTests = do
166167 trace " Union is idempotent"
167168 quickCheck $ \m1 m2 -> (m1 `M.union` m2) == ((m1 `M.union` m2) `M.union` (m2 :: M.Map SmallKey Number ))
168169
170+ trace " Union prefers left"
171+ quickCheck $ \m1 m2 k -> M .lookup k (M .union m1 (m2 :: M.Map SmallKey Number )) == (M .lookup k m1 <|> M .lookup k m2)
172+
169173 trace " unionWith"
170174 for_ [Tuple (+) 0 , Tuple (*) 1 ] $ \(Tuple op ident) ->
171175 quickCheck $ \m1 m2 k ->
@@ -174,6 +178,19 @@ mapTests = do
174178 Nothing -> not (M .member k m1 || M .member k m2)
175179 Just v -> v == op (fromMaybe ident (M .lookup k m1)) (fromMaybe ident (M .lookup k m2))
176180
181+ trace " unionWith argument order"
182+ quickCheck $ \m1 m2 k ->
183+ let u = M .unionWith (-) m1 m2 :: M.Map SmallKey Number
184+ in1 = M .member k m1
185+ v1 = M .lookup k m1
186+ in2 = M .member k m2
187+ v2 = M .lookup k m2
188+ in case M .lookup k u of
189+ Just v | in1 && in2 -> Just v == ((-) <$> v1 <*> v2)
190+ Just v | in1 -> Just v == v1
191+ Just v -> Just v == v2
192+ Nothing -> not (in1 || in2)
193+
177194 trace " size"
178195 quickCheck $ \xs ->
179196 let xs' = nubBy ((==) `on` fst) xs
You can’t perform that action at this time.
0 commit comments