module Test.Framework.Core where
import Test.Framework.Improving
import Test.Framework.Options
class (Show i, Show r) => TestResultlike i r | r -> i where
testSucceeded :: r -> Bool
class TestResultlike i r => Testlike i r t | t -> i r, r -> i where
runTest :: CompleteTestOptions -> t -> IO (i :~> r, IO ())
testTypeName :: t -> TestTypeName
type TestName = String
type TestTypeName = String
data Test = forall i r t. Testlike i r t => Test TestName t
| TestGroup TestName [Test]
| PlusTestOptions TestOptions Test
testGroup :: TestName -> [Test] -> Test
testGroup = TestGroup
plusTestOptions :: TestOptions -> Test -> Test
plusTestOptions = PlusTestOptions