@@ -42,6 +42,7 @@ scanInnerDyns d = do
4242
4343
4444
45+
4546{-# ANN testCases "HLint: ignore Functor law" #-}
4647testCases :: [(String , TestCase )]
4748testCases =
@@ -282,6 +283,31 @@ testCases =
282283 d' <- pushDyn scanInnerDyns d >>= scanInnerDyns
283284 return $ current d'
284285
286+ , testB " holdIncremental" $ do
287+ inc <- makeIncremental
288+ return (currentIncremental inc)
289+
290+ , testB " unsafeMapIncremental" $ do
291+ inc <- makeIncremental
292+ let f = Map. mapKeys (+ 1 )
293+ g (PatchMap m) = PatchMap (Map. mapKeys (+ 1 ) m)
294+
295+ let inc' = unsafeMapIncremental f g inc
296+ return (currentIncremental inc')
297+
298+ , testB " mapIncremental" $ do
299+
300+ -- Not be safe with 'unsafeBuildIncremental' due to key changes
301+ let f = Map. mapKeys (+ 1 )
302+ g (PatchMap m) = PatchMap (Map. mapKeys (+ 2 ) m)
303+
304+ rec -- Backwards order, test laziness
305+ inc'' <- mapIncremental f g inc'
306+ inc' <- mapIncremental f g inc
307+ inc <- makeIncremental
308+
309+ return $ currentIncremental inc''
310+
285311 , testE " fan-1" $ do
286312 e <- fmap toMap <$> events1
287313 let es = select (fanMap e) . Const2 <$> values
@@ -331,6 +357,7 @@ testCases =
331357 events2 = plan [(1 , " e" ), (3 , " d" ), (4 , " c" ), (6 , " b" ), (7 , " a" )]
332358 events3 = liftA2 mappend events1 events2
333359
360+
334361 eithers :: TestPlan t m => m (Event t (Either String String ))
335362 eithers = plan [(1 , Left " e" ), (3 , Left " d" ), (4 , Right " c" ), (6 , Right " b" ), (7 , Left " a" )]
336363
@@ -344,3 +371,17 @@ testCases =
344371
345372 deep e = leftmost [e, e]
346373 leftmost2 e1 e2 = leftmost [e1, e2]
374+
375+
376+ makeIncremental :: forall t m . TestPlan t m => m (Incremental t (PatchMap Int String ))
377+ makeIncremental = do
378+ e1 <- events1
379+ e2 <- events2
380+
381+ e <- zipListWithEvent (,) [(0 :: Int ).. ] (leftmost [e1, e2])
382+ let f (k, v) = Map. fromList $ if odd k
383+ then [(k, Just v)]
384+ else [(k, Nothing )]
385+
386+ holdIncremental (Map. fromList [((1 :: Int ), " g" ), (2 , " b" ), (5 , " b" )])
387+ (PatchMap . f <$> e)
0 commit comments