testSequenceInsertSequenceSet :: TestTree
testSequenceInsertSequenceSet =
  let si1 = O.SequenceInsert 0 c 0
      si2 = O.SequenceInsert 1 c 0
      ss1 = O.SequenceSet 0 c 0
      ss2 = O.SequenceSet 1 c 0 in
  testGroup "SequenceInsert vs SequenceSet"
  [ testCase "Non-affecting" $ do
      assertEqual "a" (Just si1) $ T.transform si1 ss1 T.Left
      assertEqual "b" (Just si1) $ T.transform si1 ss1 T.Right
      assertEqual "c" (Just si1) $ T.transform si1 ss2 T.Left
      assertEqual "d" (Just si1) $ T.transform si1 ss2 T.Right
      assertEqual "e" (Just si2) $ T.transform si2 ss1 T.Left
      assertEqual "f" (Just si2) $ T.transform si2 ss1 T.Right
  ]
testSequenceInsertSequenceSet :: TestTree
testSequenceInsertSequenceSet =
  let si1 = O.SequenceInsert 0 c 0
      si2 = O.SequenceInsert 1 c 0
      ss1 = O.SequenceSet 0 c 0
      ss2 = O.SequenceSet 1 c 0 in
  testGroup "SequenceInsert vs SequenceSet"
  [ testCase "Non-affecting" $ do
      assertEqual "a" (Just si1) $ T.transform si1 ss1 T.Left
      assertEqual "b" (Just si1) $ T.transform si1 ss1 T.Right
      assertEqual "c" (Just si1) $ T.transform si1 ss2 T.Left
      assertEqual "d" (Just si1) $ T.transform si1 ss2 T.Right
      assertEqual "e" (Just si2) $ T.transform si2 ss1 T.Left
      assertEqual "f" (Just si2) $ T.transform si2 ss1 T.Right
  ]
testSequenceInsertSequenceSet =
  let si1 = O.SequenceInsert 0 c 0
      si2 = O.SequenceInsert 1 c 0
      ss1 = O.SequenceSet 0 c 0
      ss2 = O.SequenceSet 1 c 0 in
  testGroup "SequenceInsert vs SequenceSet"
  [ testCase "Non-affecting" $ do
      assertEqual "a" (Just si1) $ T.transform si1 ss1 T.Left
      assertEqual "b" (Just si1) $ T.transform si1 ss1 T.Right
      assertEqual "c" (Just si1) $ T.transform si1 ss2 T.Left
      assertEqual "d" (Just si1) $ T.transform si1 ss2 T.Right
      assertEqual "e" (Just si2) $ T.transform si2 ss1 T.Left
      assertEqual "f" (Just si2) $ T.transform si2 ss1 T.Right
  ]