{-# LANGUAGE OverloadedStrings, ScopedTypeVariables #-}
module Fold (
testFolds) where
import Common
testFolds :: TestEnv -> Test
testFolds TestEnv{..} = TestCase $ do
execute_ conn "CREATE TABLE testf (id INTEGER PRIMARY KEY, t INT)"
execute_ conn "INSERT INTO testf (t) VALUES (4)"
execute_ conn "INSERT INTO testf (t) VALUES (5)"
execute_ conn "INSERT INTO testf (t) VALUES (6)"
val <- fold_ conn "SELECT id,t FROM testf" ([],[]) sumValues
assertEqual "fold_" ([3,2,1], [6,5,4]) val
val <- fold conn "SELECT id,t FROM testf WHERE id > ?" (Only (1 :: Int)) ([],[]) sumValues
assertEqual "fold" ([3,2], [6,5]) val
where
sumValues (accId, accT) (id_ :: Int, t :: Int) = return $ (id_ : accId, t : accT)