1+ {-# LANGUAGE OverloadedStrings #-}
12module Main (main ) where
23
3- import Control.Monad (unless )
4- import Test.Tasty (defaultMain , testGroup )
5- import Test.Tasty.HUnit (testCaseSteps , assertEqual )
4+ import Control.Monad (unless )
5+ import Data.Foldable (toList )
66import Database.PostgreSQL.LibPQ
7- import Data.Foldable (toList )
8- import System.Environment (getEnvironment )
9- import System.Exit (exitFailure )
7+ import System.Environment (getEnvironment )
8+ import System.Exit (exitFailure )
9+ import Test.Tasty (defaultMain , testGroup )
10+ import Test.Tasty.HUnit (assertEqual , testCaseSteps )
1011
12+ import qualified Data.ByteString as BS
1113import qualified Data.ByteString.Char8 as BS8
1214
1315main :: IO ()
1416main = do
1517 libpqVersion >>= print
1618 withConnstring $ \ connString -> defaultMain $ testGroup " postgresql-libpq"
17- [ testCaseSteps " smoke" $ \ info -> smoke info connString
19+ [ testCaseSteps " smoke" $ smoke connString
20+ , testCaseSteps " issue54" $ issue54 connString
1821 ]
1922
2023withConnstring :: (BS8. ByteString -> IO () ) -> IO ()
@@ -39,8 +42,8 @@ withConnstring kont = do
3942 , " port=5432"
4043 ]
4144
42- smoke :: (String -> IO () ) -> BS8. ByteString -> IO ()
43- smoke info connstring = do
45+ smoke :: BS8. ByteString -> (String -> IO () ) -> IO ()
46+ smoke connstring info = do
4447 let infoShow x = info (show x)
4548
4649 conn <- connectdb connstring
@@ -56,6 +59,31 @@ smoke info connstring = do
5659 serverVersion conn >>= infoShow
5760
5861 s <- status conn
59- assertEqual " connection not ok" s ConnectionOk
62+ assertEqual " connection not ok" ConnectionOk s
6063
6164 finish conn
65+
66+ issue54 :: BS8. ByteString -> (String -> IO () ) -> IO ()
67+ issue54 connString info = do
68+ conn <- connectdb connString
69+
70+ Just result <- execParams conn
71+ " SELECT ($1 :: bytea), ($2 :: bytea)"
72+ [Just (Oid 17 ," " ,Binary ), Just (Oid 17 ,BS. empty,Binary )]
73+ Binary
74+ s <- resultStatus result
75+ assertEqual " result status" TuplesOk s
76+
77+ -- ntuples result >>= info . show
78+ -- nfields result >>= info . show
79+
80+ null1 <- getisnull result 0 0
81+ null2 <- getisnull result 0 1
82+ assertEqual " fst not null" False null1
83+ assertEqual " snd not null" False null2
84+
85+ Just val1 <- getvalue result 0 0
86+ Just val2 <- getvalue result 0 1
87+
88+ assertEqual " fst not null" BS. empty val1
89+ assertEqual " snd not null" BS. empty val2
0 commit comments