hackport-0.3.3: tests/MergeDeps.hs
{-# LANGUAGE OverloadedStrings #-}
import Control.Monad (when)
import qualified Distribution.Package as Cabal
import qualified Portage.Dependency as Portage
import System.Exit (exitFailure)
import Test.HUnit
tests = TestList [ TestLabel "simple merge" test_merge1
]
test_merge1 = map (\(a,b,c) -> assertEqual "excepting merge" c (a `Portage.mergeDeps` b)) cases
where
cases =
[ (["foo/bar"],["foo/baz"],["foo/bar", "foo/baz"]) -- a /= b => a+b
--, (["foo/bar","foo/baz"],["foo/baz"],["foo/bar","foo/baz"]) -- a == b => a
--, (["foo/bar"],["use? (foo/baz)"],["foo/bar", "use? (foo/baz)"]) -- covered by 1st
--, (["foo/bar"],["use? (foo/bar)"],["foo/bar"]) -- a <> (use? a) => a
--, (["foo/bar"],["use? ( use2? (foo/bar))"],["foo/bar"])
-- , ([!use? ("foo/bar")],["use? (foo/baz)"],["!use? (foo/bar)","use? (foo/baz)"]) -- extract dep
]
-- A <> B
-- rules:
-- 1). \forall b \in B: \exists a \in A a ~= b -> {A <> B \ b}
-- 2). \forall b \in B: \not \exists a \in A ~=b
something_broke :: Counts -> Bool
something_broke stats = errors stats + failures stats > 0
main =
do stats <- runTestTT tests
when (something_broke stats) exitFailure