úÎbÆ[ˆ„      !"#$%&'()*+,-./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#!"%&*+,/02569:;<=?DILOQRTLOperator 'Data.Equality.(==)' expects both arguments to have the same kind.None#!"%&*+,/02569:;<=?DILOQRT`Execute an action that returns a function than map function over the result of the next action.EExecute one action and then the next, ignore the result of the first.Bind to actions.    0None#!"%&*+,/02569:;<=?DILOQRT#Return the left type of a promoted „None#!"%&*+,/02569:;<=?DILOQRT In case of … †9 prepend a message to the message, if the parameter was ‡ x just return ‡ x.3A constraint that is satisfied if the parameter is …. Fails with a ˆ otherwise.!Return the result or fail with a ˆA nice alias for ‡ A nice alias for …!ÀWhen 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#!"%&*+,/02569:;<=?DILOQRT"$A class for pretty printing via the ‰ instance of %.$IAn open family of type level expectation evaluators, that return either () or an  ErrorMessage.%A type specification.&lExpect the given expectations to hold. If the compiler does not reject it - the expectation seem plausible.'}Expect the given expectations to **NOT** hold. If the compiler does not reject it - the expectation seem indeed implausible.("The default indention to use when Šing ‹uments.)!Nest using the default indention (.*Print a sentence with the second part Œing from the first. Generate: predicate: object "#$%&'()*+,-. !"#$%&'()* %&'$"#()* "#$%&'()*+,-.None#!"%&*+,/02569:;<=?DILOQRT/Combine two expectations."Make a collection of expectations:  (2 + 2) `Is` 4 -/- (4 + 4) `Is` 8 -/- 'True `IsNot` 'False0Pretty Printing Instance./0///0/1None#!"%&*+,/02569:;<=?DILOQRT1bAdd a type level string as label or longer descripton around expectations. This is analog to the it function in the hspec package.121112None#!"%&*+,/02569:;<=?DILOQRT3>State that two types or type constructs are NOT the same type.4IState that two types or type constructs are boiled down to the same type.5_State that one type is different to two other types. This must always be used right next to a 4$ pair, otherwise this will not work.6-State that a type is equal to the type level False.7-State that a type is equal to the type level True.-Pretty print a test prefix by a bullet-point. 3456789:;<3456743765 3456789:;< #Type-Level eDSL for Type-Unit-Tests(c) Sven Heyll, 2016BSD-3sven.heyll@gmail.com experimentalNone#!"%&*+,/02569:;<=?DILOQRT=>?@ABCDEFGHIJKLMNOP* !"#$%&'()*/134567=>?@ABCDEFGHIJKLMNOPPONMLKJIHGFEDCBA@?>==>?@ABCDEFGHIJKLMNOP None#!"%&*+,/02569:;<=?DILOQRTQCrazy operator alias for /.[Make a list of expectations. The precedence of this operator is even higher than that of R.RCrazy 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 = Validj 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 ƒ Alias for 1, 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 )3QRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ] !"#$%&'()*/134567=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ3ƒ‚€~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSQR3QRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ3Q4R3S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~33€33‚3ƒ3Ž    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG 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.2.0.0-JzeSOtxGLnJ6xCjXafrDjaTest.TypeSpec.Internal.EqualityTest.TypeSpec.Internal.ApplyTest.TypeSpec.Internal.EitherTest.TypeSpec.Internal.ResultTest.TypeSpec.CoreTest.TypeSpec.GroupTest.TypeSpec.LabelTest.TypeSpec.ShouldBe Test.TypeSpecTest.TypeSpecCrazyEqExtraApply~>TyFunConst''Const'ConstCompose_ComposeCompose' Compose''Flip__Flip_FlipFlip'<$><$>$<$>$$TyCon2TyCon1Cons'Cons''Pair'Pair''<*>>>>>=FromLeftPrependToErrorDontTryTryFAILEDOKResultPrettyTypeSpecprettyTypeSpecEvalExpectationTypeSpecValidInvalidprettyIndentationnest'sentence$fPrettyTypeSpec[]:$fPrettyTypeSpec[][]$fPrettyTypeSpec(,)(,)$fShowTypeSpec-/-$fPrettyTypeSpecTYPE-/-It$fPrettyTypeSpecTYPEIt ShouldNotBeShouldBeButNot ShouldBeFalse ShouldBeTrue$fPrettyTypeSpecTYPEButNot$fPrettyTypeSpecTYPEShouldNotBe$fPrettyTypeSpecTYPEShouldBe!$fPrettyTypeSpecTYPEShouldBeFalse $fPrettyTypeSpecTYPEShouldBeTrueIt'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.3Text.PrettyPrint.HughesPJnestDochangprettyBulletPoint