{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}

module DirectSqlite (
    testDirectSqlite
  ) where

import Common

import Control.Exception (bracket)
import qualified Database.SQLite3 as DS

testDirectSqlite :: TestEnv -> Test
testDirectSqlite TestEnv{..} = TestCase $ do
  let dsConn = connectionHandle conn
  bracket (DS.prepare dsConn "SELECT 1+1") DS.finalize testDirect
  [Only (res :: Int)] <- query_ (Connection dsConn) "SELECT 1+2"
  assertEqual "1+2" 3 res
  where
    testDirect stmt = do
      DS.Row <- DS.step stmt
      res <- DS.column stmt 0
      assertEqual "1+1" (SQLInteger 2) res