module Main where
import qualified Data.Text as Text
import qualified PostgresqlSyntax.Parsing as Parsing
import Test.Tasty
import Test.Tasty.HUnit
import Prelude hiding (assert)
main :: IO ()
main =
defaultMain
$ testGroup
""
[ testGroup "Parsers"
$ let testParserOnAllInputs parserName parser inputs =
testCase parserName
$ forM_ inputs
$ \input -> case Parsing.run parser input of
Left err -> assertFailure (err <> "\ninput: " <> Text.unpack input)
Right _ -> return ()
in [ testParserOnAllInputs
"preparableStmt"
Parsing.preparableStmt
[ "select i :: int8 from auth.user as u\n\
\inner join edgenode.usere_provider as p\n\
\on u.id = p.user_id\n\
\inner join edgenode.provider_branch as b\n\
\on b.provider_fk = p.provider_id"
],
testParserOnAllInputs
"typename"
Parsing.typename
[ "int4[]",
"int4[][]",
"int4?[]",
"int4?[]?",
"aa array",
"DOUBLE PRECISION",
"bool",
"int2",
"int4",
"int8",
"float4",
"float8",
"numeric",
"char",
"text",
"bytea",
"date",
"timestamp",
"timestamptz",
"time",
"timetz",
"interval",
"uuid",
"inet",
"json",
"jsonb"
]
]
]