packages feed

simple-sql-parser-0.8.0: tests/Language/SQL/SimpleSQL/QueryExprs.hs

{-
These are the tests for the queryExprs parsing which parses multiple
query expressions from one string.
-}

{-# LANGUAGE OverloadedStrings #-}
module Language.SQL.SimpleSQL.QueryExprs (queryExprsTests) where

import Language.SQL.SimpleSQL.TestTypes
import Language.SQL.SimpleSQL.Syntax
import Language.SQL.SimpleSQL.TestRunners
import Data.Text (Text)

queryExprsTests :: TestItem
queryExprsTests = Group "query exprs"
    [q "select 1" [ms]
    ,q "select 1;" [ms]
    ,q "select 1;select 1" [ms,ms]
    ,q " select 1;select 1; " [ms,ms]
    ,q "SELECT CURRENT_TIMESTAMP;"
      [SelectStatement $ toQueryExpr $ makeSelect
      {msSelectList = [(Iden [Name Nothing "CURRENT_TIMESTAMP"],Nothing)]}]
    ,q "SELECT \"CURRENT_TIMESTAMP\";"
      [SelectStatement $ toQueryExpr $ makeSelect
      {msSelectList = [(Iden [Name (Just ("\"","\"")) "CURRENT_TIMESTAMP"],Nothing)]}]
    ]
  where
    ms = SelectStatement $ toQueryExpr $ makeSelect {msSelectList = [(NumLit "1",Nothing)]}
    q :: HasCallStack => Text -> [Statement] -> TestItem
    q src ast = testStatements ansi2011 src ast