sqlite-simple-0.4.12.1: test/Utf8Strings.hs
-- -*- coding: utf-8 -*-
module Utf8Strings (testUtf8Simplest
, testBlobs) where
import Common
import qualified Data.ByteString as B
import Data.Word
testUtf8Simplest :: TestEnv -> Test
testUtf8Simplest TestEnv{..} = TestCase $ do
execute_ conn "CREATE TABLE utf (id INTEGER, t TEXT)"
execute_ conn "INSERT INTO utf (id, t) VALUES (1, 'ääöö')"
execute conn "INSERT INTO utf (id, t) VALUES (?,?)" (2 :: Int, "ääööåå" :: String)
[Only t1] <- query conn "SELECT t FROM utf WHERE id = ?" (Only (1 :: Int))
assertEqual "utf8" ("ääöö" :: String) t1
[Only t2] <- query conn "SELECT t FROM utf WHERE id = ?" (Only (2 :: Int))
assertEqual "utf8" ("ääööåå" :: String) t2
testBlobs :: TestEnv -> Test
testBlobs TestEnv{..} = TestCase $ do
let d = B.pack ([0..127] :: [Word8])
execute_ conn "CREATE TABLE blobs (id INTEGER, b BLOB)"
execute conn "INSERT INTO blobs (id, b) VALUES (?,?)" (1 :: Int, d)
[Only t1] <- query conn "SELECT b FROM blobs WHERE id = ?" (Only (1 :: Int))
assertEqual "blob" d t1
assertEqual "blob nul char" 0 (B.index d 0)
assertEqual "blob first char" 1 (B.index d 1)