module Main where import Test.TypeSpec import Data.Type.Symbol.Parser main :: IO () main = print spec -- The type errors for failures are HILARIOUS if you're into that sort of thing. -- Try messing with a test or two and see mad GHC gets! type CstrX_Y = (Literal "Cstr" :*>: Isolate 2 NatDec) :<*>: (Literal "_" :*>: Isolate 2 NatHex) spec :: Expect '[ Run (Literal "raehik") "raehik" `Is` Right '( '(), "") , Run (Literal "raeh") "raehraeh" `Is` Right '( '(), "raeh") , Run (Drop 3 :*>: Literal "HI") "...HI" `Is` Right '( '(), "") , Run (Literal "0x" :*>: NatHex) "0xfF" `Is` Right '( 255, "") , Run CstrX_Y "Cstr12_AB" `Is` Right '( '(12, 0xAB), "") ] spec = Valid