hnix-store-tests-0.1.0.0: src/System/Nix/Arbitrary/OutputName.hs
{-# 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 =
either (error . show) id
. System.Nix.OutputName.mkOutputName
. Data.Text.pack <$> ((:) <$> s1 <*> limited sn)
where
alphanum = ['a' .. 'z'] <> ['A' .. 'Z'] <> ['0' .. '9']
s1 = elements $ alphanum <> "+-_?="
sn = elements $ alphanum <> "+-._?="
limited n = do
k <- choose (0, 210)
vectorOf k n