{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -fconstraint-solver-iterations=0 #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module System.Nix.Arbitrary.StorePath.Metadata where
import Data.Dependent.Sum (DSum((:=>)))
import Data.HashSet.Arbitrary ()
import System.Nix.Arbitrary.ContentAddress ()
import System.Nix.Arbitrary.Hash ()
import System.Nix.Arbitrary.Signature ()
import System.Nix.Arbitrary.StorePath ()
import System.Nix.Arbitrary.UTCTime ()
import System.Nix.StorePath (StorePath)
import System.Nix.StorePath.Metadata (Metadata(..), StorePathTrust)
import qualified System.Nix.Hash
import Test.QuickCheck (Arbitrary(..), suchThat)
import Test.QuickCheck.Arbitrary.Generic (GenericArbitrary(..))
deriving via GenericArbitrary StorePathTrust
instance Arbitrary StorePathTrust
instance Arbitrary (Metadata StorePath) where
arbitrary :: Gen (Metadata StorePath)
arbitrary = do
Maybe StorePath
metadataDeriverPath <- Gen (Maybe StorePath)
forall a. Arbitrary a => Gen a
arbitrary
DSum HashAlgo Digest
metadataNarHash <- (HashAlgo SHA256
System.Nix.Hash.HashAlgo_SHA256 HashAlgo SHA256 -> Digest SHA256 -> DSum HashAlgo Digest
forall {k} (tag :: k -> *) (f :: k -> *) (a :: k).
tag a -> f a -> DSum tag f
:=>) (Digest SHA256 -> DSum HashAlgo Digest)
-> Gen (Digest SHA256) -> Gen (DSum HashAlgo Digest)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Digest SHA256)
forall a. Arbitrary a => Gen a
arbitrary
HashSet StorePath
metadataReferences <- Gen (HashSet StorePath)
forall a. Arbitrary a => Gen a
arbitrary
UTCTime
metadataRegistrationTime <- Gen UTCTime
forall a. Arbitrary a => Gen a
arbitrary
Maybe Word64
metadataNarBytes <- Gen (Maybe Word64)
forall a. Arbitrary a => Gen a
arbitrary Gen (Maybe Word64) -> (Maybe Word64 -> Bool) -> Gen (Maybe Word64)
forall a. Gen a -> (a -> Bool) -> Gen a
`suchThat` (Maybe Word64 -> Maybe Word64 -> Bool
forall a. Eq a => a -> a -> Bool
/= Word64 -> Maybe Word64
forall a. a -> Maybe a
Just Word64
0)
StorePathTrust
metadataTrust <- Gen StorePathTrust
forall a. Arbitrary a => Gen a
arbitrary
Set NarSignature
metadataSigs <- Gen (Set NarSignature)
forall a. Arbitrary a => Gen a
arbitrary
Maybe ContentAddress
metadataContentAddress <- Gen (Maybe ContentAddress)
forall a. Arbitrary a => Gen a
arbitrary
Metadata StorePath -> Gen (Metadata StorePath)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Metadata{Maybe Word64
Maybe ContentAddress
Maybe StorePath
Set NarSignature
DSum HashAlgo Digest
StorePathTrust
UTCTime
HashSet StorePath
metadataDeriverPath :: Maybe StorePath
metadataNarHash :: DSum HashAlgo Digest
metadataReferences :: HashSet StorePath
metadataRegistrationTime :: UTCTime
metadataNarBytes :: Maybe Word64
metadataTrust :: StorePathTrust
metadataSigs :: Set NarSignature
metadataContentAddress :: Maybe ContentAddress
metadataDeriverPath :: Maybe StorePath
metadataNarHash :: DSum HashAlgo Digest
metadataReferences :: HashSet StorePath
metadataRegistrationTime :: UTCTime
metadataNarBytes :: Maybe Word64
metadataTrust :: StorePathTrust
metadataSigs :: Set NarSignature
metadataContentAddress :: Maybe ContentAddress
..}