Hook the parser tests into the CMake build system.

This commit is contained in:
Mark Rowe 2016-01-06 15:52:12 -08:00
parent 9cf26ed2cb
commit c4191d8af6
35 changed files with 48 additions and 54 deletions

1
.gitignore vendored
View File

@ -10,3 +10,4 @@ rules.ninja
# Build products
librealm-object-store.dylib
tests/tests

3
.gitmodules vendored
View File

@ -1,3 +1,6 @@
[submodule "external/pegtl"]
path = external/pegtl
url = https://github.com/ColinH/PEGTL
[submodule "external/catch"]
path = external/catch
url = https://github.com/philsquared/Catch

View File

@ -8,25 +8,7 @@ include(CompilerFlags)
include(RealmCore)
download_realm_core(0.95.5)
include_directories(${REALM_CORE_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} impl external/pegtl)
include_directories(${REALM_CORE_INCLUDE_DIR} src external/pegtl)
set(SOURCES
index_set.cpp
list.cpp
object_schema.cpp
object_store.cpp
results.cpp
schema.cpp
shared_realm.cpp
impl/transact_log_handler.cpp
parser/parser.cpp
parser/query_builder.cpp)
if(APPLE)
include_directories(impl/apple)
list(APPEND SOURCES impl/apple/external_commit_helper.cpp)
find_library(CF_LIBRARY CoreFoundation)
endif()
add_library(realm-object-store SHARED ${SOURCES})
target_link_libraries(realm-object-store realm ${CF_LIBRARY})
add_subdirectory(src)
add_subdirectory(tests)

1
external/catch vendored Submodule

@ -0,0 +1 @@
Subproject commit f294c9847272b1b92c5119a6f711e57113b5f231

22
src/CMakeLists.txt Normal file
View File

@ -0,0 +1,22 @@
include_directories(impl)
set(SOURCES
index_set.cpp
list.cpp
object_schema.cpp
object_store.cpp
results.cpp
schema.cpp
shared_realm.cpp
impl/transact_log_handler.cpp
parser/parser.cpp
parser/query_builder.cpp)
if(APPLE)
include_directories(impl/apple)
list(APPEND SOURCES impl/apple/external_commit_helper.cpp)
find_library(CF_LIBRARY CoreFoundation)
endif()
add_library(realm-object-store SHARED ${SOURCES})
target_link_libraries(realm-object-store realm ${CF_LIBRARY})

5
tests/CMakeLists.txt Normal file
View File

@ -0,0 +1,5 @@
include_directories(../external/catch/single_include)
add_executable(tests main.cpp parser.cpp)
target_link_libraries(tests realm-object-store)
add_custom_target(run-tests USES_TERMINAL DEPENDS tests COMMAND ./tests)

2
tests/main.cpp Normal file
View File

@ -0,0 +1,2 @@
#define CATCH_CONFIG_MAIN
#include "catch.hpp"

View File

@ -1,10 +1,8 @@
#include "parser.hpp"
#include "catch.hpp"
#include "parser/parser.hpp"
#include <vector>
#include <string>
#include <exception>
#include <iostream>
static std::vector<std::string> valid_queries = {
// true/false predicates
@ -131,36 +129,16 @@ static std::vector<std::string> invalid_queries = {
"truepredicate & truepredicate",
};
namespace realm {
namespace parser {
bool test_grammar()
{
bool success = true;
for (auto &query : valid_queries) {
std::cout << "valid query: " << query << std::endl;
try {
realm::parser::parse(query);
} catch (std::exception &ex) {
std::cout << "FAILURE - " << ex.what() << std::endl;
success = false;
}
TEST_CASE("valid queries") {
for (auto& query : valid_queries) {
INFO("query: " << query);
CHECK_NOTHROW(realm::parser::parse(query));
}
}
for (auto &query : invalid_queries) {
std::cout << "invalid query: " << query << std::endl;
try {
realm::parser::parse(query);
} catch (std::exception &ex) {
// std::cout << "message: " << ex.what() << std::endl;
continue;
}
std::cout << "FAILURE - query should throw an exception" << std::endl;
success = false;
TEST_CASE("invalid queries") {
for (auto& query : invalid_queries) {
INFO("query: " << query);
CHECK_THROWS(realm::parser::parse(query));
}
return success;
}
}
}