1212
1313
1414module ExNumDumpster (
15- numDumpster
15+ specNumDumpster
1616 ) where
1717
18- import Test.HUnit
19- import Database.PostgreSQL.Simple
20-
18+ import Common (bindOptions , include )
19+ import Database.PostgreSQL.Simple (Connection )
2120import Database.PostgreSQL.Simple.Bind (bindFunction )
2221import Database.PostgreSQL.Simple.Bind.Types ()
23-
24- import Common (bindOptions , TestEnv , mkTest , include )
22+ import Test.Hspec (Spec , describe , it , shouldBe )
2523
2624
2725concat <$> mapM (bindFunction bindOptions) [
@@ -34,7 +32,7 @@ concat <$> mapM (bindFunction bindOptions) [
3432
3533
3634addManyNums :: Connection -> [Int ] -> IO ()
37- addManyNums conn xs = sequence_ $ map (sqlAddNum conn) xs
35+ addManyNums conn xs = mapM_ (sqlAddNum conn) xs
3836
3937getSum :: Connection -> IO Int
4038getSum conn = sum <$> (sqlGetAllNums conn)
@@ -47,24 +45,22 @@ iterFib conn = do
4745 addManyNums conn [x, x']
4846 return x'
4947
48+ specNumDumpster :: Connection -> Spec
49+ specNumDumpster conn = describe " NumDumpster example" $ it " works" $ do
50+ include conn " ./examples/sql/numdumpster.sql"
5051
51- numDumpster :: TestEnv -> Test
52- numDumpster = mkTest (flip include " ./examples/sql/numdumpster.sql" )
53- (\ conn -> do
54- sqlAddNum conn 1
55- sqlGetLastNum conn >>= \ x -> assertEqual " check get_last_num" 1 x
56-
57- sqlClear conn
58- addManyNums conn [1 , 2 , 3 , 4 ]
59- sqlGetAllNums conn >>= \ xs -> assertEqual " check get_all_nums" [1 , 2 , 3 , 4 ] xs
52+ sqlAddNum conn 1
53+ sqlGetLastNum conn >>= shouldBe 1
6054
61- sqlGetRange conn Nothing Nothing >>= \ xs -> assertEqual " check get_range" [1 , 2 , 3 , 4 ] xs
62- sqlGetRange conn (Just 2 ) (Just 3 ) >>= \ xs -> assertEqual " check get_range" [2 , 3 ] xs
63- sqlGetRange conn Nothing (Just 3 ) >>= \ xs -> assertEqual " check get_range" [1 , 2 , 3 ] xs
64- sqlGetRange conn (Just 2 ) Nothing >>= \ xs -> assertEqual " check get_range" [2 , 3 , 4 ] xs
55+ sqlClear conn
56+ addManyNums conn [1 , 2 , 3 , 4 ]
57+ sqlGetAllNums conn >>= shouldBe [1 , 2 , 3 , 4 ]
6558
66- sqlClear conn
67- addManyNums conn [ 0 , 1 ]
68- (( head . reverse ) <$> ( sequence $ replicate 11 (iterFib conn))) >>=
69- \ x -> assertEqual " check 11th fibonacci number " 144 x)
59+ sqlGetRange conn Nothing Nothing >>= shouldBe [ 1 , 2 , 3 , 4 ]
60+ sqlGetRange conn ( Just 2 ) ( Just 3 ) >>= shouldBe [ 2 , 3 ]
61+ sqlGetRange conn Nothing ( Just 3 ) >>= shouldBe [ 1 , 2 , 3 ]
62+ sqlGetRange conn ( Just 2 ) Nothing >>= shouldBe [ 2 , 3 , 4 ]
7063
64+ sqlClear conn
65+ addManyNums conn [0 , 1 ]
66+ ((head . reverse ) <$> (sequence $ replicate 11 (iterFib conn))) >>= shouldBe 144
0 commit comments