hydra-0.14.0: src/gen-test/haskell/Hydra/Test/Unification.hs
-- Note: this is an automatically generated file. Do not edit.
-- | Test cases for type unification operations
module Hydra.Test.Unification where
import qualified Hydra.Core as Core
import qualified Hydra.Testing as Testing
import qualified Hydra.Typing as Typing
import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.ByteString as B
import qualified Data.Int as I
import qualified Data.List as L
import qualified Data.Map as M
import qualified Data.Set as S
-- | Test cases for type unification operations
allTests :: Testing.TestGroup
allTests =
Testing.TestGroup {
Testing.testGroupName = "unification",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [
Testing.TestGroup {
Testing.testGroupName = "variableOccursInType",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in itself",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeVariable (Core.Name "a")),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable does not occur in different variable",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeVariable (Core.Name "b")),
Testing.variableOccursInTypeTestCaseExpected = False})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable does not occur in int32",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Testing.variableOccursInTypeTestCaseExpected = False})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable does not occur in string",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeLiteral Core.LiteralTypeString),
Testing.variableOccursInTypeTestCaseExpected = False})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in list element type",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeList (Core.TypeVariable (Core.Name "a"))),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable does not occur in list of different type",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeList (Core.TypeVariable (Core.Name "b"))),
Testing.variableOccursInTypeTestCaseExpected = False})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in function domain",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "a")),
Core.functionTypeCodomain = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in function codomain",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "a"))})),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable does not occur in function with different vars",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "b")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "c"))})),
Testing.variableOccursInTypeTestCaseExpected = False})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in optional type",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeMaybe (Core.TypeVariable (Core.Name "a"))),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in pair first",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeVariable (Core.Name "a")),
Core.pairTypeSecond = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in pair second",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.pairTypeSecond = (Core.TypeVariable (Core.Name "a"))})),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in either left",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "a")),
Core.eitherTypeRight = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in either right",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "a"))})),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in map key type",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "a")),
Core.mapTypeValues = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in map value type",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeLiteral Core.LiteralTypeString),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "a"))})),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in set type",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeSet (Core.TypeVariable (Core.Name "a"))),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in nested list",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeList (Core.TypeList (Core.TypeVariable (Core.Name "a")))),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in list of functions",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeList (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "a"))}))),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable does not occur in complex type without it",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Core.functionTypeCodomain = (Core.TypeMaybe (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeLiteral Core.LiteralTypeString),
Core.pairTypeSecond = (Core.TypeVariable (Core.Name "b"))})))})),
Testing.variableOccursInTypeTestCaseExpected = False})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs deep in complex type",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Core.functionTypeCodomain = (Core.TypeMaybe (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeLiteral Core.LiteralTypeString),
Core.pairTypeSecond = (Core.TypeVariable (Core.Name "a"))})))})),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in forAll body",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeForall (Core.ForallType {
Core.forallTypeParameter = (Core.Name "b"),
Core.forallTypeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "b")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "a"))}))})),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "variable occurs in forAll bound position",
Testing.testCaseWithMetadataCase = (Testing.TestCaseVariableOccursInType (Testing.VariableOccursInTypeTestCase {
Testing.variableOccursInTypeTestCaseVariable = (Core.Name "a"),
Testing.variableOccursInTypeTestCaseType = (Core.TypeForall (Core.ForallType {
Core.forallTypeParameter = (Core.Name "a"),
Core.forallTypeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "a")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "a"))}))})),
Testing.variableOccursInTypeTestCaseExpected = True})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "unifyTypes",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify identical int32 types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Testing.unifyTypesTestCaseRight = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst M.empty))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify identical string types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeLiteral Core.LiteralTypeString),
Testing.unifyTypesTestCaseRight = (Core.TypeLiteral Core.LiteralTypeString),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst M.empty))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify identical variable types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeVariable (Core.Name "a")),
Testing.unifyTypesTestCaseRight = (Core.TypeVariable (Core.Name "a")),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst M.empty))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify variable with int32",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeVariable (Core.Name "a")),
Testing.unifyTypesTestCaseRight = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst (M.fromList [
(Core.Name "a", (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)))])))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify int32 with variable",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Testing.unifyTypesTestCaseRight = (Core.TypeVariable (Core.Name "a")),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst (M.fromList [
(Core.Name "a", (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)))])))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify two different variables",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeVariable (Core.Name "a")),
Testing.unifyTypesTestCaseRight = (Core.TypeVariable (Core.Name "b")),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst (M.fromList [
(Core.Name "a", (Core.TypeVariable (Core.Name "b")))])))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify list of variables with list of int32",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeList (Core.TypeVariable (Core.Name "a"))),
Testing.unifyTypesTestCaseRight = (Core.TypeList (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst (M.fromList [
(Core.Name "a", (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)))])))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify identical list types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeList (Core.TypeLiteral Core.LiteralTypeString)),
Testing.unifyTypesTestCaseRight = (Core.TypeList (Core.TypeLiteral Core.LiteralTypeString)),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst M.empty))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify function types with variables",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "a")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "b"))})),
Testing.unifyTypesTestCaseRight = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.functionTypeCodomain = (Core.TypeLiteral Core.LiteralTypeString)})),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst (M.fromList [
(Core.Name "a", (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
(Core.Name "b", (Core.TypeLiteral Core.LiteralTypeString))])))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify identical function types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.functionTypeCodomain = (Core.TypeLiteral Core.LiteralTypeString)})),
Testing.unifyTypesTestCaseRight = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.functionTypeCodomain = (Core.TypeLiteral Core.LiteralTypeString)})),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst M.empty))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify optional types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeMaybe (Core.TypeVariable (Core.Name "a"))),
Testing.unifyTypesTestCaseRight = (Core.TypeMaybe (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst (M.fromList [
(Core.Name "a", (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)))])))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify pair types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeVariable (Core.Name "a")),
Core.pairTypeSecond = (Core.TypeVariable (Core.Name "b"))})),
Testing.unifyTypesTestCaseRight = (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.pairTypeSecond = (Core.TypeLiteral Core.LiteralTypeString)})),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst (M.fromList [
(Core.Name "a", (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
(Core.Name "b", (Core.TypeLiteral Core.LiteralTypeString))])))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify either types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "a")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "b"))})),
Testing.unifyTypesTestCaseRight = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.eitherTypeRight = (Core.TypeLiteral Core.LiteralTypeString)})),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst (M.fromList [
(Core.Name "a", (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
(Core.Name "b", (Core.TypeLiteral Core.LiteralTypeString))])))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify map types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "k")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "v"))})),
Testing.unifyTypesTestCaseRight = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeLiteral Core.LiteralTypeString),
Core.mapTypeValues = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst (M.fromList [
(Core.Name "k", (Core.TypeLiteral Core.LiteralTypeString)),
(Core.Name "v", (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)))])))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify set types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeSet (Core.TypeVariable (Core.Name "a"))),
Testing.unifyTypesTestCaseRight = (Core.TypeSet (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst (M.fromList [
(Core.Name "a", (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)))])))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "unify unit types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = Core.TypeUnit,
Testing.unifyTypesTestCaseRight = Core.TypeUnit,
Testing.unifyTypesTestCaseExpected = (Right (Typing.TypeSubst M.empty))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "fail to unify int32 with string",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Testing.unifyTypesTestCaseRight = (Core.TypeLiteral Core.LiteralTypeString),
Testing.unifyTypesTestCaseExpected = (Left "cannot unify")})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "fail to unify list with function",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeList (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Testing.unifyTypesTestCaseRight = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.functionTypeCodomain = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Testing.unifyTypesTestCaseExpected = (Left "cannot unify")})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "occur check: variable with list containing it",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUnifyTypes (Testing.UnifyTypesTestCase {
Testing.unifyTypesTestCaseSchemaTypes = [],
Testing.unifyTypesTestCaseLeft = (Core.TypeVariable (Core.Name "a")),
Testing.unifyTypesTestCaseRight = (Core.TypeList (Core.TypeVariable (Core.Name "a"))),
Testing.unifyTypesTestCaseExpected = (Left "appears free")})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "joinTypes",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "join identical int32",
Testing.testCaseWithMetadataCase = (Testing.TestCaseJoinTypes (Testing.JoinTypesTestCase {
Testing.joinTypesTestCaseLeft = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Testing.joinTypesTestCaseRight = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Testing.joinTypesTestCaseExpected = (Right [])})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "join identical string",
Testing.testCaseWithMetadataCase = (Testing.TestCaseJoinTypes (Testing.JoinTypesTestCase {
Testing.joinTypesTestCaseLeft = (Core.TypeLiteral Core.LiteralTypeString),
Testing.joinTypesTestCaseRight = (Core.TypeLiteral Core.LiteralTypeString),
Testing.joinTypesTestCaseExpected = (Right [])})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "join list types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseJoinTypes (Testing.JoinTypesTestCase {
Testing.joinTypesTestCaseLeft = (Core.TypeList (Core.TypeVariable (Core.Name "a"))),
Testing.joinTypesTestCaseRight = (Core.TypeList (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Testing.joinTypesTestCaseExpected = (Right [
Typing.TypeConstraint {
Typing.typeConstraintLeft = (Core.TypeVariable (Core.Name "a")),
Typing.typeConstraintRight = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Typing.typeConstraintComment = "join types; test"}])})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "join function types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseJoinTypes (Testing.JoinTypesTestCase {
Testing.joinTypesTestCaseLeft = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "a")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "b"))})),
Testing.joinTypesTestCaseRight = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.functionTypeCodomain = (Core.TypeLiteral Core.LiteralTypeString)})),
Testing.joinTypesTestCaseExpected = (Right [
Typing.TypeConstraint {
Typing.typeConstraintLeft = (Core.TypeVariable (Core.Name "a")),
Typing.typeConstraintRight = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Typing.typeConstraintComment = "join types; test"},
Typing.TypeConstraint {
Typing.typeConstraintLeft = (Core.TypeVariable (Core.Name "b")),
Typing.typeConstraintRight = (Core.TypeLiteral Core.LiteralTypeString),
Typing.typeConstraintComment = "join types; test"}])})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "join optional types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseJoinTypes (Testing.JoinTypesTestCase {
Testing.joinTypesTestCaseLeft = (Core.TypeMaybe (Core.TypeVariable (Core.Name "a"))),
Testing.joinTypesTestCaseRight = (Core.TypeMaybe (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Testing.joinTypesTestCaseExpected = (Right [
Typing.TypeConstraint {
Typing.typeConstraintLeft = (Core.TypeVariable (Core.Name "a")),
Typing.typeConstraintRight = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Typing.typeConstraintComment = "join types; test"}])})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "join pair types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseJoinTypes (Testing.JoinTypesTestCase {
Testing.joinTypesTestCaseLeft = (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeVariable (Core.Name "a")),
Core.pairTypeSecond = (Core.TypeVariable (Core.Name "b"))})),
Testing.joinTypesTestCaseRight = (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.pairTypeSecond = (Core.TypeLiteral Core.LiteralTypeString)})),
Testing.joinTypesTestCaseExpected = (Right [
Typing.TypeConstraint {
Typing.typeConstraintLeft = (Core.TypeVariable (Core.Name "a")),
Typing.typeConstraintRight = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Typing.typeConstraintComment = "join types; test"},
Typing.TypeConstraint {
Typing.typeConstraintLeft = (Core.TypeVariable (Core.Name "b")),
Typing.typeConstraintRight = (Core.TypeLiteral Core.LiteralTypeString),
Typing.typeConstraintComment = "join types; test"}])})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "join either types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseJoinTypes (Testing.JoinTypesTestCase {
Testing.joinTypesTestCaseLeft = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "a")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "b"))})),
Testing.joinTypesTestCaseRight = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.eitherTypeRight = (Core.TypeLiteral Core.LiteralTypeString)})),
Testing.joinTypesTestCaseExpected = (Right [
Typing.TypeConstraint {
Typing.typeConstraintLeft = (Core.TypeVariable (Core.Name "a")),
Typing.typeConstraintRight = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Typing.typeConstraintComment = "join types; test"},
Typing.TypeConstraint {
Typing.typeConstraintLeft = (Core.TypeVariable (Core.Name "b")),
Typing.typeConstraintRight = (Core.TypeLiteral Core.LiteralTypeString),
Typing.typeConstraintComment = "join types; test"}])})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "join map types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseJoinTypes (Testing.JoinTypesTestCase {
Testing.joinTypesTestCaseLeft = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "k")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "v"))})),
Testing.joinTypesTestCaseRight = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeLiteral Core.LiteralTypeString),
Core.mapTypeValues = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Testing.joinTypesTestCaseExpected = (Right [
Typing.TypeConstraint {
Typing.typeConstraintLeft = (Core.TypeVariable (Core.Name "k")),
Typing.typeConstraintRight = (Core.TypeLiteral Core.LiteralTypeString),
Typing.typeConstraintComment = "join types; test"},
Typing.TypeConstraint {
Typing.typeConstraintLeft = (Core.TypeVariable (Core.Name "v")),
Typing.typeConstraintRight = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Typing.typeConstraintComment = "join types; test"}])})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "join set types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseJoinTypes (Testing.JoinTypesTestCase {
Testing.joinTypesTestCaseLeft = (Core.TypeSet (Core.TypeVariable (Core.Name "a"))),
Testing.joinTypesTestCaseRight = (Core.TypeSet (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Testing.joinTypesTestCaseExpected = (Right [
Typing.TypeConstraint {
Typing.typeConstraintLeft = (Core.TypeVariable (Core.Name "a")),
Typing.typeConstraintRight = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Typing.typeConstraintComment = "join types; test"}])})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "join unit types",
Testing.testCaseWithMetadataCase = (Testing.TestCaseJoinTypes (Testing.JoinTypesTestCase {
Testing.joinTypesTestCaseLeft = Core.TypeUnit,
Testing.joinTypesTestCaseRight = Core.TypeUnit,
Testing.joinTypesTestCaseExpected = (Right [])})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "fail to join int32 with string",
Testing.testCaseWithMetadataCase = (Testing.TestCaseJoinTypes (Testing.JoinTypesTestCase {
Testing.joinTypesTestCaseLeft = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Testing.joinTypesTestCaseRight = (Core.TypeLiteral Core.LiteralTypeString),
Testing.joinTypesTestCaseExpected = (Left ())})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "fail to join list with function",
Testing.testCaseWithMetadataCase = (Testing.TestCaseJoinTypes (Testing.JoinTypesTestCase {
Testing.joinTypesTestCaseLeft = (Core.TypeList (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Testing.joinTypesTestCaseRight = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.functionTypeCodomain = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Testing.joinTypesTestCaseExpected = (Left ())})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "fail to join pair with either",
Testing.testCaseWithMetadataCase = (Testing.TestCaseJoinTypes (Testing.JoinTypesTestCase {
Testing.joinTypesTestCaseLeft = (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.pairTypeSecond = (Core.TypeLiteral Core.LiteralTypeString)})),
Testing.joinTypesTestCaseRight = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.eitherTypeRight = (Core.TypeLiteral Core.LiteralTypeString)})),
Testing.joinTypesTestCaseExpected = (Left ())})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]}],
Testing.testGroupCases = []}