!e]Y      !"#$%&'()*+,-./0123456789:; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  None#"#&',-.12478=>?@ACHMPSUVX R type-spec`Execute an action that returns a function than map function over the result of the next action. type-specEExecute one action and then the next, ignore the result of the first. type-specBind to actions.  0None#"#&',-.12478=>?@ACHMPSUVXC type-spec#Return the left type of a promoted None#"#&',-.12478=>?@ACHMPSUVX type-specLOperator 'Data.Equality.(==)' expects both arguments to have the same kind.None#"#&',-.12478=>?@ACHMPSUVX_ type-spec In case of  9 prepend a message to the message, if the parameter was  x just return  x. type-spec3A constraint that is satisfied if the parameter is . Fails with a  otherwise. type-spec!Return the result or fail with a  type-specA nice alias for   type-specA nice alias for ! type-specWhen a type level expectation is tested, it might be that compound expectations fail. In order to have a small, precise error message, the type level assertion results are made to have kind !. !! None#"#&',-.12478=>?@ACHMPSUVX'" type-spec$A class for pretty printing via the  instance of %.$ type-specIAn open family of type level expectation evaluators, that return either () or an  ErrorMessage.% type-specA type specification.& type-speclExpect the given expectations to hold. If the compiler does not reject it - the expectation seem plausible.' type-spec}Expect the given expectations to **NOT** hold. If the compiler does not reject it - the expectation seem indeed implausible.( type-spec"The default indention to use when ing uments. type-spec Given a list (expectation : rest) try to evaluate the  expectation& then, if no error was returned, the rest. type-spec Given a pair (expectation1, expectation2)G try to evaluate the first then, if no error was returned, the second.  !"#$%&'(%&'$"#(None#"#&',-.12478=>?@ACHMPSUVX-U- type-specCombine two expectations."Make a collection of expectations:  (2 + 2) `Is` 4 -/- (4 + 4) `Is` 8 -/- 'True `IsNot` 'False. type-specPretty Printing Instance.---1None#"#&',-.12478=>?@ACHMPSUVX1/ type-specbAdd a type level string as label or longer descripton around expectations. This is analog to the it function in the hspec package.//None#"#&',-.12478=>?@ACHMPSUVX91 type-spec>State that two types or type constructs are NOT the same type.2 type-specIState that two types or type constructs are boiled down to the same type.3 type-spec_State that one type is different to two other types. This must always be used right next to a 2$ pair, otherwise this will not work.4 type-spec-State that a type is equal to the type level False.5 type-spec-State that a type is equal to the type level True. type-spec-Pretty print a test prefix by a bullet-point.1234521543 #Type-Level eDSL for Type-Unit-Tests(c) Sven Heyll, 2016BSD-3sven.heyll@gmail.com experimentalNone#"#&',-.12478=>?@ACHMPSUVX<( !"#$%&'(-/12345;<=>?@ABCDEFGHIJKLMNNMLKJIHGFEDCBA@?>=<; None#"#&',-.12478=>?@ACHMPSUVXWTO type-specCrazy operator alias for -.[Make a list of expectations. The precedence of this operator is even higher than that of P.P type-specCrazy operator alias for - with higher precedence.KIt allows to group expectations more beautiful than using type level lists. 6specCrazyMoreNested :: "Title" ###### "Top-level " ~~~~~~~~~~~~ "Nested:" ~~~~~~~~~ Int `Is` Int -*- Int `Is` Int -*- Int `Is` Int -/- "Top-level " ~~~~~~~~~~~~ "Nested:" ~~~~~~~~~ Int `Is` Int -*- "Nested:" ~~~~~~~~~ Int `Is` Int -*- Int `Is` Int specCrazyMoreNested = Validh type-spec Create a %] with an initial description or title followed by some expectations. Note that the number of #s is alway a multiple of 3.8It allows to rewrite the example above in a shorter way:  type ExpectationWithTitleShorter = "This is a title for some assertions:" ###################################### (2 + 2) `Is` 4  type-spec Alias for /, note that the number of ~os is alway a multiple of 3. This provides the impression of an underlined title followed by other expectations.&It allows to write the following type:  type ExpectationWithTitle = TypeSpec ( "This is a title for some assertions:" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (2 + 2) `Is` 4 )[ !"#$%&'(-/12345;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~3~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQOP3O4P3Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333    !"#$%&'()*+,-./0123456789:;<=>?@ABCDE F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~              (type-spec-0.4.0.0-FJPqVa2ebjJ3Qiq7BNGhnZTest.TypeSpec.Internal.ApplyTest.TypeSpec.Internal.EitherTest.TypeSpec.Internal.EqualityTest.TypeSpec.Internal.ResultTest.TypeSpec.CoreTest.TypeSpec.GroupTest.TypeSpec.LabelTest.TypeSpec.ShouldBe Test.TypeSpecTest.TypeSpecCrazyApply~>TyFunConst''Const'ConstCompose_ComposeCompose' Compose''Flip__Flip_FlipFlip'<$><$>$<$>$$TyCon2TyCon1Cons'Cons''Pair'Pair''<*>>>>>=FromLeftEqExtraPrependToErrorDontTryTryFAILEDOKResultPrettyTypeSpecprettyTypeSpecEvalExpectationTypeSpecValidInvalidprettyIndentation$fPrettyTypeSpec[]:$fPrettyTypeSpec[][]$fPrettyTypeSpec(,)(,)$fShowTypeSpec-/-$fPrettyTypeSpecTYPE-/-It$fPrettyTypeSpecTYPEIt ShouldNotBeShouldBeButNot ShouldBeFalse ShouldBeTrue $fPrettyTypeSpecTYPEShouldBeTrue!$fPrettyTypeSpecTYPEShouldBeFalse$fPrettyTypeSpecTYPEButNot$fPrettyTypeSpecTYPEShouldBe$fPrettyTypeSpecTYPEShouldNotBeIt'sContextDescribeTheyNotIsFalseThat ThereforeAndIsTrueTheseAreNotEqualIsDifferentFromIsNotTheSameAsIsn'tIsNot TheseAreEqual IsTheSameAsIsExplainExpect-*-*-H########################################################################E#####################################################################B##################################################################?###############################################################<############################################################9#########################################################6######################################################3###################################################0################################################-#############################################*##########################################'#######################################$####################################!######################################################################################################################################################################## ############ ##################H~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~E~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~B~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~?~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~9~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~6~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~3~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~0~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~$~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~--*base Data.EitherEitherLeft GHC.TypeLits ErrorMessageRight TypeErrorGHC.ShowShowpretty-1.1.3.6Text.PrettyPrint.HughesPJnestDocD:R:EvalExpectation[][]D:R:EvalExpectation(,)(,) prettyCheck