diff --git a/tests/MA/Algorithm/SplitSpec.hs b/tests/MA/Algorithm/SplitSpec.hs index aeacee8deafee1c10977da19e34796c9787db502..388d4bf6cbf6fc185ad533974addaa4cfb3790d6 100644 --- a/tests/MA/Algorithm/SplitSpec.hs +++ b/tests/MA/Algorithm/SplitSpec.hs @@ -157,17 +157,44 @@ splitBlockSpec = describe "splitBlock" $ do $ let res = withState @Powerset (enc [True, False] [(0, (), 1)]) $ do [(b, v0)] <- collectTouchedBlocks (Block 1) updateBlock b v0 - lift . Queue.clear =<< view _2 splitBlock b - in res `shouldBe` [0] + in res `shouldBe` [0] - it "splits blocks into marked and unmaked" $ - let res = withState @Powerset (enc [True, True, False] [(0, (), 2), (1, (), 0)]) $ do - [(b, v0)] <- collectTouchedBlocks (Block 1) - updateBlock b v0 - lift . Queue.clear =<< view _2 - splitBlock b - in res `shouldMatchList` [Block 0, Block 2] + it "splits blocks into marked and unmaked" + $ let + res = + withState @Powerset (enc [True, True, False] [(0, (), 2), (1, (), 0)]) + $ do + [(b, v0)] <- collectTouchedBlocks (Block 1) + updateBlock b v0 + splitBlock b + in res `shouldMatchList` [Block 0, Block 2] + + it "splits different H3s into different blocks" + $ let + res = + withState @(MonoidValued Int) + (enc [3, 3, 3, 0] + [(0, 1, 3), (1, 2, 3), (2, 3, 3), (0, 2, 0), (1, 1, 1)] + ) + $ do + [(b, v0)] <- collectTouchedBlocks (Block 1) + updateBlock b v0 + splitBlock b + in res `shouldMatchList` [Block 0, Block 2, Block 3] + + it "combines equal H3s into the same block" + $ let + res = + withState @(MonoidValued Int) + (enc [3, 3, 3, 0] + [(0, 1, 3), (1, 1, 3), (2, 3, 3), (0, 2, 0), (1, 2, 1)] + ) + $ do + [(b, v0)] <- collectTouchedBlocks (Block 1) + updateBlock b v0 + splitBlock b + in res `shouldMatchList` [Block 0, Block 2]