summaryrefslogtreecommitdiff
path: root/slicer/test/run-slicer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'slicer/test/run-slicer.cpp')
-rw-r--r--slicer/test/run-slicer.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/slicer/test/run-slicer.cpp b/slicer/test/run-slicer.cpp
index 0044c64..73d5be8 100644
--- a/slicer/test/run-slicer.cpp
+++ b/slicer/test/run-slicer.cpp
@@ -6,6 +6,7 @@
#include <json/serializer.h>
#include <boost/filesystem/convenience.hpp>
#include <boost/filesystem/operations.hpp>
+#include <boost/numeric/conversion/cast.hpp>
#include <boost/format.hpp>
#include <boost/function.hpp>
#include <boost/assert.hpp>
@@ -15,6 +16,49 @@
#include "helpers.h"
namespace fs = boost::filesystem;
+#define SHORT(x) boost::numeric_cast< ::Ice::Short >(x)
+
+namespace Slicer {
+ boost::posix_time::ptime
+ dateTimeToPTime(const ::TestModule::DateTime &)
+ {
+ throw std::runtime_error("Not implemented");
+ }
+
+ ::TestModule::DateTime
+ ptimeToDateTime(const boost::posix_time::ptime &)
+ {
+ throw std::runtime_error("Not implemented");
+ }
+
+ std::string
+ dateTimeToString(const ::TestModule::DateTime & in)
+ {
+ char buf[BUFSIZ];
+ struct tm tm({ in.second, in.minute, in.hour, in.day, in.month, in.year, 0, 0, 0
+#ifdef _BSD_SOURCE
+ , 0, 0
+#endif
+ });
+ mktime(&tm);
+ auto len = strftime(buf, BUFSIZ, "%Y-%b-%d %H:%M:%S", &tm);
+ return std::string(buf, len);
+ }
+
+ ::TestModule::DateTime
+ stringToDateTime(const std::string & in)
+ {
+ struct tm tm;
+ memset(&tm, 0, sizeof(struct tm));
+ auto end = strptime(in.c_str(), "%Y-%b-%d %H:%M:%S", &tm);
+ if (!end || *end) {
+ throw std::runtime_error("Invalid date string: " + in);
+ }
+ return ::TestModule::DateTime({
+ SHORT(tm.tm_year), SHORT(tm.tm_mon), SHORT(tm.tm_mday),
+ SHORT(tm.tm_hour), SHORT(tm.tm_min), SHORT(tm.tm_sec)});
+ }
+}
template<typename T, typename SerializerIn>
void
@@ -200,6 +244,7 @@ main(int, char ** argv)
verifyByFile<TestModule::Optionals, Slicer::XmlFile>(root, tmpf, "optionals-areset.xml", checkOptionals_areset);
verifyByFile<TestModule::InheritanceCont, Slicer::XmlFile>(root, tmpf, "inherit-a.xml");
verifyByFile<TestModule::InheritanceCont, Slicer::XmlFile>(root, tmpf, "inherit-b.xml");
+ verifyByFile<TestModule::DateTimeContainer, Slicer::XmlFile>(root, tmpf, "conv-datetime.xml");
verifyByFile<TestModule::BuiltIns, Slicer::JsonFile>(root, tmpf, "builtins2.json", checkBuiltIns_valuesCorrect);
verifyByFile<TestModule::Optionals, Slicer::JsonFile>(root, tmpf, "optionals-areset2.json", checkOptionals_areset);