diff --git a/test/data.t.cpp b/test/data.t.cpp index 0895e6b5..94ac6c4b 100644 --- a/test/data.t.cpp +++ b/test/data.t.cpp @@ -31,7 +31,7 @@ //////////////////////////////////////////////////////////////////////////////// int main (int, char**) { - UnitTest t (36); + UnitTest t (41); // std::vector collapse (const Interval&, std::vector &); Interval i1; @@ -142,6 +142,19 @@ int main (int, char**) t.ok (r1.start == Datetime (2016, 5, 1, 0, 0, 0), "getFullDay 2016-05-01T20:31:23 -> start 2016-05-01T00:00:00"); t.ok (r1.end == Datetime (2016, 5, 1, 23, 59, 59), "getFullDay 2016-05-01T20:31:23 -> end 2016-05-01T23:59:59"); + // std::vector subtractRanges (const Range&, const std::vector &, const std::vector &); + // Subtract three non-overlapping ranges from a full day, yielding two resultant rangeṡ. + Range limit (Datetime ("20160101T000000"), Datetime ("20160101T235959")); + exclusions = {Range (Datetime ("20160101T000000"), Datetime ("20160101T080000")), + Range (Datetime ("20160101T120000"), Datetime ("20160101T130000")), + Range (Datetime ("20160101T173000"), Datetime ("20160101T235959"))}; + auto subtracted = subtractRanges (limit, {limit}, exclusions); + t.ok (subtracted.size () == 2, "subtractRanges: all_day - 3 non-adjacent ranges = 2 ranges"); + t.ok (subtracted[0].start == Datetime (2016, 1, 1, 8, 0, 0), "subtractRanges: results[0].start = 20160101T080000"); + t.ok (subtracted[0].end == Datetime (2016, 1, 1, 12, 0, 0), "subtractRanges: results[0].end = 20160101T120000"); + t.ok (subtracted[1].start == Datetime (2016, 1, 1, 13, 0, 0), "subtractRanges: results[1].start = 20160101T130000"); + t.ok (subtracted[1].end == Datetime (2016, 1, 1, 17, 30, 0), "subtractRanges: results[1].end = 20160101T173000"); + return 0; }