prettyTypeSignatureSpecs :: Specs
prettyTypeSignatureSpecs = describe "prettyTypeSignature" $ 
  prettyTypeTestCases prettyFrom ++ 
  [ it "pretty prints a type variable with constraints" $
      "a : Int32 | UInt32 => a" `prettyFrom` "a : Int32 | UInt32 => a"
  , it "pretty prints a function type with constraints" $
      "a : Float | Double => a, a -> a" `prettyFrom` 
      "a : Float | Double => a, a -> a"
  , it "pretty prints a function type with multiple constraints" $
      "a : Float | Double, b : Int32 | UInt32 => a, a -> b" `prettyFrom` 
      "a : Float | Double, b : Int32 | UInt32 => a, a -> b"
  ]
  where
    prettyFrom expected input = 
        case runEParser "tests" input (aTypeSignature <* eof) of
          Right result -> eTestAssertEqual "prettyTypeSignature" 
                            expected
                            (render $ prettyTypeSignature result)
          Left e -> error $ "fix your stupid test: " ++ show e
prettyTypeSignatureSpecs :: Specs
prettyTypeSignatureSpecs = describe "prettyTypeSignature" $ 
  prettyTypeTestCases prettyFrom ++ 
  [ it "pretty prints a type variable with constraints" $
      "a : Int32 | UInt32 => a" `prettyFrom` "a : Int32 | UInt32 => a"
  , it "pretty prints a function type with constraints" $
      "a : Float | Double => a, a -> a" `prettyFrom` 
      "a : Float | Double => a, a -> a"
  , it "pretty prints a function type with multiple constraints" $
      "a : Float | Double, b : Int32 | UInt32 => a, a -> b" `prettyFrom` 
      "a : Float | Double, b : Int32 | UInt32 => a, a -> b"
  ]
  where
    prettyFrom expected input = 
        case runEParser "tests" input (aTypeSignature <* eof) of
          Right result -> eTestAssertEqual "prettyTypeSignature" 
                            expected
                            (render $ prettyTypeSignature result)
          Left e -> error $ "fix your stupid test: " ++ show e
prettyTypeSignatureSpecs = describe "prettyTypeSignature" $ 
  prettyTypeTestCases prettyFrom ++ 
  [ it "pretty prints a type variable with constraints" $
      "a : Int32 | UInt32 => a" `prettyFrom` "a : Int32 | UInt32 => a"
  , it "pretty prints a function type with constraints" $
      "a : Float | Double => a, a -> a" `prettyFrom` 
      "a : Float | Double => a, a -> a"
  , it "pretty prints a function type with multiple constraints" $
      "a : Float | Double, b : Int32 | UInt32 => a, a -> b" `prettyFrom` 
      "a : Float | Double, b : Int32 | UInt32 => a, a -> b"
  ]
  where
    prettyFrom expected input = 
        case runEParser "tests" input (aTypeSignature <* eof) of
          Right result -> eTestAssertEqual "prettyTypeSignature" 
                            expected
                            (render $ prettyTypeSignature result)
          Left e -> error $ "fix your stupid test: " ++ show e