testSequenceSetSequenceDelete :: TestTree
testSequenceSetSequenceDelete =
  let ss1 = O.SequenceSet 0 c 0
      ss2 = O.SequenceSet 1 c 0
      sd1 = O.SequenceDelete 0
      sd2 = O.SequenceDelete 1 in
  testGroup "SequenceSet vs SequenceDelete"
  [ testCase "Non-affecting" $ do
      assertEqual "a" (Just ss1) $ T.transform ss1 sd2 T.Left
      assertEqual "b" (Just ss1) $ T.transform ss1 sd2 T.Right
  , testCase "Same index"$ do
      assertEqual "a" (Just O.NoOp) $ T.transform ss1 sd1 T.Left
      assertEqual "b" (Just O.NoOp) $ T.transform ss1 sd1 T.Right
  , testCase "Shifted" $ do
      assertEqual "a" (Just ss1) $ T.transform ss2 sd1 T.Left
      assertEqual "b" (Just ss1) $ T.transform ss2 sd1 T.Right
  ]
testSequenceSetSequenceDelete :: TestTree
testSequenceSetSequenceDelete =
  let ss1 = O.SequenceSet 0 c 0
      ss2 = O.SequenceSet 1 c 0
      sd1 = O.SequenceDelete 0
      sd2 = O.SequenceDelete 1 in
  testGroup "SequenceSet vs SequenceDelete"
  [ testCase "Non-affecting" $ do
      assertEqual "a" (Just ss1) $ T.transform ss1 sd2 T.Left
      assertEqual "b" (Just ss1) $ T.transform ss1 sd2 T.Right
  , testCase "Same index"$ do
      assertEqual "a" (Just O.NoOp) $ T.transform ss1 sd1 T.Left
      assertEqual "b" (Just O.NoOp) $ T.transform ss1 sd1 T.Right
  , testCase "Shifted" $ do
      assertEqual "a" (Just ss1) $ T.transform ss2 sd1 T.Left
      assertEqual "b" (Just ss1) $ T.transform ss2 sd1 T.Right
  ]
testSequenceSetSequenceDelete =
  let ss1 = O.SequenceSet 0 c 0
      ss2 = O.SequenceSet 1 c 0
      sd1 = O.SequenceDelete 0
      sd2 = O.SequenceDelete 1 in
  testGroup "SequenceSet vs SequenceDelete"
  [ testCase "Non-affecting" $ do
      assertEqual "a" (Just ss1) $ T.transform ss1 sd2 T.Left
      assertEqual "b" (Just ss1) $ T.transform ss1 sd2 T.Right
  , testCase "Same index"$ do
      assertEqual "a" (Just O.NoOp) $ T.transform ss1 sd1 T.Left
      assertEqual "b" (Just O.NoOp) $ T.transform ss1 sd1 T.Right
  , testCase "Shifted" $ do
      assertEqual "a" (Just ss1) $ T.transform ss2 sd1 T.Left
      assertEqual "b" (Just ss1) $ T.transform ss2 sd1 T.Right
  ]