bind-marshal-0.1: test/verify_data_model_static.hs
-- Copyright : (C) 2009 Corey O'Connor
-- License : BSD-style (see the file LICENSE)
import Bind.Marshal.Prelude
import Bind.Marshal.Verify
import Bind.Marshal.DataModel.Base
import Bind.Marshal.DataModel.App
-- An action acting upon a data model.
data TestAction model model' a
instance ( model_0 ~ model_4
, model_1 ~ model_2
, model_3 ~ model_5
) => Bind (TestAction model_0 model_1 )
(TestAction model_2 model_3 )
(TestAction model_4 model_5 )
where
(>>=) = undefined
instance Functor (TestAction model model' ) where
fmap = undefined
-- examining monads expressing only static buffer actions.
--
-- Introduce a dummy static buffer unit action:
data DummyAction
data DummyActionRep a
sb :: ( tModel' ~ DMApp tModel (BSUnit DummyAction)
) => TestAction tModel tModel' ()
sb = undefined
t_sb_0 :: TestAction DMNil (BSSeq (BSUnit DummyAction) DMNil) ()
t_sb_0 = sb
t_sb_1 :: TestAction DMNil
(DMApp (BSUnit DummyAction)
(BSUnit DummyAction)
)
()
t_sb_1 = sb >> sb
t_sb_2 :: TestAction DMNil
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(BSUnit DummyAction)
)
)
()
t_sb_2 = sb >> sb >> sb
t_sb_2' = sb >> sb >> sb
t_sb_3 :: TestAction DMNil
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(BSUnit DummyAction)
)
)
)
()
t_sb_3 = sb >> sb >> sb >> sb
t_sb_3' = sb >> sb >> sb >> sb
t_sb_4 :: TestAction DMNil
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(DMApp (BSUnit DummyAction)
(BSUnit DummyAction)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
()
t_sb_4 = do
sb
sb
sb
sb
sb
sb
sb
sb
sb
sb
sb
sb
sb
sb
sb
sb
sb
sb
sb
sb
sb
sb
main = run_test $ do
returnM () :: Test ()