HyriseSQLParser/test/select_tests.cpp

76 lines
1.5 KiB
C++
Raw Normal View History

2014-12-03 16:32:56 +01:00
2014-12-18 12:11:26 +01:00
#include "thirdparty/microtest/microtest.h"
#include "sql_asserts.h"
2014-12-03 16:32:56 +01:00
#include "SQLParser.h"
using namespace hsql;
2014-12-18 12:11:26 +01:00
TEST(SelectTest) {
TEST_PARSE_SINGLE_SQL(
"SELECT * FROM students;",
kStmtSelect,
SelectStatement,
result,
stmt);
2014-12-18 12:11:26 +01:00
ASSERT_NULL(stmt->whereClause);
ASSERT_NULL(stmt->groupBy);
delete result;
2014-12-18 12:11:26 +01:00
}
TEST(SelectHavingTest) {
TEST_PARSE_SINGLE_SQL(
"SELECT city, AVG(grade) AS avg_grade FROM students GROUP BY city HAVING AVG(grade) < 2.0",
kStmtSelect,
SelectStatement,
result,
stmt);
ASSERT_FALSE(stmt->selectDistinct);
GroupByDescription* group = stmt->groupBy;
ASSERT_NOTNULL(group);
ASSERT_EQ(group->columns->size(), 1);
ASSERT(group->having->isSimpleOp('<'));
ASSERT(group->having->expr->isType(kExprFunctionRef));
ASSERT(group->having->expr2->isType(kExprLiteralFloat));
delete result;
2014-12-18 12:11:26 +01:00
}
2014-12-03 16:32:56 +01:00
2014-12-18 12:11:26 +01:00
TEST(SelectDistinctTest) {
TEST_PARSE_SINGLE_SQL(
"SELECT DISTINCT grade, city FROM students;",
kStmtSelect,
SelectStatement,
result,
stmt);
2014-12-18 12:28:24 +01:00
ASSERT(stmt->selectDistinct);
ASSERT_NULL(stmt->whereClause);
delete result;
2014-12-03 16:32:56 +01:00
}
2014-12-18 12:11:26 +01:00
TEST(SelectGroupDistinctTest) {
TEST_PARSE_SINGLE_SQL(
"SELECT city, COUNT(name), COUNT(DISTINCT grade) FROM students GROUP BY city;",
kStmtSelect,
SelectStatement,
result,
stmt);
2014-12-18 12:28:24 +01:00
ASSERT_FALSE(stmt->selectDistinct);
ASSERT_EQ(stmt->selectList->size(), 3);
ASSERT(!stmt->selectList->at(1)->distinct);
ASSERT(stmt->selectList->at(2)->distinct);
delete result;
2014-12-18 12:11:26 +01:00
}