1{-# LANGUAGE ConstraintKinds #-}
2{-# LANGUAGE FlexibleContexts #-}
3{-# LANGUAGE FlexibleInstances #-}
5{-# LANGUAGE MultiParamTypeClasses #-}
6{-# LANGUAGE RankNTypes #-}
7{-# LANGUAGE ScopedTypeVariables #-}
8{-# LANGUAGE UndecidableInstances #-}
21import Control.Monad.Fix
28class (Reflex t, MonadHold t m, MonadFix m) => TestPlan t m where
29 -- | Speicify a plan of an input Event firing
30 -- Occurances must be in the future (i.e. Time > 0)
31 -- Initial specification is
33 plan :: [(Word, a)] -> m (Event t a)
36planList :: TestPlan t m => [a] -> m (Event t a)
37planList xs = plan $ zip [1..] xs
39type TestE a = forall t m. TestPlan t m => m (Event t a)
40type TestB a = forall t m. TestPlan t m => m (Behavior t a)
43 TestE :: (Show a, Eq a, NFData a) => TestE a -> TestCase
44 TestB :: (Show a, Eq a, NFData a) => TestB a -> TestCase
46-- Helpers to declare test cases
47testE :: (Eq a, Show a, NFData a) => String -> TestE a -> (String, TestCase)
48testE name test = (name, TestE test)
50testB :: (Eq a, Show a, NFData a) => String -> TestB a -> (String, TestCase)
51testB name test = (name, TestB test)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list