@@ -1,3 +1,4 @@
1+{-# LANGUAGE DeriveGeneric #-}
1{-# LANGUAGE DeriveDataTypeable #-}
2{-# LANGUAGE DeriveDataTypeable #-}
2{-# LANGUAGE DoAndIfThenElse #-}
3{-# LANGUAGE DoAndIfThenElse #-}
3{-# LANGUAGE ScopedTypeVariables #-}
4{-# LANGUAGE ScopedTypeVariables #-}
@@ -23,6 +24,7 @@ import System.Exit (exitFailure)
23import System.IO
24import System.IO
24import qualified Data.Vector as V
25import qualified Data.Vector as V
25import Data.Aeson
26import Data.Aeson
27+import GHC.Generics (Generic)
27import Notify
29import Notify
28import Serializable
30import Serializable
@@ -44,6 +46,10 @@ tests =
44 , TestLabel "Values" . testValues
46 , TestLabel "Values" . testValues
45 , TestLabel "Copy" . testCopy
47 , TestLabel "Copy" . testCopy
46 , TestLabel "Double" . testDouble
48 , TestLabel "Double" . testDouble
49+ , TestLabel "0-ary generic" . testGeneric0
50+ , TestLabel "1-ary generic" . testGeneric1
51+ , TestLabel "2-ary generic" . testGeneric2
52+ , TestLabel "3-ary generic" . testGeneric3
49testBytea :: TestEnv -> Test
55testBytea :: TestEnv -> Test
@@ -317,6 +323,49 @@ testDouble TestEnv{..} = TestCase $ do
317 [Only (x :: Double)] <- query_ conn "SELECT '-Infinity'::float8"
323 [Only (x :: Double)] <- query_ conn "SELECT '-Infinity'::float8"
318 x @?= (-1 / 0)
324 x @?= (-1 / 0)
326+testGeneric0 :: TestEnv -> Test
327+testGeneric0 TestEnv{..} = TestCase $ do
329+ r <- query conn "SELECT ?::int" x0
332+testGeneric1 :: TestEnv -> Test
333+testGeneric1 TestEnv{..} = TestCase $ do
335+ r <- query conn "SELECT ?::int" x0
338+testGeneric2 :: TestEnv -> Test
339+testGeneric2 TestEnv{..} = TestCase $ do
340+ let x0 = Gen2 123 "asdf"
341+ r <- query conn "SELECT ?::int" x0
344+testGeneric3 :: TestEnv -> Test
345+testGeneric3 TestEnv{..} = TestCase $ do
346+ let x0 = Gen3 123 "asdf" True
347+ r <- query conn "SELECT ?::int" x0
351+ deriving (Show,Eq,Generic)
352+instance FromRow Gen0
356+ deriving (Show,Eq,Generic)
357+instance FromRow Gen1
360+data Gen2 = Gen2 Int Text
361+ deriving (Show,Eq,Generic)
362+instance FromRow Gen2
365+data Gen3 = Gen3 Int Text Bool
366+ deriving (Show,Eq,Generic)
367+instance FromRow Gen3
321data TestException
370data TestException
322 = TestException
371 = TestException