path-0.5.10: test/Path/Gen.hs
{-# LANGUAGE FlexibleInstances #-}
module Path.Gen where
import Path
import Path.Internal
import qualified System.FilePath as FilePath
import Data.List (isInfixOf)
import Data.Validity
import Data.GenValidity
import Test.QuickCheck
instance Validity (Path Abs File) where
isValid p@(Path fp)
= FilePath.isAbsolute fp
&& not (FilePath.hasTrailingPathSeparator fp)
&& FilePath.isValid fp
&& not (".." `isInfixOf` fp)
&& (parseAbsFile fp == Just p)
instance Validity (Path Rel File) where
isValid p@(Path fp)
= FilePath.isRelative fp
&& not (FilePath.hasTrailingPathSeparator fp)
&& FilePath.isValid fp
&& fp /= "."
&& fp /= ".."
&& not (".." `isInfixOf` fp)
&& (parseRelFile fp == Just p)
instance Validity (Path Abs Dir) where
isValid p@(Path fp)
= FilePath.isAbsolute fp
&& FilePath.hasTrailingPathSeparator fp
&& FilePath.isValid fp
&& not (".." `isInfixOf` fp)
&& (parseAbsDir fp == Just p)
instance Validity (Path Rel Dir) where
isValid p@(Path fp)
= FilePath.isRelative fp
&& FilePath.hasTrailingPathSeparator fp
&& FilePath.isValid fp
&& not (null fp)
&& fp /= "."
&& fp /= ".."
&& not (".." `isInfixOf` fp)
&& (parseRelDir fp == Just p)
instance GenValidity (Path Abs File) where
genUnchecked = Path <$> arbitrary
instance GenValidity (Path Rel File) where
genUnchecked = Path <$> arbitrary
instance GenValidity (Path Abs Dir) where
genUnchecked = Path <$> arbitrary
instance GenValidity (Path Rel Dir) where
genUnchecked = Path <$> arbitrary