git.iko.soy/typeable/postgresql-simple
on master help sign in
Add test for generic instances
commit39b9417c02b30f8c2e0814064d2033530fd11a44 authorAlexey Khudyakov <alexey.skladnoy@gmail.com> dateSat 17 Oct 2015, 19:28 (11 years ago) parent943b534
1 file changed+49
test/Main.hs+49
test/Main.hs+49
@@ -1,3 +1,4 @@
1+{-# LANGUAGE DeriveGeneric #-}
12{-# LANGUAGE DeriveDataTypeable #-}
23{-# LANGUAGE DoAndIfThenElse #-}
34{-# LANGUAGE ScopedTypeVariables #-}
@@ -23,6 +24,7 @@ import System.Exit (exitFailure)
2324import System.IO
2425import qualified Data.Vector as V
2526import Data.Aeson
27+import GHC.Generics (Generic)
2628
2729import Notify
2830import Serializable
@@ -44,6 +46,10 @@ tests =
4446 , TestLabel "Values" . testValues
4547 , TestLabel "Copy" . testCopy
4648 , 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
4753 ]
4854
4955testBytea :: TestEnv -> Test
@@ -317,6 +323,49 @@ testDouble TestEnv{..} = TestCase $ do
317323 [Only (x :: Double)] <- query_ conn "SELECT '-Infinity'::float8"
318324 x @?= (-1 / 0)
319325
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
320369
321370data TestException
322371 = TestException