msgpack/haskell/test/UserData.hs

53 lines
774 B
Haskell
Raw Normal View History

2010-09-23 00:04:34 +09:00
{-# Language TemplateHaskell #-}
import Data.MessagePack
data T
= A Int String
| B Double
2010-09-24 03:49:31 +09:00
deriving (Show, Eq)
2010-09-23 00:04:34 +09:00
deriveObject ''T
2010-09-23 00:04:34 +09:00
data U
= C { c1 :: Int, c2 :: String }
2011-11-17 17:40:10 +09:00
| D { z1 :: Double }
2010-09-24 03:49:31 +09:00
deriving (Show, Eq)
deriveObject ''U
2010-09-24 03:49:31 +09:00
data V
= E String | F
deriving (Show, Eq)
deriveObject ''V
2010-09-24 03:49:31 +09:00
2011-11-17 18:27:37 +09:00
data W a
= G a String
| H { hHoge :: Int, h_age :: a }
deriving (Show, Eq)
deriveObject ''W
2010-09-24 03:49:31 +09:00
test :: (OBJECT a, Show a, Eq a) => a -> IO ()
test v = do
let bs = pack v
2010-09-23 00:04:34 +09:00
print bs
2010-09-24 03:49:31 +09:00
print (unpack bs == v)
let oa = toObject v
print oa
2010-09-24 03:49:31 +09:00
print (fromObject oa == v)
main :: IO ()
2010-09-24 03:49:31 +09:00
main = do
test $ A 123 "hoge"
test $ B 3.14
test $ C 123 "hoge"
test $ D 3.14
test $ E "hello"
test $ F
2011-11-17 18:27:37 +09:00
test $ G (E "hello") "world"
test $ H 123 F
return ()