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