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

module Data.GenValidity.Path where
#if !MIN_VERSION_base(4,8,0)
import Data.Functor ((<$>))
#endif
import Data.GenValidity
import Data.Validity.Path ()

import Path
import Path.Internal

import Test.QuickCheck.Gen

instance GenUnchecked (Path a f) where
    genUnchecked = Path <$> genUnchecked
    shrinkUnchecked (Path s) = Path <$> shrinkUnchecked s

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

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

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

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

instance GenInvalid (Path Abs File)

instance GenInvalid (Path Abs Dir)

instance GenInvalid (Path Rel File)

instance GenInvalid (Path Rel Dir)