diff --git a/tests/MA/Algorithm/SplitSpec.hs b/tests/MA/Algorithm/SplitSpec.hs
index 388d4bf6cbf6fc185ad533974addaa4cfb3790d6..59799ef74208c797879c2b29b3f089f593c8c733 100644
--- a/tests/MA/Algorithm/SplitSpec.hs
+++ b/tests/MA/Algorithm/SplitSpec.hs
@@ -31,6 +31,8 @@ spec = do
   collectTouchedBlocksSpec
   updateBlockSpec
   splitBlockSpec
+  addBlocksToQueueSpec
+
 
 collectTouchedBlocksSpec :: Spec
 collectTouchedBlocksSpec = describe "collectTouchedBlocks" $ do
@@ -197,6 +199,32 @@ splitBlockSpec = describe "splitBlock" $ do
       in  res `shouldMatchList` [Block 0, Block 2]
 
 
+addBlocksToQueueSpec :: Spec
+addBlocksToQueueSpec = describe "addBlocksToQueue" $ do
+  it "doesn't add the largest block to the queue"
+    $ let res =
+            withState @(MonoidValued Int)
+                (enc [1, 1, 2, 3] [(0, 1, 0), (1, 1, 1), (2, 2, 2), (3, 3, 3)])
+              $ do
+                  lift . Queue.clear =<< view _2
+                  addBlocksToQueue (Block 0) (map Block [0, 1, 2])
+                  q <- lift . Queue.toList =<< view _2
+                  p <- view (_1 . partitionL)
+                  lift $ forM q $ \b -> Partition.blockSize p b
+      in  res `shouldMatchList` ([1, 1])
+
+  it "does add all new blocks, if the original was already queued"
+    $ let res =
+            withState @(MonoidValued Int)
+                (enc [1, 1, 2, 3] [(0, 1, 0), (1, 1, 1), (2, 2, 2), (3, 3, 3)])
+              $ do
+                  queue <- view _2
+                  lift (Queue.clear queue)
+                  lift (Queue.enqueue queue (Block 0))
+                  addBlocksToQueue (Block 0) (map Block [0, 1, 2])
+                  lift (Queue.toList queue)
+      in  res `shouldMatchList` (map Block [0, 1, 2])
+
 
 withState
   :: RefinementInterface h