These are the tests for parsing focusing on the from part of query expression > module Language.SQL.SimpleSQL.TableRefs (tableRefTests) where > import Language.SQL.SimpleSQL.TestTypes > import Language.SQL.SimpleSQL.Syntax > tableRefTests :: TestItem > tableRefTests = Group "tableRefTests" $ map (uncurry TestQueryExpr) > [("select a from t" > ,ms [TRSimple "t"]) > ,("select a from t,u" > ,ms [TRSimple "t", TRSimple "u"]) > ,("select a from t inner join u on expr" > ,ms [TRJoin (TRSimple "t") JInner (TRSimple "u") > (Just $ JoinOn $ Iden "expr")]) > ,("select a from t join u on expr" > ,ms [TRJoin (TRSimple "t") JInner (TRSimple "u") > (Just $ JoinOn $ Iden "expr")]) > ,("select a from t left join u on expr" > ,ms [TRJoin (TRSimple "t") JLeft (TRSimple "u") > (Just $ JoinOn $ Iden "expr")]) > ,("select a from t right join u on expr" > ,ms [TRJoin (TRSimple "t") JRight (TRSimple "u") > (Just $ JoinOn $ Iden "expr")]) > ,("select a from t full join u on expr" > ,ms [TRJoin (TRSimple "t") JFull (TRSimple "u") > (Just $ JoinOn $ Iden "expr")]) > ,("select a from t cross join u" > ,ms [TRJoin (TRSimple "t") > JCross (TRSimple "u") Nothing]) > ,("select a from t natural inner join u" > ,ms [TRJoin (TRSimple "t") JInner (TRSimple "u") > (Just JoinNatural)]) > ,("select a from t inner join u using(a,b)" > ,ms [TRJoin (TRSimple "t") JInner (TRSimple "u") > (Just $ JoinUsing ["a", "b"])]) > ,("select a from (select a from t)" > ,ms [TRQueryExpr $ ms [TRSimple "t"]]) > ,("select a from t as u" > ,ms [TRAlias (TRSimple "t") "u" Nothing]) > ,("select a from t u" > ,ms [TRAlias (TRSimple "t") "u" Nothing]) > ,("select a from t u(b)" > ,ms [TRAlias (TRSimple "t") "u" $ Just ["b"]]) > ,("select a from (t cross join u) as u" > ,ms [TRAlias (TRParens $ > TRJoin (TRSimple "t") JCross (TRSimple "u") Nothing) > "u" Nothing]) > -- todo: not sure if the associativity is correct > ,("select a from t cross join u cross join v", > ms [TRJoin > (TRJoin (TRSimple "t") > JCross (TRSimple "u") Nothing) > JCross (TRSimple "v") Nothing]) > ] > where > ms f = makeSelect {qeSelectList = [(Nothing,Iden "a")] > ,qeFrom = f}