summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt6
-rw-r--r--src/CMakeLists.txt3
-rw-r--r--test/CMakeLists.txt35
-rw-r--r--test/expected_output.log21
-rwxr-xr-xtest/run_test.sh4
5 files changed, 67 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index abd531c..403d43f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,11 @@
cmake_minimum_required(VERSION 2.8.1)
+enable_testing()
+
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
+
add_subdirectory(src)
add_subdirectory(test)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index f3c80b2..f752b57 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -13,8 +13,7 @@ add_library(cxxrt-shared SHARED ${CXXRT_SOURCES})
set_target_properties(cxxrt-static cxxrt-shared PROPERTIES
OUTPUT_NAME "cxxrt"
- ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
- LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
+ )
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index e69de29..6e6ea58 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -0,0 +1,35 @@
+
+set(CXXTEST_SOURCES
+ test.cc
+ test_exception.cc
+ test_guard.cc
+ test_typeinfo.cc
+ )
+
+
+add_executable(cxxrt-test-static ${CXXTEST_SOURCES})
+target_link_libraries(cxxrt-test-static cxxrt-static pthread dl)
+
+add_executable(cxxrt-test-shared ${CXXTEST_SOURCES})
+target_link_libraries(cxxrt-test-shared cxxrt-shared pthread dl)
+
+add_executable(system-test ${CXXTEST_SOURCES})
+
+file(READ "${CMAKE_CURRENT_SOURCE_DIR}/expected_output.log" expected_output)
+
+add_test(system-test-test
+ ${CMAKE_CURRENT_SOURCE_DIR}/run_test.sh
+ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/system-test
+ ${CMAKE_CURRENT_SOURCE_DIR}/expected_output.log)
+
+add_test(cxxrt-test-static-test
+ ${CMAKE_CURRENT_SOURCE_DIR}/run_test.sh
+ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/cxxrt-test-static
+ ${CMAKE_CURRENT_SOURCE_DIR}/expected_output.log)
+
+add_test(cxxrt-test-shared-test
+ ${CMAKE_CURRENT_SOURCE_DIR}/run_test.sh
+ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/cxxrt-test-shared
+ ${CMAKE_CURRENT_SOURCE_DIR}/expected_output.log)
+
+
diff --git a/test/expected_output.log b/test/expected_output.log
new file mode 100644
index 0000000..6c95ecc
--- /dev/null
+++ b/test/expected_output.log
@@ -0,0 +1,21 @@
+Initialized static
+Initialized static
+Entering try
+Caught int 1!
+cl destroyed: 12
+Entering try
+Caught float 1.000000!
+cl destroyed: 12
+Entering try
+Caught struct {2}!
+cl destroyed: 12
+Entering try
+Caught struct {2}!
+cl destroyed: 12
+cl destroyed: 123
+Caught re-thrown float
+Entering try
+Caught int 0!
+cl destroyed: 12
+
+23 tests, 23 passed, 0 failed
diff --git a/test/run_test.sh b/test/run_test.sh
new file mode 100755
index 0000000..42795a7
--- /dev/null
+++ b/test/run_test.sh
@@ -0,0 +1,4 @@
+test_command=$1
+expected_output=$2
+$test_command > test_log 2>&1
+diff test_log $expected_output