persistent-test-2.13.2.1: src/LargeNumberTest.hs
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
module LargeNumberTest where
import Data.Word
import Init
share
[mkPersist sqlSettings{mpsGeneric = True}, mkMigrate "numberMigrate"]
[persistLowerCase|
Number
intx Int
int32 Int32
word32 Word32
int64 Int64
word64 Word64
deriving Show Eq
|]
cleanDB
:: (Runner backend m) => ReaderT backend m ()
cleanDB = do
deleteWhere ([] :: [Filter (NumberGeneric backend)])
specsWith :: (Runner backend m) => RunDb backend m -> Spec
specsWith runDb = describe "Large Numbers" $ do
it "preserves their values in the database" $ runDb $ do
let
go x = do
xid <- insert x
x' <- get xid
liftIO $ x' @?= Just x
go $ Number maxBound 0 0 0 0
go $ Number 0 maxBound 0 0 0
go $ Number 0 0 maxBound 0 0
go $ Number 0 0 0 maxBound 0
go $ Number 0 0 0 0 maxBound
go $ Number minBound 0 0 0 0
go $ Number 0 minBound 0 0 0
go $ Number 0 0 minBound 0 0
go $ Number 0 0 0 minBound 0
go $ Number 0 0 0 0 minBound