dani-sqlite-0.1.0.0: test-query/Utf8Strings.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Utf8Strings
( testUtf8Simplest,
testBlobs,
)
where
import Common
import Data.ByteString qualified 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)
[MkSolo t1] <- select conn "SELECT t FROM utf WHERE id = ?" (MkSolo (1 :: Int))
assertEqual "utf8" ("ääöö" :: String) t1
[MkSolo t2] <- select conn "SELECT t FROM utf WHERE id = ?" (MkSolo (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)
[MkSolo t1] <- select conn "SELECT b FROM blobs WHERE id = ?" (MkSolo (1 :: Int))
assertEqual "blob" d t1
assertEqual "blob nul char" 0 (B.index d 0)
assertEqual "blob first char" 1 (B.index d 1)