From e2ae0a2fba924a0becb96ff839d305ee2ed131f3 Mon Sep 17 00:00:00 2001 From: Matthieu Dorier Date: Thu, 26 Apr 2018 11:46:49 +0200 Subject: [PATCH] added RunTest --- test/CMakeLists.txt | 4 ++ test/RunSetTest.hpp | 2 +- test/RunTest.cpp | 145 ++++++++++++++++++++++++++++++++++++++++++++ test/RunTest.hpp | 33 ++++++++++ 4 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 test/RunTest.cpp create mode 100644 test/RunTest.hpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index cf58be0..677f8d1 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -16,6 +16,10 @@ target_link_libraries(DataSetTest cppunit hepnos hepnos-service) add_executable(RunSetTest RunSetTest.cpp HEPnOSTestMain.cpp) target_link_libraries(RunSetTest cppunit hepnos hepnos-service) +add_executable(RunTest RunTest.cpp HEPnOSTestMain.cpp) +target_link_libraries(RunTest cppunit hepnos hepnos-service) + add_test(NAME DataStoreTest COMMAND run-test.sh ./DataStoreTest) add_test(NAME DataSetTest COMMAND run-test.sh ./DataSetTest) add_test(NAME RunSetTest COMMAND run-test.sh ./RunSetTest) +add_test(NAME RunTest COMMAND run-test.sh ./RunTest) diff --git a/test/RunSetTest.hpp b/test/RunSetTest.hpp index d09a189..1d7bcaa 100644 --- a/test/RunSetTest.hpp +++ b/test/RunSetTest.hpp @@ -13,8 +13,8 @@ class RunSetTest : public CppUnit::TestFixture CPPUNIT_TEST( testParenthesisOperator ); CPPUNIT_TEST( testFind ); CPPUNIT_TEST( testBeginEnd ); - CPPUNIT_TEST( testCreateSubRuns ); CPPUNIT_TEST( testLowerUpperBounds ); + CPPUNIT_TEST( testCreateSubRuns ); CPPUNIT_TEST_SUITE_END(); public: diff --git a/test/RunTest.cpp b/test/RunTest.cpp new file mode 100644 index 0000000..625e623 --- /dev/null +++ b/test/RunTest.cpp @@ -0,0 +1,145 @@ +#include "RunTest.hpp" +#include "CppUnitAdditionalMacros.hpp" + +CPPUNIT_TEST_SUITE_REGISTRATION( RunTest ); + +using namespace hepnos; + +void RunTest::setUp() {} + +void RunTest::tearDown() {} + +void RunTest::testFillDataStore() { + + auto mds = datastore->createDataSet("matthieu"); + CPPUNIT_ASSERT(mds.valid()); + Run r1 = mds.createRun(42); + CPPUNIT_ASSERT(r1.valid()); +} + +void RunTest::testCreateSubRuns() { + DataSet mds = (*datastore)["matthieu"]; + CPPUNIT_ASSERT(mds.valid()); + Run r1 = mds(42); + + SubRun sr10 = r1.createSubRun(10); + CPPUNIT_ASSERT(sr10.valid()); + CPPUNIT_ASSERT(10 == sr10.number()); + + SubRun sr23 = r1.createSubRun(23); + CPPUNIT_ASSERT(sr23.valid()); + CPPUNIT_ASSERT(23 == sr23.number()); + + SubRun sr13 = r1.createSubRun(13); + CPPUNIT_ASSERT(sr13.valid()); + CPPUNIT_ASSERT(13 == sr13.number()); + + SubRun sr38 = r1.createSubRun(38); + CPPUNIT_ASSERT(sr38.valid()); + CPPUNIT_ASSERT(38 == sr38.number()); +} + +void RunTest::testParenthesisOperator() { + DataSet mds = (*datastore)["matthieu"]; + CPPUNIT_ASSERT(mds.valid()); + + Run r1 = mds(42); + CPPUNIT_ASSERT(r1.valid()); + + // check access to non-existing SubRun + SubRun sr0 = r1(12); + CPPUNIT_ASSERT(!sr0.valid()); + CPPUNIT_ASSERT(sr0.number() == InvalidSubRunNumber); + + // check access to existing SubRun + SubRun sr13 = r1(13); + CPPUNIT_ASSERT(sr13.valid()); + CPPUNIT_ASSERT(13 == sr13.number()); +} + +void RunTest::testFind() { + DataSet mds = (*datastore)["matthieu"]; + CPPUNIT_ASSERT(mds.valid()); + Run r1 = mds(42); + CPPUNIT_ASSERT(r1.valid()); + // test calling find for a SubRun that does not exist + { + auto it = r1.find(12); + CPPUNIT_ASSERT(it == r1.end()); + CPPUNIT_ASSERT(!(it->valid())); + } + // test calling find for a SubRun that exists + { + auto it = r1.find(13); + CPPUNIT_ASSERT(it != r1.end()); + CPPUNIT_ASSERT(it->valid()); + CPPUNIT_ASSERT(13 == it->number()); + // test iteration + ++it; + CPPUNIT_ASSERT(it->valid()); + CPPUNIT_ASSERT(23 == it->number()); + } +} + +void RunTest::testBeginEnd() { + DataSet mds = (*datastore)["matthieu"]; + CPPUNIT_ASSERT(mds.valid()); + Run r1 = mds(42); + CPPUNIT_ASSERT(r1.valid()); + + std::vector numbers = {10, 13, 23, 38}; + auto it = r1.begin(); + for(int i=0; i < numbers.size(); i++, it++) { + CPPUNIT_ASSERT_EQUAL(numbers[i], it->number()); + } + CPPUNIT_ASSERT(it == r1.end()); +} + +void RunTest::testLowerUpperBounds() { + DataSet mds = (*datastore)["matthieu"]; + CPPUNIT_ASSERT(mds.valid()); + Run r1 = mds(42); + CPPUNIT_ASSERT(r1.valid()); + + { + auto it = r1.lower_bound(13); + CPPUNIT_ASSERT(it->valid()); + CPPUNIT_ASSERT(it->number() == 13); + } + { + auto it = r1.lower_bound(14); + CPPUNIT_ASSERT(it->valid()); + CPPUNIT_ASSERT(it->number() == 23); + } + { + auto it = r1.lower_bound(12); + CPPUNIT_ASSERT(it->valid()); + CPPUNIT_ASSERT(it->number() == 13); + } + { + auto it = r1.lower_bound(40); + CPPUNIT_ASSERT(!(it->valid())); + CPPUNIT_ASSERT(it == r1.end()); + } + { + auto it = r1.upper_bound(13); + CPPUNIT_ASSERT(it->valid()); + CPPUNIT_ASSERT(it->number() == 23); + } + { + auto it = r1.upper_bound(14); + CPPUNIT_ASSERT(it->valid()); + CPPUNIT_ASSERT(it->number() == 23); + } + { + auto it = r1.upper_bound(12); + CPPUNIT_ASSERT(it->valid()); + CPPUNIT_ASSERT(it->number() == 13); + } + { + auto it = r1.upper_bound(38); + CPPUNIT_ASSERT(!(it->valid())); + CPPUNIT_ASSERT(it == r1.end()); + } +} + diff --git a/test/RunTest.hpp b/test/RunTest.hpp new file mode 100644 index 0000000..6614bb8 --- /dev/null +++ b/test/RunTest.hpp @@ -0,0 +1,33 @@ +#ifndef __HEPNOS_TEST_RUN_H +#define __HEPNOS_TEST_RUN_H + +#include +#include + +extern hepnos::DataStore* datastore; + +class RunTest : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE( RunTest ); + CPPUNIT_TEST( testFillDataStore ); + CPPUNIT_TEST( testCreateSubRuns ); + CPPUNIT_TEST( testParenthesisOperator ); + CPPUNIT_TEST( testFind ); + CPPUNIT_TEST( testBeginEnd ); + CPPUNIT_TEST( testLowerUpperBounds ); + CPPUNIT_TEST_SUITE_END(); + + public: + + void setUp(); + void tearDown(); + + void testFillDataStore(); + void testCreateSubRuns(); + void testParenthesisOperator(); + void testFind(); + void testBeginEnd(); + void testLowerUpperBounds(); +}; + +#endif -- 2.26.2