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