@@ -3,6 +3,7 @@
3{-# LANGUAGE ScopedTypeVariables #-}
3{-# LANGUAGE ScopedTypeVariables #-}
4import Common
4import Common
5import Database.PostgreSQL.Simple.FromField (FromField)
5import Database.PostgreSQL.Simple.FromField (FromField)
6+import Database.PostgreSQL.Simple.Types(Query(..))
6import Database.PostgreSQL.Simple.HStore
7import Database.PostgreSQL.Simple.HStore
7import qualified Database.PostgreSQL.Simple.Transaction as ST
8import qualified Database.PostgreSQL.Simple.Transaction as ST
8import Control.Applicative
9import Control.Applicative
@@ -13,8 +14,10 @@ import Data.IORef
13import Data.Typeable
14import Data.Typeable
14import qualified Data.ByteString as B
15import qualified Data.ByteString as B
15import Data.Map (Map)
16import Data.Map (Map)
17+import Data.List (sort)
16import qualified Data.Map as Map
18import qualified Data.Map as Map
17import Data.Text(Text)
19import Data.Text(Text)
20+import qualified Data.Text.Encoding as T
18import System.Exit (exitFailure)
21import System.Exit (exitFailure)
19import System.IO
22import System.IO
20import qualified Data.Vector as V
23import qualified Data.Vector as V
@@ -36,6 +39,7 @@ tests =
36 , TestLabel "HStore" . testHStore
39 , TestLabel "HStore" . testHStore
37 , TestLabel "JSON" . testJSON
40 , TestLabel "JSON" . testJSON
38 , TestLabel "Savepoint" . testSavepoint
41 , TestLabel "Savepoint" . testSavepoint
42+ , TestLabel "Unicode" . testUnicode
41testBytea :: TestEnv -> Test
45testBytea :: TestEnv -> Test
@@ -243,6 +247,15 @@ testSavepoint TestEnv{..} = TestCase $ do
244 return ()
248 return ()
250+testUnicode :: TestEnv -> Test
251+testUnicode TestEnv{..} = TestCase $ do
252+ let q = Query . T.encodeUtf8
253+ let messages = map Only ["привет","мир"] :: [Only Text]
254+ execute_ conn (q "CREATE TEMPORARY TABLE ру́сский (сообщение TEXT)")
255+ executeMany conn "INSERT INTO ру́сский (сообщение) VALUES (?)" messages
256+ messages' <- query_ conn "SELECT сообщение FROM ру́сский"
257+ sort messages @?= sort messages'
246data TestException
259data TestException
247 = TestException
260 = TestException
248 deriving (Eq, Show, Typeable)
261 deriving (Eq, Show, Typeable)