testTransformChildRootSet :: TestTree
testTransformChildRootSet =
  let dop1 = O.DirectedOperation "/" $ O.IntInc 1
      dop2 = O.DirectedOperation "/foo" $ O.IntInc 1
      dop3 = O.DirectedOperation "" $ O.IntInc 1
      rs = O.DirectedOperation "" $ O.RootSet c 0 in
  testCase "Transform Child against RootSet" $ do
    assertEqual "a" (Just O.directedNoOp) $ T.transformDirected dop1 rs T.Left
    assertEqual "b" (Just O.directedNoOp) $ T.transformDirected dop1 rs T.Right
    assertEqual "c" (Just O.directedNoOp) $ T.transformDirected dop2 rs T.Left
    assertEqual "d" (Just O.directedNoOp) $ T.transformDirected dop2 rs T.Right
    assertEqual "e" Nothing $ T.transformDirected dop3 rs T.Left
    assertEqual "f" Nothing $ T.transformDirected dop3 rs T.Right
testTransformChildRootSet :: TestTree
testTransformChildRootSet =
  let dop1 = O.DirectedOperation "/" $ O.IntInc 1
      dop2 = O.DirectedOperation "/foo" $ O.IntInc 1
      dop3 = O.DirectedOperation "" $ O.IntInc 1
      rs = O.DirectedOperation "" $ O.RootSet c 0 in
  testCase "Transform Child against RootSet" $ do
    assertEqual "a" (Just O.directedNoOp) $ T.transformDirected dop1 rs T.Left
    assertEqual "b" (Just O.directedNoOp) $ T.transformDirected dop1 rs T.Right
    assertEqual "c" (Just O.directedNoOp) $ T.transformDirected dop2 rs T.Left
    assertEqual "d" (Just O.directedNoOp) $ T.transformDirected dop2 rs T.Right
    assertEqual "e" Nothing $ T.transformDirected dop3 rs T.Left
    assertEqual "f" Nothing $ T.transformDirected dop3 rs T.Right
testTransformChildRootSet =
  let dop1 = O.DirectedOperation "/" $ O.IntInc 1
      dop2 = O.DirectedOperation "/foo" $ O.IntInc 1
      dop3 = O.DirectedOperation "" $ O.IntInc 1
      rs = O.DirectedOperation "" $ O.RootSet c 0 in
  testCase "Transform Child against RootSet" $ do
    assertEqual "a" (Just O.directedNoOp) $ T.transformDirected dop1 rs T.Left
    assertEqual "b" (Just O.directedNoOp) $ T.transformDirected dop1 rs T.Right
    assertEqual "c" (Just O.directedNoOp) $ T.transformDirected dop2 rs T.Left
    assertEqual "d" (Just O.directedNoOp) $ T.transformDirected dop2 rs T.Right
    assertEqual "e" Nothing $ T.transformDirected dop3 rs T.Left
    assertEqual "f" Nothing $ T.transformDirected dop3 rs T.Right