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"