{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -Wno-orphans #-} module System.Nix.Arbitrary.OutputName where import System.Nix.OutputName (OutputName) import qualified Data.Text import qualified System.Nix.OutputName import Test.QuickCheck (Arbitrary(arbitrary), choose, elements, vectorOf) instance Arbitrary OutputName where arbitrary :: Gen OutputName arbitrary = (InvalidNameError -> OutputName) -> (OutputName -> OutputName) -> Either InvalidNameError OutputName -> OutputName forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either ([Char] -> OutputName forall a. HasCallStack => [Char] -> a error ([Char] -> OutputName) -> (InvalidNameError -> [Char]) -> InvalidNameError -> OutputName forall b c a. (b -> c) -> (a -> b) -> a -> c . InvalidNameError -> [Char] forall a. Show a => a -> [Char] show) OutputName -> OutputName forall a. a -> a id (Either InvalidNameError OutputName -> OutputName) -> ([Char] -> Either InvalidNameError OutputName) -> [Char] -> OutputName forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> Either InvalidNameError OutputName System.Nix.OutputName.mkOutputName (Text -> Either InvalidNameError OutputName) -> ([Char] -> Text) -> [Char] -> Either InvalidNameError OutputName forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> Text Data.Text.pack ([Char] -> OutputName) -> Gen [Char] -> Gen OutputName forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> ((:) (Char -> [Char] -> [Char]) -> Gen Char -> Gen ([Char] -> [Char]) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Char s1 Gen ([Char] -> [Char]) -> Gen [Char] -> Gen [Char] forall a b. Gen (a -> b) -> Gen a -> Gen b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen Char -> Gen [Char] forall {a}. Gen a -> Gen [a] limited Gen Char sn) where alphanum :: [Char] alphanum = [Char 'a' .. Char 'z'] [Char] -> [Char] -> [Char] forall a. Semigroup a => a -> a -> a <> [Char 'A' .. Char 'Z'] [Char] -> [Char] -> [Char] forall a. Semigroup a => a -> a -> a <> [Char '0' .. Char '9'] s1 :: Gen Char s1 = [Char] -> Gen Char forall a. HasCallStack => [a] -> Gen a elements ([Char] -> Gen Char) -> [Char] -> Gen Char forall a b. (a -> b) -> a -> b $ [Char] alphanum [Char] -> [Char] -> [Char] forall a. Semigroup a => a -> a -> a <> [Char] "+-_?=" sn :: Gen Char sn = [Char] -> Gen Char forall a. HasCallStack => [a] -> Gen a elements ([Char] -> Gen Char) -> [Char] -> Gen Char forall a b. (a -> b) -> a -> b $ [Char] alphanum [Char] -> [Char] -> [Char] forall a. Semigroup a => a -> a -> a <> [Char] "+-._?=" limited :: Gen a -> Gen [a] limited Gen a n = do Int k <- (Int, Int) -> Gen Int forall a. Random a => (a, a) -> Gen a choose (Int 0, Int 210) Int -> Gen a -> Gen [a] forall a. Int -> Gen a -> Gen [a] vectorOf Int k Gen a n