darcs-2.18.5: harness/Darcs/Test/Patch/Depends.hs
module Darcs.Test.Patch.Depends ( testSuite ) where
import Darcs.Prelude
import Darcs.Patch.Depends
import Darcs.Patch.Set
import Darcs.Patch.Witnesses.Ordered ( FL(..), (:>)(..), RL(..) )
import Darcs.Patch.V2 ( RepoPatchV2 )
import qualified Darcs.Patch.V2.Prim as V2
import Darcs.Patch.Named ( infopatch )
import Darcs.Patch.PatchInfoAnd ( PatchInfoAnd, piap, info )
import Darcs.Patch.Info ( PatchInfo, rawPatchInfo )
import Darcs.Patch.Prim.V1.Core ( Prim(..), FilePatchType(..) )
import Darcs.Util.Path ( unsafeFloatPath )
import Darcs.Test.TestOnly.Instance ()
import Test.Framework (Test, testGroup)
import Test.Framework.Providers.HUnit (testCase)
import Test.HUnit (assertFailure)
type Patch = RepoPatchV2 V2.Prim
testSuite :: Test
testSuite = testGroup "Darcs.Patch.Depends" $
[ test1
]
data WA
data WB
test1 :: Test
test1 = testCase "findCommonWithThem: \"them\" patch contents should not be inspected" $ do
let
mkPatch :: PatchInfo -> FL V2.Prim wA wB -> PatchInfoAnd Patch wA wB
mkPatch pi ps = piap pi (infopatch pi ps)
p1info = rawPatchInfo "1999" "p1" "harness" [] False
p1 = mkPatch p1info (V2.Prim (FP (unsafeFloatPath "foo") AddFile) :>: NilFL)
set1 :: PatchSet Patch Origin WA
set1 = PatchSet NilRL (NilRL :<: p1)
p2info = rawPatchInfo "1999" "p2" "harness" [] False
p2 = piap p2info (error "patch p2 content should not be read")
p1' = piap p1info (error "patch p1' content should not be read")
set2 :: PatchSet Patch Origin WB
set2 = PatchSet NilRL (NilRL :<: p2 :<: p1')
case findCommonWithThem set1 set2 of
PatchSet NilRL (NilRL :<: p1res) :> NilFL
| info p1res == p1info -> return ()
| otherwise -> assertFailure $ "findCommonWithThem failed: got info " ++ show (info p1res)
_ -> assertFailure $ "findCommonWithThem failed: unexpected structure"