testSequenceDeleteSequenceDelete :: TestTree
testSequenceDeleteSequenceDelete =
  let sd1 = O.SequenceDelete 0
      sd2 = O.SequenceDelete 1 in
  testGroup "SequenceDelete vs SequenceDelete"
  [ testCase "Before other" $ do
      assertEqual "a" (Just sd1) $ T.transform sd1 sd2 T.Left
      assertEqual "b" (Just sd1) $ T.transform sd1 sd2 T.Right
  , testCase "Equal to other" $ do
      assertEqual "a" (Just O.NoOp) $ T.transform sd1 sd1 T.Left
      assertEqual "b" (Just O.NoOp) $ T.transform sd1 sd1 T.Right
  , testCase "After other" $ do
      assertEqual "a" (Just sd1) $ T.transform sd2 sd1 T.Left
      assertEqual "b" (Just sd1) $ T.transform sd2 sd1 T.Right
  ]
testSequenceDeleteSequenceDelete :: TestTree
testSequenceDeleteSequenceDelete =
  let sd1 = O.SequenceDelete 0
      sd2 = O.SequenceDelete 1 in
  testGroup "SequenceDelete vs SequenceDelete"
  [ testCase "Before other" $ do
      assertEqual "a" (Just sd1) $ T.transform sd1 sd2 T.Left
      assertEqual "b" (Just sd1) $ T.transform sd1 sd2 T.Right
  , testCase "Equal to other" $ do
      assertEqual "a" (Just O.NoOp) $ T.transform sd1 sd1 T.Left
      assertEqual "b" (Just O.NoOp) $ T.transform sd1 sd1 T.Right
  , testCase "After other" $ do
      assertEqual "a" (Just sd1) $ T.transform sd2 sd1 T.Left
      assertEqual "b" (Just sd1) $ T.transform sd2 sd1 T.Right
  ]
testSequenceDeleteSequenceDelete =
  let sd1 = O.SequenceDelete 0
      sd2 = O.SequenceDelete 1 in
  testGroup "SequenceDelete vs SequenceDelete"
  [ testCase "Before other" $ do
      assertEqual "a" (Just sd1) $ T.transform sd1 sd2 T.Left
      assertEqual "b" (Just sd1) $ T.transform sd1 sd2 T.Right
  , testCase "Equal to other" $ do
      assertEqual "a" (Just O.NoOp) $ T.transform sd1 sd1 T.Left
      assertEqual "b" (Just O.NoOp) $ T.transform sd1 sd1 T.Right
  , testCase "After other" $ do
      assertEqual "a" (Just sd1) $ T.transform sd2 sd1 T.Left
      assertEqual "b" (Just sd1) $ T.transform sd2 sd1 T.Right
  ]