From 22dc0efa706499b0caf848a38f8c7c49f1ec700a Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Sun, 19 Jul 2020 21:18:20 -0500 Subject: [PATCH] test: Add test to ensure Datafile throws when deleteInterval fails Signed-off-by: Shaun Ruffell --- test/.gitignore | 1 + test/CMakeLists.txt | 2 +- test/Datafile.t.cpp | 63 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 test/Datafile.t.cpp diff --git a/test/.gitignore b/test/.gitignore index b1716ac1..7ada9fc0 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -1,6 +1,7 @@ all.log AtomicFileTest data.t +Datafile.t DatetimeParser.t exclusion.t helper.t diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index df6221c0..5339eada 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -34,7 +34,7 @@ include_directories (${CMAKE_SOURCE_DIR} include_directories (${CMAKE_INSTALL_PREFIX}/include) link_directories(${CMAKE_INSTALL_PREFIX}/lib) -set (test_SRCS AtomicFileTest data.t DatetimeParser.t exclusion.t helper.t interval.t range.t rules.t util.t TagInfoDatabase.t) +set (test_SRCS AtomicFileTest data.t Datafile.t DatetimeParser.t exclusion.t helper.t interval.t range.t rules.t util.t TagInfoDatabase.t) add_custom_target (test ./run_all --verbose DEPENDS ${test_SRCS} timew_executable diff --git a/test/Datafile.t.cpp b/test/Datafile.t.cpp new file mode 100644 index 00000000..d15871cf --- /dev/null +++ b/test/Datafile.t.cpp @@ -0,0 +1,63 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020, Shaun Ruffell, Thomas Lauf. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// https://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include + +#include + +int main () +{ + UnitTest t (2); + TempDir tempDir; + + try + { + Datafile df; + Interval interval {Datetime ("2020-06-01T01:00:00"), Datetime ("2020-06-01T02:00:00")}; + + df.initialize ("2020-06.data"); + df.addInterval (interval); + + Interval modified {interval}; + modified.tag ("foo"); + + std::string message = "Datafile::deleteInterval throws on error"; + try { df.deleteInterval (modified); t.fail (message); } + catch (...) { t.pass (message); } + + message = "Datafile::deleteInterval does not throw on success"; + try { df.deleteInterval (interval); t.pass (message); } + catch (...) { t.fail (message); } + } + catch (...) + { + t.fail ("Uncaught exception"); + } + return 0; +} +