module Main.Properties where import Main.Prelude hiding (assert, isRight, isLeft) import Test.QuickCheck import Test.QuickCheck.Instances import qualified Data.Scientific as Scientific import qualified Data.UUID as UUID import qualified Data.Vector as Vector import qualified PostgreSQL.Binary.Data as Data import qualified PostgreSQL.Binary.Encoder as Encoder import qualified PostgreSQL.Binary.Decoder as Decoder import qualified Main.TextEncoder as TextEncoder import qualified Main.PTI as PTI import qualified Main.DB as DB import qualified Main.IO as IO import qualified Database.PostgreSQL.LibPQ as LibPQ roundtrip :: (Show a, Eq a) => LibPQ.Oid -> (Bool -> Encoder.Encoder a) -> (Bool -> Decoder.Decoder a) -> a -> Property roundtrip oid encoder decoder value = Right value === unsafePerformIO (IO.roundtrip oid encoder decoder value) stdRoundtrip :: (Show a, Eq a) => LibPQ.Oid -> Encoder.Encoder a -> Decoder.Decoder a -> a -> Property stdRoundtrip oid encoder decoder value = roundtrip oid (const encoder) (const decoder) value textRoundtrip :: (Show a, Eq a) => LibPQ.Oid -> TextEncoder.Encoder a -> (Bool -> Decoder.Decoder a) -> a -> Property textRoundtrip oid encoder decoder value = Right value === unsafePerformIO (IO.textRoundtrip oid encoder decoder value)