staversion-0.2.1.3: test/Staversion/Internal/TestUtil.hs
module Staversion.Internal.TestUtil
( ver, simpleResultBody,
verPairs,
vor,
vthis,
vors, vors',
vint
) where
import Data.Maybe (fromJust)
import Staversion.Internal.Query ( PackageName
)
import Staversion.Internal.Result (ResultBody, ResultBody'(..))
import Staversion.Internal.Version (Version)
import qualified Staversion.Internal.Version as V
ver :: [Int] -> Version
ver = V.mkVersion
verMaybe :: [Int] -> Maybe Version
verMaybe [] = Nothing
verMaybe vs = Just $ ver vs
verPairs :: [(PackageName, [Int])] -> [(PackageName, Maybe Version)]
verPairs = map f where
f (pname, vs) = (pname, verMaybe vs)
simpleResultBody :: PackageName -> [Int] -> ResultBody
simpleResultBody name vs = SimpleResultBody name $ verMaybe vs
vor :: V.VersionRange -> V.VersionRange -> V.VersionRange
vor = V.unionVersionRanges
vthis :: [Int] -> V.VersionRange
vthis = V.thisVersion . ver
vors :: [[Int]] -> V.VersionRange
vors = vors' . map vthis
vors' :: [V.VersionRange] -> V.VersionRange
vors' [] = error "this should not happen"
vors' [v] = v
vors' (v:rest) = vor v $ vors' rest
-- | Version interval. vint x y = [x, y)
vint :: [Int] -> [Int] ->V.VersionRange
vint vl vu = V.fromVersionIntervals $ V.mkVersionIntervals [interval] where
interval = (V.LowerBound (ver vl) V.InclusiveBound, V.UpperBound (ver vu) V.ExclusiveBound)