patches-vector-0.1.5.1: test/Test/UtilSpec.hs
module Test.UtilSpec where
import Data.Monoid
import Test.Hspec
import Test.QuickCheck
import Data.Patch.Internal
import Test.Util
spec :: Spec
spec = do
describe "patchesFrom" $ do
it "creates applicable patches" $ do
property $ \d ->
forAll (patchesFrom d) $ \p -> applicable p d
it "creates patches that are right-composable with mempty" $ do
property $ \d ->
forAll (patchesFrom d) $ \p -> composable mempty p
it "creates patches that are left-composable with mempty" $ do
property $ \d ->
forAll (patchesFrom d) $ \p -> composable p mempty
describe "historyFrom" $ do
it "creates patches that are applicable in sequence" $ do
property $ \d ->
forAll (historyFrom d 2) $ \[p, q] ->
applicable p d && applicable q (apply p d)
it "creates patches that are applicable in merged form" $ do
property $ \d ->
forAll (historyFrom d 2) $ \[p, q] ->
applicable (p <> q) d
it "creates patches that are composable" $ do
property $ \d ->
forAll (historyFrom d 2) $ \[p, q] -> composable p q