hydra-0.12.0: src/gen-main/haskell/Hydra/Testing.hs
-- | A model for unit testing
module Hydra.Testing where
import qualified Hydra.Core as Core
import qualified Hydra.Mantle as Mantle
import Prelude hiding (Enum, Ordering, fail, map, pure, sum)
import qualified Data.Int as I
import qualified Data.List as L
import qualified Data.Map as M
import qualified Data.Set as S
-- | One of two evaluation styles: eager or lazy
data EvaluationStyle =
EvaluationStyleEager |
EvaluationStyleLazy
deriving (Eq, Ord, Read, Show)
_EvaluationStyle = (Core.Name "hydra.testing.EvaluationStyle")
_EvaluationStyle_eager = (Core.Name "eager")
_EvaluationStyle_lazy = (Core.Name "lazy")
-- | A test case which checks that strings are converted between different case conventions correctly
data CaseConversionTestCase =
CaseConversionTestCase {
caseConversionTestCaseFromConvention :: Mantle.CaseConvention,
caseConversionTestCaseToConvention :: Mantle.CaseConvention,
caseConversionTestCaseFromString :: String,
caseConversionTestCaseToString :: String}
deriving (Eq, Ord, Read, Show)
_CaseConversionTestCase = (Core.Name "hydra.testing.CaseConversionTestCase")
_CaseConversionTestCase_fromConvention = (Core.Name "fromConvention")
_CaseConversionTestCase_toConvention = (Core.Name "toConvention")
_CaseConversionTestCase_fromString = (Core.Name "fromString")
_CaseConversionTestCase_toString = (Core.Name "toString")
-- | A test case which evaluates (reduces) a given term and compares it with the expected result
data EvaluationTestCase =
EvaluationTestCase {
evaluationTestCaseEvaluationStyle :: EvaluationStyle,
evaluationTestCaseInput :: Core.Term,
evaluationTestCaseOutput :: Core.Term}
deriving (Eq, Ord, Read, Show)
_EvaluationTestCase = (Core.Name "hydra.testing.EvaluationTestCase")
_EvaluationTestCase_evaluationStyle = (Core.Name "evaluationStyle")
_EvaluationTestCase_input = (Core.Name "input")
_EvaluationTestCase_output = (Core.Name "output")
-- | A test case providing a term for which type inference is expected to fail
data InferenceFailureTestCase =
InferenceFailureTestCase {
inferenceFailureTestCaseInput :: Core.Term}
deriving (Eq, Ord, Read, Show)
_InferenceFailureTestCase = (Core.Name "hydra.testing.InferenceFailureTestCase")
_InferenceFailureTestCase_input = (Core.Name "input")
-- | A test case which performs type inference on a given term and compares the result with an expected type scheme
data InferenceTestCase =
InferenceTestCase {
inferenceTestCaseInput :: Core.Term,
inferenceTestCaseOutput :: Core.TypeScheme}
deriving (Eq, Ord, Read, Show)
_InferenceTestCase = (Core.Name "hydra.testing.InferenceTestCase")
_InferenceTestCase_input = (Core.Name "input")
_InferenceTestCase_output = (Core.Name "output")
newtype Tag =
Tag {
unTag :: String}
deriving (Eq, Ord, Read, Show)
_Tag = (Core.Name "hydra.testing.Tag")
-- | A simple test case with an input and an expected output
data TestCase =
TestCaseCaseConversion CaseConversionTestCase |
TestCaseEvaluation EvaluationTestCase |
TestCaseInference InferenceTestCase |
TestCaseInferenceFailure InferenceFailureTestCase
deriving (Eq, Ord, Read, Show)
_TestCase = (Core.Name "hydra.testing.TestCase")
_TestCase_caseConversion = (Core.Name "caseConversion")
_TestCase_evaluation = (Core.Name "evaluation")
_TestCase_inference = (Core.Name "inference")
_TestCase_inferenceFailure = (Core.Name "inferenceFailure")
-- | One of a number of test case variants, together with metadata including a test name, an optional description, and optional tags
data TestCaseWithMetadata =
TestCaseWithMetadata {
testCaseWithMetadataName :: String,
testCaseWithMetadataCase :: TestCase,
testCaseWithMetadataDescription :: (Maybe String),
testCaseWithMetadataTags :: [Tag]}
deriving (Eq, Ord, Read, Show)
_TestCaseWithMetadata = (Core.Name "hydra.testing.TestCaseWithMetadata")
_TestCaseWithMetadata_name = (Core.Name "name")
_TestCaseWithMetadata_case = (Core.Name "case")
_TestCaseWithMetadata_description = (Core.Name "description")
_TestCaseWithMetadata_tags = (Core.Name "tags")
-- | A collection of test cases with a name and optional description
data TestGroup =
TestGroup {
testGroupName :: String,
testGroupDescription :: (Maybe String),
testGroupSubgroups :: [TestGroup],
testGroupCases :: [TestCaseWithMetadata]}
deriving (Eq, Ord, Read, Show)
_TestGroup = (Core.Name "hydra.testing.TestGroup")
_TestGroup_name = (Core.Name "name")
_TestGroup_description = (Core.Name "description")
_TestGroup_subgroups = (Core.Name "subgroups")
_TestGroup_cases = (Core.Name "cases")