packages feed

hs-bindgen-runtime-1.0.0.0: test/Test/HsBindgen/Runtime/CEnumArbitrary.hs

{-# OPTIONS_GHC -Wno-orphans #-}

module Test.HsBindgen.Runtime.CEnumArbitrary () where

import Test.QuickCheck (Arbitrary (arbitrary), Gen, Small (Small))

import HsBindgen.Runtime.CEnum (AsCEnum (WrapCEnum),
                                AsSequentialCEnum (WrapSequentialCEnum),
                                CEnum (CEnumZ, toCEnum))

instance CEnum a => Arbitrary (AsCEnum a) where
  arbitrary = do
    (Small n) <- arbitrary :: Gen (Small (CEnumZ a))
    pure $ WrapCEnum $ toCEnum n

instance CEnum a => Arbitrary (AsSequentialCEnum a) where
  arbitrary = do
    (Small n) <- arbitrary :: Gen (Small (CEnumZ a))
    pure $ WrapSequentialCEnum $ toCEnum n