on e596bab help sign in
patch/test/Reflex/Test.hs
61 lines 1.4 kB history raw
1{-# LANGUAGE ConstraintKinds, GADTs, RankNTypes, FlexibleInstances, FlexibleContexts, MultiParamTypeClasses, GeneralizedNewtypeDeriving #-}
3module Reflex.Test
4 ( testAgreement
5 , compareResult
6 , runTests
8 , module Reflex.TestPlan
10 ) where
12import Reflex.Spider
14import Reflex.TestPlan
16import Reflex.Plan.Pure
17import Reflex.Plan.Reflex
19import Control.Monad
20import Data.Monoid
22import Data.IntMap (IntMap)
24--import Data.Foldable
25import System.Exit
27import Prelude
30testAgreement :: TestCase -> IO Bool
31testAgreement (TestE p) = do
32 spider <- runSpiderHost $ runTestE p
33 let results = [("spider", spider)]
35 compareResult results (testEvent $ runPure p)
37testAgreement (TestB p) = do
38 spider <- runSpiderHost $ runTestB p
39 let results = [("spider", spider)]
41 compareResult results (testBehavior $ runPure p)
44compareResult :: (Show a, Eq a) => [(String, IntMap a)] -> IntMap a -> IO Bool
45compareResult results expected = fmap and $ forM results $ \(name, r) -> do
47 when (r /= expected) $ do
48 putStrLn ("Got: " ++ show (name, r))
49 putStrLn ("Expected: " ++ show expected)
50 return (r == expected)
53runTests :: [(String, TestCase)] -> IO ()
54runTests testCases = do
55 results <- forM testCases $ \(name, test) -> do
56 putStrLn $ "Test: " <> name
57 testAgreement test
58 exitWith $ if and results
59 then ExitSuccess
60 else ExitFailure 1