summaryrefslogtreecommitdiff
path: root/slicer/test
diff options
context:
space:
mode:
Diffstat (limited to 'slicer/test')
-rw-r--r--slicer/test/conversions.cpp27
-rw-r--r--slicer/test/initial/conv-datetime.xml1
-rw-r--r--slicer/test/preprocessor.cpp2
-rw-r--r--slicer/test/types.ice7
4 files changed, 36 insertions, 1 deletions
diff --git a/slicer/test/conversions.cpp b/slicer/test/conversions.cpp
index 552135c..b09be27 100644
--- a/slicer/test/conversions.cpp
+++ b/slicer/test/conversions.cpp
@@ -17,6 +17,33 @@ namespace Slicer {
}
std::string
+ isoDateToString(const ::TestModule::IsoDate & in)
+ {
+ struct tm tm;
+ memset(&tm, 0, sizeof(struct tm));
+ tm.tm_mday = in.day;
+ tm.tm_mon = in.month;
+ tm.tm_year = in.year;
+ mktime(&tm);
+ char buf[BUFSIZ];
+ auto len = strftime(buf, BUFSIZ, "%Y-%m-%d", &tm);
+ return std::string(buf, len);
+ }
+
+ ::TestModule::IsoDate
+ stringToIsoDate(const std::string & in)
+ {
+ struct tm tm;
+ memset(&tm, 0, sizeof(struct tm));
+ auto end = strptime(in.c_str(), "%Y-%m-%d", &tm);
+ if (!end || *end) {
+ throw std::runtime_error("Invalid iso-date string: " + in);
+ }
+ return ::TestModule::IsoDate({
+ SHORT(tm.tm_year), SHORT(tm.tm_mon), SHORT(tm.tm_mday)});
+ }
+
+ std::string
dateTimeToString(const ::TestModule::DateTime & in)
{
struct tm tm;
diff --git a/slicer/test/initial/conv-datetime.xml b/slicer/test/initial/conv-datetime.xml
index b4678b4..17cd6be 100644
--- a/slicer/test/initial/conv-datetime.xml
+++ b/slicer/test/initial/conv-datetime.xml
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<DateTimeContainer>
<dt>2014-Dec-25 12:13:14</dt>
+ <date>2014-06-26</date>
</DateTimeContainer>
diff --git a/slicer/test/preprocessor.cpp b/slicer/test/preprocessor.cpp
index 245d742..54099df 100644
--- a/slicer/test/preprocessor.cpp
+++ b/slicer/test/preprocessor.cpp
@@ -13,7 +13,7 @@
namespace fs = boost::filesystem;
-const unsigned int COMPONENTS_IN_TEST_ICE = 25;
+const unsigned int COMPONENTS_IN_TEST_ICE = 26;
BOOST_FIXTURE_TEST_SUITE ( preprocessor, FileStructure );
diff --git a/slicer/test/types.ice b/slicer/test/types.ice
index 62037a1..6339cd7 100644
--- a/slicer/test/types.ice
+++ b/slicer/test/types.ice
@@ -9,10 +9,17 @@ module TestModule {
short minute;
short second;
};
+ [ "slicer:conversion:std.string:stringToIsoDate:isoDateToString" ]
+ struct IsoDate {
+ short year;
+ short month;
+ short day;
+ };
class DateTimeContainer {
[ "slicer:conversion:boost.posix_time.ptime:ptimeToDateTime:dateTimeToPTime",
"slicer:conversion:std.string:stringToDateTime:dateTimeToString" ]
DateTime dt;
+ IsoDate date;
};
class BuiltIns {
bool mbool;