packages feed

genvalidity-path-1.0.0.0: src/Data/GenValidity/Path.hs

{-# LANGUAGE FlexibleInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}

module Data.GenValidity.Path where

import Data.GenValidity
import Data.Validity.Path ()
import Path
import Path.Internal
import Test.QuickCheck.Gen

instance GenValid (Path Abs File) where
  genValid = (Path . ('/' :) <$> genValid) `suchThat` isValid
  shrinkValid (Path s) = filter isValid $ Path <$> shrinkValid s

instance GenValid (Path Abs Dir) where
  genValid = (Path . ('/' :) . (++ "/") <$> genValid) `suchThat` isValid
  shrinkValid (Path s) = filter isValid $ Path <$> shrinkValid s

instance GenValid (Path Rel File) where
  genValid = (Path <$> genValid) `suchThat` isValid
  shrinkValid (Path s) = filter isValid $ Path <$> shrinkValid s

instance GenValid (Path Rel Dir) where
  genValid = (Path . (++ "/") <$> genValid) `suchThat` isValid
  shrinkValid (Path s) = filter isValid $ Path <$> shrinkValid s