bind-marshal-0.1: test/verify_arbmarshal_full_static_cases.hs
-- Copyright : (C) 2009 Corey O'Connor
-- License : BSD-style (see the file LICENSE)
{-# LANGUAGE CPP #-}
{-# LANGUAGE NoRebindableSyntax #-}
{-# LANGUAGE ImplicitPrelude #-}
#define ONLY_ONE
-- #define FEW_SER_EQUIVS
-- #define ALL_SER_EQUIVS
import Verify
import ArbMarshal
import qualified ArbMarshal.Binary as Binary
import Data.Binary.Get (runGet)
import Data.Binary.Put (runPut)
import Bind.Marshal.Dynamic
import Bind.Marshal.StdLib
import Control.DeepSeq
import Control.Monad
import Control.Monad.IO.Class
#ifdef ONLY_ONE
import qualified TestCases.FullStaticCase0 as FullStaticCase0
#else
import qualified TestCases.FullStaticCase1 as FullStaticCase1
import qualified TestCases.FullStaticCase2 as FullStaticCase2
import qualified TestCases.FullStaticCase3 as FullStaticCase3
import qualified TestCases.FullStaticCase4 as FullStaticCase4
import qualified TestCases.FullStaticCase5 as FullStaticCase5
import qualified TestCases.FullStaticCase6 as FullStaticCase6
import qualified TestCases.FullStaticCase7 as FullStaticCase7
import qualified TestCases.FullStaticCase8 as FullStaticCase8
import qualified TestCases.FullStaticCase9 as FullStaticCase9
import qualified TestCases.FullStaticCase10 as FullStaticCase10
import qualified TestCases.FullStaticCase11 as FullStaticCase11
import qualified TestCases.FullStaticCase12 as FullStaticCase12
import qualified TestCases.FullStaticCase13 as FullStaticCase13
import qualified TestCases.FullStaticCase14 as FullStaticCase14
import qualified TestCases.FullStaticCase15 as FullStaticCase15
import qualified TestCases.FullStaticCase16 as FullStaticCase16
import qualified TestCases.FullStaticCase17 as FullStaticCase17
import qualified TestCases.FullStaticCase18 as FullStaticCase18
import qualified TestCases.FullStaticCase19 as FullStaticCase19
#endif
#ifdef ONLY_ONE
import qualified TestCases.BinaryCase0 as BinaryCase0
#else
import qualified TestCases.BinaryCase1 as BinaryCase1
import qualified TestCases.BinaryCase2 as BinaryCase2
import qualified TestCases.BinaryCase3 as BinaryCase3
import qualified TestCases.BinaryCase4 as BinaryCase4
import qualified TestCases.BinaryCase5 as BinaryCase5
import qualified TestCases.BinaryCase6 as BinaryCase6
import qualified TestCases.BinaryCase7 as BinaryCase7
import qualified TestCases.BinaryCase8 as BinaryCase8
import qualified TestCases.BinaryCase9 as BinaryCase9
import qualified TestCases.BinaryCase10 as BinaryCase10
import qualified TestCases.BinaryCase11 as BinaryCase11
import qualified TestCases.BinaryCase12 as BinaryCase12
import qualified TestCases.BinaryCase13 as BinaryCase13
import qualified TestCases.BinaryCase14 as BinaryCase14
import qualified TestCases.BinaryCase15 as BinaryCase15
import qualified TestCases.BinaryCase16 as BinaryCase16
import qualified TestCases.BinaryCase17 as BinaryCase17
import qualified TestCases.BinaryCase18 as BinaryCase18
import qualified TestCases.BinaryCase19 as BinaryCase19
#endif
main = run_test $ do
verify1 "case 0 deserialization vs rd binary"
( verify_full_static_des_vs_rd_binary FullStaticCase0.static_structure
FullStaticCase0.des_static_structure
)
#if 0
verify1 "case 0 serialization vs rd binary"
( verify_full_static_ser_vs_rd_binary FullStaticCase0.static_structure
FullStaticCase0.ser_static_structure
)
verify1 "case 0 deserialization vs equiv binary"
( verify_full_static_des_vs_equiv_binary FullStaticCase0.static_structure
FullStaticCase0.des_static_structure
BinaryCase0.des_static_structure
)
#endif
#ifdef ONLY_ONE
verify1 "case 0 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase0.static_structure
FullStaticCase0.ser_static_structure
BinaryCase0.ser_static_structure
)
#else
verify1 "case 1 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase1.static_structure
FullStaticCase1.ser_static_structure
BinaryCase1.ser_static_structure
)
verify1 "case 2 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase2.static_structure
FullStaticCase2.ser_static_structure
BinaryCase2.ser_static_structure
)
verify1 "case 3 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase3.static_structure
FullStaticCase3.ser_static_structure
BinaryCase3.ser_static_structure
)
verify1 "case 4 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase4.static_structure
FullStaticCase4.ser_static_structure
BinaryCase4.ser_static_structure
)
verify1 "case 5 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase5.static_structure
FullStaticCase5.ser_static_structure
BinaryCase5.ser_static_structure
)
verify1 "case 6 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase6.static_structure
FullStaticCase6.ser_static_structure
BinaryCase6.ser_static_structure
)
verify1 "case 7 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase7.static_structure
FullStaticCase7.ser_static_structure
BinaryCase7.ser_static_structure
)
verify1 "case 8 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase8.static_structure
FullStaticCase8.ser_static_structure
BinaryCase8.ser_static_structure
)
verify1 "case 9 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase9.static_structure
FullStaticCase9.ser_static_structure
BinaryCase9.ser_static_structure
)
verify1 "case 10 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase10.static_structure
FullStaticCase10.ser_static_structure
BinaryCase10.ser_static_structure
)
verify1 "case 11 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase11.static_structure
FullStaticCase11.ser_static_structure
BinaryCase11.ser_static_structure
)
verify1 "case 12 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase12.static_structure
FullStaticCase12.ser_static_structure
BinaryCase12.ser_static_structure
)
verify1 "case 13 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase13.static_structure
FullStaticCase13.ser_static_structure
BinaryCase13.ser_static_structure
)
verify1 "case 14 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase14.static_structure
FullStaticCase14.ser_static_structure
BinaryCase14.ser_static_structure
)
verify1 "case 15 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase15.static_structure
FullStaticCase15.ser_static_structure
BinaryCase15.ser_static_structure
)
verify1 "case 16 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase16.static_structure
FullStaticCase16.ser_static_structure
BinaryCase16.ser_static_structure
)
verify1 "case 17 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase17.static_structure
FullStaticCase17.ser_static_structure
BinaryCase17.ser_static_structure
)
verify1 "case 18 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase18.static_structure
FullStaticCase18.ser_static_structure
BinaryCase18.ser_static_structure
)
verify1 "case 19 serialization vs equiv binary"
( verify_full_static_ser_vs_equiv_binary FullStaticCase19.static_structure
FullStaticCase19.ser_static_structure
BinaryCase19.ser_static_structure
)
#endif
return ()
verify_full_static_des_vs_rd_binary ss des_ss = liftIOResult $ do
ssvs <- liftIO $ replicateM 30000 (ssv_for_ss ss)
let bss = deepseq ssvs $ map Binary.to_bytestring ssvs
in_data = deepseq bss $ zip ssvs bss
( t_0, t_1) <- liftIO $ time_and_compare in_data
(\(ssv,bs) -> return $ decode_ (dyn_action des_ss) bs)
(\(ssv,bs) -> return $ hole_values $ Binary.from_bytestring ss bs)
log_out $ "static des: " ++ show t_0
log_out $ "rd binary: " ++ show t_1
case t_0 > t_1 of
False -> return succeeded
True -> return failed
verify_full_static_ser_vs_rd_binary ss ser_ss = liftIOResult $ do
ssvs <- liftIO $ replicateM 30000 (ssv_for_ss ss)
( t_0, t_1) <- liftIO $ time_and_compare ssvs
(return . encode_ . dyn_action . ser_ss . hole_values)
(return . Binary.to_bytestring)
log_out $ "static ser: " ++ show t_0
log_out $ "rd binary: " ++ show t_1
case t_0 > t_1 of
False -> return succeeded
True -> return failed
verify_full_static_des_vs_equiv_binary ss des_ss get = liftIOResult $ do
ssvs <- liftIO $ replicateM 30000 (ssv_for_ss ss)
let bss = deepseq ssvs $ map Binary.to_bytestring ssvs
in_data = deepseq bss $ zip ssvs bss
( t_0, t_1) <- liftIO $ time_and_compare in_data
(\(ssv,bs) -> return $ decode_ (dyn_action des_ss) bs)
(\(ssv,bs) -> return $ runGet get bs)
log_out $ "static des: " ++ show t_0
log_out $ "equiv binary: " ++ show t_1
case t_0 > t_1 of
False -> return succeeded
True -> return failed
verify_full_static_ser_vs_equiv_binary ss ser_ss put = liftIOResult $ do
ssvs <- liftIO $ replicateM 30000 (ssv_for_ss ss)
( t_0, t_1) <- liftIO $ time_and_compare ssvs
(return . encode_ . dyn_action . ser_ss . hole_values)
(return . runPut . put . hole_values)
log_out $ "static ser: " ++ show t_0
log_out $ "equiv binary: " ++ show t_1
case t_0 > t_1 of
False -> return succeeded
True -> return failed