git.iko.soy/typeable/postgresql-simple
on master help sign in
Add test for generic instances
39b9417Alexey Khudyakov
test/Main.hs+49
@@ -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)
26
28
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
47 ]
53 ]
48
54
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)
319
325
326+testGeneric0 :: TestEnv -> Test
327+testGeneric0 TestEnv{..} = TestCase $ do
328+ let x0 = Gen0
329+ r <- query conn "SELECT ?::int" x0
330+ r @?= [x0]
331+
332+testGeneric1 :: TestEnv -> Test
333+testGeneric1 TestEnv{..} = TestCase $ do
334+ let x0 = Gen1 123
335+ r <- query conn "SELECT ?::int" x0
336+ r @?= [x0]
337+
338+testGeneric2 :: TestEnv -> Test
339+testGeneric2 TestEnv{..} = TestCase $ do
340+ let x0 = Gen2 123 "asdf"
341+ r <- query conn "SELECT ?::int" x0
342+ r @?= [x0]
343+
344+testGeneric3 :: TestEnv -> Test
345+testGeneric3 TestEnv{..} = TestCase $ do
346+ let x0 = Gen3 123 "asdf" True
347+ r <- query conn "SELECT ?::int" x0
348+ r @?= [x0]
349+
350+data Gen0 = Gen0
351+ deriving (Show,Eq,Generic)
352+instance FromRow Gen0
353+instance ToRow Gen0
354+
355+data Gen1 = Gen1 Int
356+ deriving (Show,Eq,Generic)
357+instance FromRow Gen1
358+instance ToRow Gen1
359+
360+data Gen2 = Gen2 Int Text
361+ deriving (Show,Eq,Generic)
362+instance FromRow Gen2
363+instance ToRow Gen2
364+
365+data Gen3 = Gen3 Int Text Bool
366+ deriving (Show,Eq,Generic)
367+instance FromRow Gen3
368+instance ToRow Gen3
320
369
321data TestException
370data TestException
322 = TestException
371 = TestException