dani-sqlite-0.1.0.0: test-query/Fold.hs
{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
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 do pure ([], [])
assertEqual "fold_" val ([3, 2, 1], [6, 5, 4])
val <- fold conn "SELECT id,t FROM testf WHERE id > ?" (MkSolo (1 :: Int)) sumValues do pure ([], [])
assertEqual "fold" val ([3, 2], [6, 5])
val <- foldNamed conn "SELECT id,t FROM testf WHERE id > :id" [":id" := (1 :: Int)] sumValues do pure ([], [])
assertEqual "fold" val ([3, 2], [6, 5])
where
sumValues (accId, accT) (id_ :: Int, t :: Int) = return (id_ : accId, t : accT)