{-# OPTIONS_GHC -fno-warn-orphans #-}
{-| Instances for QuickCheck's Arbitrary. -}
module Lua.Arbitrary () where

import Lua
import Test.QuickCheck

instance Arbitrary Lua.Integer where
  arbitrary :: Gen Integer
arbitrary = Gen Integer
forall a. Integral a => Gen a
arbitrarySizedIntegral

instance Arbitrary Lua.Number where
  arbitrary :: Gen Number
arbitrary = Double -> Number
Lua.Number (Double -> Number) -> Gen Double -> Gen Number
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Double
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary Lua.TypeCode where
  arbitrary :: Gen TypeCode
arbitrary = [TypeCode] -> Gen TypeCode
forall a. [a] -> Gen a
elements
    [ TypeCode
LUA_TNONE
    , TypeCode
LUA_TNIL
    , TypeCode
LUA_TBOOLEAN
    , TypeCode
LUA_TLIGHTUSERDATA
    , TypeCode
LUA_TNUMBER
    , TypeCode
LUA_TSTRING
    , TypeCode
LUA_TTABLE
    , TypeCode
LUA_TFUNCTION
    , TypeCode
LUA_TUSERDATA
    , TypeCode
LUA_TTHREAD
    ]

instance Arbitrary Lua.StatusCode where
  arbitrary :: Gen StatusCode
arbitrary = [StatusCode] -> Gen StatusCode
forall a. [a] -> Gen a
elements
    [ StatusCode
LUA_OK
    , StatusCode
LUA_YIELD
    , StatusCode
LUA_ERRRUN
    , StatusCode
LUA_ERRSYNTAX
    , StatusCode
LUA_ERRMEM
    , StatusCode
LUA_ERRGCMM
    , StatusCode
LUA_ERRERR
    , StatusCode
LUA_ERRFILE
    ]

instance Arbitrary Lua.OPCode where
  arbitrary :: Gen OPCode
arbitrary = [OPCode] -> Gen OPCode
forall a. [a] -> Gen a
elements
    [ OPCode
LUA_OPEQ
    , OPCode
LUA_OPLT
    , OPCode
LUA_OPLE
    ]