propertyTests :: TestTree
propertyTests = testGroup "Property tests"
  [ testProperty "NoOps do not transform anything" $
     \op -> T.transform op O.NoOp T.Left == Just op &&
             T.transform op O.NoOp T.Right == Just op
  , testProperty "IntIncs do not interfere" $
      \(x,y) -> let o1 = O.IntInc $ fromInteger x
                    o2 = O.IntInc $ fromInteger y in
                  T.transform o1 o2 T.Left == Just o1 &&
                  T.transform o1 o2 T.Right == Just o1
  ]
propertyTests :: TestTree
propertyTests = testGroup "Property tests"
  [ testProperty "NoOps do not transform anything" $
     \op -> T.transform op O.NoOp T.Left == Just op &&
             T.transform op O.NoOp T.Right == Just op
  , testProperty "IntIncs do not interfere" $
      \(x,y) -> let o1 = O.IntInc $ fromInteger x
                    o2 = O.IntInc $ fromInteger y in
                  T.transform o1 o2 T.Left == Just o1 &&
                  T.transform o1 o2 T.Right == Just o1
  ]
propertyTests = testGroup "Property tests"
  [ testProperty "NoOps do not transform anything" $
     \op -> T.transform op O.NoOp T.Left == Just op &&
             T.transform op O.NoOp T.Right == Just op
  , testProperty "IntIncs do not interfere" $
      \(x,y) -> let o1 = O.IntInc $ fromInteger x
                    o2 = O.IntInc $ fromInteger y in
                  T.transform o1 o2 T.Left == Just o1 &&
                  T.transform o1 o2 T.Right == Just o1
  ]