diff --git a/test/exclusion.t.cpp b/test/exclusion.t.cpp index ebada2e0..7d4e0d65 100644 --- a/test/exclusion.t.cpp +++ b/test/exclusion.t.cpp @@ -34,10 +34,22 @@ //////////////////////////////////////////////////////////////////////////////// int main (int, char**) { - UnitTest t (60); + UnitTest t (253); try { + // These tests cover a range from 2015-12-15 to 2016-01-15. + // + // December 2015 January 2016 + // Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa + // 1 2 3 4 5 1 2 + // 6 7 8 9 10 11 12 3 4 5 6 7 8 9 + // 13 14 15 16 17 18 19 10 11 12 13 14 15 16 + // 20 21 22 23 24 25 26 17 18 19 20 21 22 23 + // 27 28 29 30 31 24 25 26 27 28 29 30 + // 31 + Daterange r (Datetime ("2015-12-15"), Datetime ("2016-01-15")); + // exc monday <8:00:00 12:00:00-12:45:00 >17:30:00 Exclusion e; e.initialize ("exc monday <8:00:00 12:00:00-12:45:00 >17:30:00"); @@ -49,6 +61,36 @@ int main (int, char**) t.is (tokens[3], "12:00:00-12:45:00", "Exclusion 'exc monday <8:00:00 12:00:00-12:45:00 >17:30:00' [3] --> '12:00:00-12:45:00'"); t.is (tokens[4], ">17:30:00", "Exclusion 'exc monday <8:00:00 12:00:00-12:45:00 >17:30:00' [4] --> '>17:30:00'"); + auto ranges = e.ranges (r); + t.ok (ranges.size () == 12, "Exclusion ranges --> [12]"); + t.is (ranges[0].start ().toISOLocalExtended (), "2015-12-21T00:00:00", "Exclusion range[0].start() --> 2015-12-21T00:00:00"); + t.is (ranges[0].end ().toISOLocalExtended (), "2015-12-21T08:00:00", "Exclusion range[0].end() --> 2015-12-21T08:00:00"); + t.is (ranges[1].start ().toISOLocalExtended (), "2015-12-21T12:00:00", "Exclusion range[1].start() --> 2015-12-21T12:00:00"); + t.is (ranges[1].end ().toISOLocalExtended (), "2015-12-21T12:45:00", "Exclusion range[1].end() --> 2015-12-21T12:45:00"); + t.is (ranges[2].start ().toISOLocalExtended (), "2015-12-21T17:30:00", "Exclusion range[2].start() --> 2015-12-21T17:30:00"); + t.is (ranges[2].end ().toISOLocalExtended (), "2015-12-22T00:00:00", "Exclusion range[2].end() --> 2015-12-22T00:00:00"); + + t.is (ranges[3].start ().toISOLocalExtended (), "2015-12-28T00:00:00", "Exclusion range[3].start() --> 2015-12-28T00:00:00"); + t.is (ranges[3].end ().toISOLocalExtended (), "2015-12-28T08:00:00", "Exclusion range[3].end() --> 2015-12-28T08:00:00"); + t.is (ranges[4].start ().toISOLocalExtended (), "2015-12-28T12:00:00", "Exclusion range[4].start() --> 2015-12-28T12:00:00"); + t.is (ranges[4].end ().toISOLocalExtended (), "2015-12-28T12:45:00", "Exclusion range[4].end() --> 2015-12-28T12:45:00"); + t.is (ranges[5].start ().toISOLocalExtended (), "2015-12-28T17:30:00", "Exclusion range[5].start() --> 2015-12-28T17:30:00"); + t.is (ranges[5].end ().toISOLocalExtended (), "2015-12-29T00:00:00", "Exclusion range[5].end() --> 2015-12-29T00:00:00"); + + t.is (ranges[6].start ().toISOLocalExtended (), "2016-01-04T00:00:00", "Exclusion range[6].start() --> 2016-01-04T00:00:00"); + t.is (ranges[6].end ().toISOLocalExtended (), "2016-01-04T08:00:00", "Exclusion range[6].end() --> 2016-01-04T08:00:00"); + t.is (ranges[7].start ().toISOLocalExtended (), "2016-01-04T12:00:00", "Exclusion range[7].start() --> 2016-01-04T12:00:00"); + t.is (ranges[7].end ().toISOLocalExtended (), "2016-01-04T12:45:00", "Exclusion range[7].end() --> 2016-01-04T12:45:00"); + t.is (ranges[8].start ().toISOLocalExtended (), "2016-01-04T17:30:00", "Exclusion range[8].start() --> 2016-01-04T17:30:00"); + t.is (ranges[8].end ().toISOLocalExtended (), "2016-01-05T00:00:00", "Exclusion range[8].end() --> 2016-01-05T00:00:00"); + + t.is (ranges[9].start ().toISOLocalExtended (), "2016-01-11T00:00:00", "Exclusion range[9].start() --> 2016-01-11T00:00:00"); + t.is (ranges[9].end ().toISOLocalExtended (), "2016-01-11T08:00:00", "Exclusion range[9].end() --> 2016-01-11T08:00:00"); + t.is (ranges[10].start ().toISOLocalExtended (), "2016-01-11T12:00:00", "Exclusion range[10].start() --> 2016-01-11T12:00:00"); + t.is (ranges[10].end ().toISOLocalExtended (), "2016-01-11T12:45:00", "Exclusion range[10].end() --> 2016-01-11T12:45:00"); + t.is (ranges[11].start ().toISOLocalExtended (), "2016-01-11T17:30:00", "Exclusion range[11].start() --> 2016-01-11T17:30:00"); + t.is (ranges[11].end ().toISOLocalExtended (), "2016-01-12T00:00:00", "Exclusion range[11].end() --> 2016-01-12T00:00:00"); + e.initialize ("exc tuesday <8:00:00 12:00:00-12:45:00 >17:30:00"); tokens = e.tokens (); t.ok (tokens.size () == 5, "Exclusion 'exc tuesday <8:00:00 12:00:00-12:45:00 >17:30:00' --> 5"); @@ -58,6 +100,43 @@ int main (int, char**) t.is (tokens[3], "12:00:00-12:45:00", "Exclusion 'exc tuesday <8:00:00 12:00:00-12:45:00 >17:30:00' [3] --> '12:00:00-12:45:00'"); t.is (tokens[4], ">17:30:00", "Exclusion 'exc tuesday <8:00:00 12:00:00-12:45:00 >17:30:00' [4] --> '>17:30:00'"); + ranges = e.ranges (r); + t.ok (ranges.size () == 15, "Exclusion ranges --> [15]"); + t.is (ranges[0].start ().toISOLocalExtended (), "2015-12-15T00:00:00", "Exclusion range[0].start() --> 2015-12-15T00:00:00"); + t.is (ranges[0].end ().toISOLocalExtended (), "2015-12-15T08:00:00", "Exclusion range[0].end() --> 2015-12-15T08:00:00"); + t.is (ranges[1].start ().toISOLocalExtended (), "2015-12-15T12:00:00", "Exclusion range[1].start() --> 2015-12-15T12:00:00"); + t.is (ranges[1].end ().toISOLocalExtended (), "2015-12-15T12:45:00", "Exclusion range[1].end() --> 2015-12-15T12:45:00"); + t.is (ranges[2].start ().toISOLocalExtended (), "2015-12-15T17:30:00", "Exclusion range[2].start() --> 2015-12-15T17:30:00"); + t.is (ranges[2].end ().toISOLocalExtended (), "2015-12-16T00:00:00", "Exclusion range[2].end() --> 2015-12-16T00:00:00"); + + t.is (ranges[3].start ().toISOLocalExtended (), "2015-12-22T00:00:00", "Exclusion range[3].start() --> 2015-12-22T00:00:00"); + t.is (ranges[3].end ().toISOLocalExtended (), "2015-12-22T08:00:00", "Exclusion range[3].end() --> 2015-12-22T08:00:00"); + t.is (ranges[4].start ().toISOLocalExtended (), "2015-12-22T12:00:00", "Exclusion range[4].start() --> 2015-12-22T12:00:00"); + t.is (ranges[4].end ().toISOLocalExtended (), "2015-12-22T12:45:00", "Exclusion range[4].end() --> 2015-12-22T12:45:00"); + t.is (ranges[5].start ().toISOLocalExtended (), "2015-12-22T17:30:00", "Exclusion range[5].start() --> 2015-12-22T17:30:00"); + t.is (ranges[5].end ().toISOLocalExtended (), "2015-12-23T00:00:00", "Exclusion range[5].end() --> 2015-12-23T00:00:00"); + + t.is (ranges[6].start ().toISOLocalExtended (), "2015-12-29T00:00:00", "Exclusion range[6].start() --> 2015-12-29T00:00:00"); + t.is (ranges[6].end ().toISOLocalExtended (), "2015-12-29T08:00:00", "Exclusion range[6].end() --> 2015-12-29T08:00:00"); + t.is (ranges[7].start ().toISOLocalExtended (), "2015-12-29T12:00:00", "Exclusion range[7].start() --> 2015-12-29T12:00:00"); + t.is (ranges[7].end ().toISOLocalExtended (), "2015-12-29T12:45:00", "Exclusion range[7].end() --> 2015-12-29T12:45:00"); + t.is (ranges[8].start ().toISOLocalExtended (), "2015-12-29T17:30:00", "Exclusion range[8].start() --> 2015-12-29T17:30:00"); + t.is (ranges[8].end ().toISOLocalExtended (), "2015-12-30T00:00:00", "Exclusion range[8].end() --> 2015-12-30T00:00:00"); + + t.is (ranges[9].start ().toISOLocalExtended (), "2016-01-05T00:00:00", "Exclusion range[9].start() --> 2016-01-05T00:00:00"); + t.is (ranges[9].end ().toISOLocalExtended (), "2016-01-05T08:00:00", "Exclusion range[9].end() --> 2016-01-05T08:00:00"); + t.is (ranges[10].start ().toISOLocalExtended (), "2016-01-05T12:00:00", "Exclusion range[10].start() --> 2016-01-05T12:00:00"); + t.is (ranges[10].end ().toISOLocalExtended (), "2016-01-05T12:45:00", "Exclusion range[10].end() --> 2016-01-05T12:45:00"); + t.is (ranges[11].start ().toISOLocalExtended (), "2016-01-05T17:30:00", "Exclusion range[11].start() --> 2016-01-05T17:30:00"); + t.is (ranges[11].end ().toISOLocalExtended (), "2016-01-06T00:00:00", "Exclusion range[11].end() --> 2016-01-06T00:00:00"); + + t.is (ranges[12].start ().toISOLocalExtended (), "2016-01-12T00:00:00", "Exclusion range[12].start() --> 2016-01-12T00:00:00"); + t.is (ranges[12].end ().toISOLocalExtended (), "2016-01-12T08:00:00", "Exclusion range[12].end() --> 2016-01-12T08:00:00"); + t.is (ranges[13].start ().toISOLocalExtended (), "2016-01-12T12:00:00", "Exclusion range[13].start() --> 2016-01-12T12:00:00"); + t.is (ranges[13].end ().toISOLocalExtended (), "2016-01-12T12:45:00", "Exclusion range[13].end() --> 2016-01-12T12:45:00"); + t.is (ranges[14].start ().toISOLocalExtended (), "2016-01-12T17:30:00", "Exclusion range[14].start() --> 2016-01-12T17:30:00"); + t.is (ranges[14].end ().toISOLocalExtended (), "2016-01-13T00:00:00", "Exclusion range[14].end() --> 2016-01-13T00:00:00"); + e.initialize ("exc wednesday <8:00:00 12:00:00-12:45:00 >17:30:00"); tokens = e.tokens (); t.ok (tokens.size () == 5, "Exclusion 'exc wednesday <8:00:00 12:00:00-12:45:00 >17:30:00' --> 5"); @@ -67,6 +146,43 @@ int main (int, char**) t.is (tokens[3], "12:00:00-12:45:00", "Exclusion 'exc wednesday <8:00:00 12:00:00-12:45:00 >17:30:00' [3] --> '12:00:00-12:45:00'"); t.is (tokens[4], ">17:30:00", "Exclusion 'exc wednesday <8:00:00 12:00:00-12:45:00 >17:30:00' [4] --> '>17:30:00'"); + ranges = e.ranges (r); + t.ok (ranges.size () == 15, "Exclusion ranges --> [15]"); + t.is (ranges[0].start ().toISOLocalExtended (), "2015-12-16T00:00:00", "Exclusion range[0].start() --> 2015-12-16T00:00:00"); + t.is (ranges[0].end ().toISOLocalExtended (), "2015-12-16T08:00:00", "Exclusion range[0].end() --> 2015-12-16T08:00:00"); + t.is (ranges[1].start ().toISOLocalExtended (), "2015-12-16T12:00:00", "Exclusion range[1].start() --> 2015-12-16T12:00:00"); + t.is (ranges[1].end ().toISOLocalExtended (), "2015-12-16T12:45:00", "Exclusion range[1].end() --> 2015-12-16T12:45:00"); + t.is (ranges[2].start ().toISOLocalExtended (), "2015-12-16T17:30:00", "Exclusion range[2].start() --> 2015-12-16T17:30:00"); + t.is (ranges[2].end ().toISOLocalExtended (), "2015-12-17T00:00:00", "Exclusion range[2].end() --> 2015-12-17T00:00:00"); + + t.is (ranges[3].start ().toISOLocalExtended (), "2015-12-23T00:00:00", "Exclusion range[3].start() --> 2015-12-23T00:00:00"); + t.is (ranges[3].end ().toISOLocalExtended (), "2015-12-23T08:00:00", "Exclusion range[3].end() --> 2015-12-23T08:00:00"); + t.is (ranges[4].start ().toISOLocalExtended (), "2015-12-23T12:00:00", "Exclusion range[4].start() --> 2015-12-23T12:00:00"); + t.is (ranges[4].end ().toISOLocalExtended (), "2015-12-23T12:45:00", "Exclusion range[4].end() --> 2015-12-23T12:45:00"); + t.is (ranges[5].start ().toISOLocalExtended (), "2015-12-23T17:30:00", "Exclusion range[5].start() --> 2015-12-23T17:30:00"); + t.is (ranges[5].end ().toISOLocalExtended (), "2015-12-24T00:00:00", "Exclusion range[5].end() --> 2015-12-24T00:00:00"); + + t.is (ranges[6].start ().toISOLocalExtended (), "2015-12-30T00:00:00", "Exclusion range[6].start() --> 2015-12-30T00:00:00"); + t.is (ranges[6].end ().toISOLocalExtended (), "2015-12-30T08:00:00", "Exclusion range[6].end() --> 2015-12-30T08:00:00"); + t.is (ranges[7].start ().toISOLocalExtended (), "2015-12-30T12:00:00", "Exclusion range[7].start() --> 2015-12-30T12:00:00"); + t.is (ranges[7].end ().toISOLocalExtended (), "2015-12-30T12:45:00", "Exclusion range[7].end() --> 2015-12-30T12:45:00"); + t.is (ranges[8].start ().toISOLocalExtended (), "2015-12-30T17:30:00", "Exclusion range[8].start() --> 2015-12-30T17:30:00"); + t.is (ranges[8].end ().toISOLocalExtended (), "2015-12-31T00:00:00", "Exclusion range[8].end() --> 2015-12-31T00:00:00"); + + t.is (ranges[9].start ().toISOLocalExtended (), "2016-01-06T00:00:00", "Exclusion range[9].start() --> 2016-01-06T00:00:00"); + t.is (ranges[9].end ().toISOLocalExtended (), "2016-01-06T08:00:00", "Exclusion range[9].end() --> 2016-01-06T08:00:00"); + t.is (ranges[10].start ().toISOLocalExtended (), "2016-01-06T12:00:00", "Exclusion range[10].start() --> 2016-01-06T12:00:00"); + t.is (ranges[10].end ().toISOLocalExtended (), "2016-01-06T12:45:00", "Exclusion range[10].end() --> 2016-01-06T12:45:00"); + t.is (ranges[11].start ().toISOLocalExtended (), "2016-01-06T17:30:00", "Exclusion range[11].start() --> 2016-01-06T17:30:00"); + t.is (ranges[11].end ().toISOLocalExtended (), "2016-01-07T00:00:00", "Exclusion range[11].end() --> 2016-01-07T00:00:00"); + + t.is (ranges[12].start ().toISOLocalExtended (), "2016-01-13T00:00:00", "Exclusion range[12].start() --> 2016-01-13T00:00:00"); + t.is (ranges[12].end ().toISOLocalExtended (), "2016-01-13T08:00:00", "Exclusion range[12].end() --> 2016-01-13T08:00:00"); + t.is (ranges[13].start ().toISOLocalExtended (), "2016-01-13T12:00:00", "Exclusion range[13].start() --> 2016-01-13T12:00:00"); + t.is (ranges[13].end ().toISOLocalExtended (), "2016-01-13T12:45:00", "Exclusion range[13].end() --> 2016-01-13T12:45:00"); + t.is (ranges[14].start ().toISOLocalExtended (), "2016-01-13T17:30:00", "Exclusion range[14].start() --> 2016-01-13T17:30:00"); + t.is (ranges[14].end ().toISOLocalExtended (), "2016-01-14T00:00:00", "Exclusion range[14].end() --> 2016-01-14T00:00:00"); + e.initialize ("exc thursday <8:00:00 12:00:00-12:45:00 >17:30:00"); tokens = e.tokens (); t.ok (tokens.size () == 5, "Exclusion 'exc thursday <8:00:00 12:00:00-12:45:00 >17:30:00' --> 5"); @@ -76,6 +192,43 @@ int main (int, char**) t.is (tokens[3], "12:00:00-12:45:00", "Exclusion 'exc thursday <8:00:00 12:00:00-12:45:00 >17:30:00' [3] --> '12:00:00-12:45:00'"); t.is (tokens[4], ">17:30:00", "Exclusion 'exc thursday <8:00:00 12:00:00-12:45:00 >17:30:00' [4] --> '>17:30:00'"); + ranges = e.ranges (r); + t.ok (ranges.size () == 15, "Exclusion ranges --> [15]"); + t.is (ranges[0].start ().toISOLocalExtended (), "2015-12-17T00:00:00", "Exclusion range[0].start() --> 2015-12-17T00:00:00"); + t.is (ranges[0].end ().toISOLocalExtended (), "2015-12-17T08:00:00", "Exclusion range[0].end() --> 2015-12-17T08:00:00"); + t.is (ranges[1].start ().toISOLocalExtended (), "2015-12-17T12:00:00", "Exclusion range[1].start() --> 2015-12-17T12:00:00"); + t.is (ranges[1].end ().toISOLocalExtended (), "2015-12-17T12:45:00", "Exclusion range[1].end() --> 2015-12-17T12:45:00"); + t.is (ranges[2].start ().toISOLocalExtended (), "2015-12-17T17:30:00", "Exclusion range[2].start() --> 2015-12-17T17:30:00"); + t.is (ranges[2].end ().toISOLocalExtended (), "2015-12-18T00:00:00", "Exclusion range[2].end() --> 2015-12-18T00:00:00"); + + t.is (ranges[3].start ().toISOLocalExtended (), "2015-12-24T00:00:00", "Exclusion range[3].start() --> 2015-12-24T00:00:00"); + t.is (ranges[3].end ().toISOLocalExtended (), "2015-12-24T08:00:00", "Exclusion range[3].end() --> 2015-12-24T08:00:00"); + t.is (ranges[4].start ().toISOLocalExtended (), "2015-12-24T12:00:00", "Exclusion range[4].start() --> 2015-12-24T12:00:00"); + t.is (ranges[4].end ().toISOLocalExtended (), "2015-12-24T12:45:00", "Exclusion range[4].end() --> 2015-12-24T12:45:00"); + t.is (ranges[5].start ().toISOLocalExtended (), "2015-12-24T17:30:00", "Exclusion range[5].start() --> 2015-12-24T17:30:00"); + t.is (ranges[5].end ().toISOLocalExtended (), "2015-12-25T00:00:00", "Exclusion range[5].end() --> 2015-12-25T00:00:00"); + + t.is (ranges[6].start ().toISOLocalExtended (), "2015-12-31T00:00:00", "Exclusion range[6].start() --> 2015-12-31T00:00:00"); + t.is (ranges[6].end ().toISOLocalExtended (), "2015-12-31T08:00:00", "Exclusion range[6].end() --> 2015-12-31T08:00:00"); + t.is (ranges[7].start ().toISOLocalExtended (), "2015-12-31T12:00:00", "Exclusion range[7].start() --> 2015-12-31T12:00:00"); + t.is (ranges[7].end ().toISOLocalExtended (), "2015-12-31T12:45:00", "Exclusion range[7].end() --> 2015-12-31T12:45:00"); + t.is (ranges[8].start ().toISOLocalExtended (), "2015-12-31T17:30:00", "Exclusion range[8].start() --> 2015-12-31T17:30:00"); + t.is (ranges[8].end ().toISOLocalExtended (), "2016-01-01T00:00:00", "Exclusion range[8].end() --> 2016-01-01T00:00:00"); + + t.is (ranges[9].start ().toISOLocalExtended (), "2016-01-07T00:00:00", "Exclusion range[9].start() --> 2016-01-07T00:00:00"); + t.is (ranges[9].end ().toISOLocalExtended (), "2016-01-07T08:00:00", "Exclusion range[9].end() --> 2016-01-07T08:00:00"); + t.is (ranges[10].start ().toISOLocalExtended (), "2016-01-07T12:00:00", "Exclusion range[10].start() --> 2016-01-07T12:00:00"); + t.is (ranges[10].end ().toISOLocalExtended (), "2016-01-07T12:45:00", "Exclusion range[10].end() --> 2016-01-07T12:45:00"); + t.is (ranges[11].start ().toISOLocalExtended (), "2016-01-07T17:30:00", "Exclusion range[11].start() --> 2016-01-07T17:30:00"); + t.is (ranges[11].end ().toISOLocalExtended (), "2016-01-08T00:00:00", "Exclusion range[11].end() --> 2016-01-08T00:00:00"); + + t.is (ranges[12].start ().toISOLocalExtended (), "2016-01-14T00:00:00", "Exclusion range[12].start() --> 2016-01-14T00:00:00"); + t.is (ranges[12].end ().toISOLocalExtended (), "2016-01-14T08:00:00", "Exclusion range[12].end() --> 2016-01-14T08:00:00"); + t.is (ranges[13].start ().toISOLocalExtended (), "2016-01-14T12:00:00", "Exclusion range[13].start() --> 2016-01-14T12:00:00"); + t.is (ranges[13].end ().toISOLocalExtended (), "2016-01-14T12:45:00", "Exclusion range[13].end() --> 2016-01-14T12:45:00"); + t.is (ranges[14].start ().toISOLocalExtended (), "2016-01-14T17:30:00", "Exclusion range[14].start() --> 2016-01-14T17:30:00"); + t.is (ranges[14].end ().toISOLocalExtended (), "2016-01-15T00:00:00", "Exclusion range[14].end() --> 2016-01-15T00:00:00"); + e.initialize ("exc friday <8:00:00 12:00:00-12:45:00 >17:30:00"); tokens = e.tokens (); t.ok (tokens.size () == 5, "Exclusion 'exc friday <8:00:00 12:00:00-12:45:00 >17:30:00' --> 5"); @@ -85,6 +238,36 @@ int main (int, char**) t.is (tokens[3], "12:00:00-12:45:00", "Exclusion 'exc friday <8:00:00 12:00:00-12:45:00 >17:30:00' [3] --> '12:00:00-12:45:00'"); t.is (tokens[4], ">17:30:00", "Exclusion 'exc friday <8:00:00 12:00:00-12:45:00 >17:30:00' [4] --> '>17:30:00'"); + ranges = e.ranges (r); + t.ok (ranges.size () == 12, "Exclusion ranges --> [12]"); + t.is (ranges[0].start ().toISOLocalExtended (), "2015-12-18T00:00:00", "Exclusion range[0].start() --> 2015-12-18T00:00:00"); + t.is (ranges[0].end ().toISOLocalExtended (), "2015-12-18T08:00:00", "Exclusion range[0].end() --> 2015-12-18T08:00:00"); + t.is (ranges[1].start ().toISOLocalExtended (), "2015-12-18T12:00:00", "Exclusion range[1].start() --> 2015-12-18T12:00:00"); + t.is (ranges[1].end ().toISOLocalExtended (), "2015-12-18T12:45:00", "Exclusion range[1].end() --> 2015-12-18T12:45:00"); + t.is (ranges[2].start ().toISOLocalExtended (), "2015-12-18T17:30:00", "Exclusion range[2].start() --> 2015-12-18T17:30:00"); + t.is (ranges[2].end ().toISOLocalExtended (), "2015-12-19T00:00:00", "Exclusion range[2].end() --> 2015-12-19T00:00:00"); + + t.is (ranges[3].start ().toISOLocalExtended (), "2015-12-25T00:00:00", "Exclusion range[3].start() --> 2015-12-25T00:00:00"); + t.is (ranges[3].end ().toISOLocalExtended (), "2015-12-25T08:00:00", "Exclusion range[3].end() --> 2015-12-25T08:00:00"); + t.is (ranges[4].start ().toISOLocalExtended (), "2015-12-25T12:00:00", "Exclusion range[4].start() --> 2015-12-25T12:00:00"); + t.is (ranges[4].end ().toISOLocalExtended (), "2015-12-25T12:45:00", "Exclusion range[4].end() --> 2015-12-25T12:45:00"); + t.is (ranges[5].start ().toISOLocalExtended (), "2015-12-25T17:30:00", "Exclusion range[5].start() --> 2015-12-25T17:30:00"); + t.is (ranges[5].end ().toISOLocalExtended (), "2015-12-26T00:00:00", "Exclusion range[5].end() --> 2015-12-26T00:00:00"); + + t.is (ranges[6].start ().toISOLocalExtended (), "2016-01-01T00:00:00", "Exclusion range[6].start() --> 2016-01-01T00:00:00"); + t.is (ranges[6].end ().toISOLocalExtended (), "2016-01-01T08:00:00", "Exclusion range[6].end() --> 2016-01-01T08:00:00"); + t.is (ranges[7].start ().toISOLocalExtended (), "2016-01-01T12:00:00", "Exclusion range[7].start() --> 2016-01-01T12:00:00"); + t.is (ranges[7].end ().toISOLocalExtended (), "2016-01-01T12:45:00", "Exclusion range[7].end() --> 2016-01-01T12:45:00"); + t.is (ranges[8].start ().toISOLocalExtended (), "2016-01-01T17:30:00", "Exclusion range[8].start() --> 2016-01-01T17:30:00"); + t.is (ranges[8].end ().toISOLocalExtended (), "2016-01-02T00:00:00", "Exclusion range[8].end() --> 2016-01-02T00:00:00"); + + t.is (ranges[9].start ().toISOLocalExtended (), "2016-01-08T00:00:00", "Exclusion range[9].start() --> 2016-01-08T00:00:00"); + t.is (ranges[9].end ().toISOLocalExtended (), "2016-01-08T08:00:00", "Exclusion range[9].end() --> 2016-01-08T08:00:00"); + t.is (ranges[10].start ().toISOLocalExtended (), "2016-01-08T12:00:00", "Exclusion range[10].start() --> 2016-01-08T12:00:00"); + t.is (ranges[10].end ().toISOLocalExtended (), "2016-01-08T12:45:00", "Exclusion range[10].end() --> 2016-01-08T12:45:00"); + t.is (ranges[11].start ().toISOLocalExtended (), "2016-01-08T17:30:00", "Exclusion range[11].start() --> 2016-01-08T17:30:00"); + t.is (ranges[11].end ().toISOLocalExtended (), "2016-01-09T00:00:00", "Exclusion range[11].end() --> 2016-01-09T00:00:00"); + e.initialize ("exc saturday <8:00:00 12:00:00-12:45:00 >17:30:00"); tokens = e.tokens (); t.ok (tokens.size () == 5, "Exclusion 'exc saturday <8:00:00 12:00:00-12:45:00 >17:30:00' --> 5"); @@ -94,6 +277,36 @@ int main (int, char**) t.is (tokens[3], "12:00:00-12:45:00", "Exclusion 'exc saturday <8:00:00 12:00:00-12:45:00 >17:30:00' [3] --> '12:00:00-12:45:00'"); t.is (tokens[4], ">17:30:00", "Exclusion 'exc saturday <8:00:00 12:00:00-12:45:00 >17:30:00' [4] --> '>17:30:00'"); + ranges = e.ranges (r); + t.ok (ranges.size () == 12, "Exclusion ranges --> [12]"); + t.is (ranges[0].start ().toISOLocalExtended (), "2015-12-19T00:00:00", "Exclusion range[0].start() --> 2015-12-19T00:00:00"); + t.is (ranges[0].end ().toISOLocalExtended (), "2015-12-19T08:00:00", "Exclusion range[0].end() --> 2015-12-19T08:00:00"); + t.is (ranges[1].start ().toISOLocalExtended (), "2015-12-19T12:00:00", "Exclusion range[1].start() --> 2015-12-19T12:00:00"); + t.is (ranges[1].end ().toISOLocalExtended (), "2015-12-19T12:45:00", "Exclusion range[1].end() --> 2015-12-19T12:45:00"); + t.is (ranges[2].start ().toISOLocalExtended (), "2015-12-19T17:30:00", "Exclusion range[2].start() --> 2015-12-19T17:30:00"); + t.is (ranges[2].end ().toISOLocalExtended (), "2015-12-20T00:00:00", "Exclusion range[2].end() --> 2015-12-20T00:00:00"); + + t.is (ranges[3].start ().toISOLocalExtended (), "2015-12-26T00:00:00", "Exclusion range[3].start() --> 2015-12-26T00:00:00"); + t.is (ranges[3].end ().toISOLocalExtended (), "2015-12-26T08:00:00", "Exclusion range[3].end() --> 2015-12-26T08:00:00"); + t.is (ranges[4].start ().toISOLocalExtended (), "2015-12-26T12:00:00", "Exclusion range[4].start() --> 2015-12-26T12:00:00"); + t.is (ranges[4].end ().toISOLocalExtended (), "2015-12-26T12:45:00", "Exclusion range[4].end() --> 2015-12-26T12:45:00"); + t.is (ranges[5].start ().toISOLocalExtended (), "2015-12-26T17:30:00", "Exclusion range[5].start() --> 2015-12-26T17:30:00"); + t.is (ranges[5].end ().toISOLocalExtended (), "2015-12-27T00:00:00", "Exclusion range[5].end() --> 2015-12-27T00:00:00"); + + t.is (ranges[6].start ().toISOLocalExtended (), "2016-01-02T00:00:00", "Exclusion range[6].start() --> 2016-01-02T00:00:00"); + t.is (ranges[6].end ().toISOLocalExtended (), "2016-01-02T08:00:00", "Exclusion range[6].end() --> 2016-01-02T08:00:00"); + t.is (ranges[7].start ().toISOLocalExtended (), "2016-01-02T12:00:00", "Exclusion range[7].start() --> 2016-01-02T12:00:00"); + t.is (ranges[7].end ().toISOLocalExtended (), "2016-01-02T12:45:00", "Exclusion range[7].end() --> 2016-01-02T12:45:00"); + t.is (ranges[8].start ().toISOLocalExtended (), "2016-01-02T17:30:00", "Exclusion range[8].start() --> 2016-01-02T17:30:00"); + t.is (ranges[8].end ().toISOLocalExtended (), "2016-01-03T00:00:00", "Exclusion range[8].end() --> 2016-01-03T00:00:00"); + + t.is (ranges[9].start ().toISOLocalExtended (), "2016-01-09T00:00:00", "Exclusion range[9].start() --> 2016-01-09T00:00:00"); + t.is (ranges[9].end ().toISOLocalExtended (), "2016-01-09T08:00:00", "Exclusion range[9].end() --> 2016-01-09T08:00:00"); + t.is (ranges[10].start ().toISOLocalExtended (), "2016-01-09T12:00:00", "Exclusion range[10].start() --> 2016-01-09T12:00:00"); + t.is (ranges[10].end ().toISOLocalExtended (), "2016-01-09T12:45:00", "Exclusion range[10].end() --> 2016-01-09T12:45:00"); + t.is (ranges[11].start ().toISOLocalExtended (), "2016-01-09T17:30:00", "Exclusion range[11].start() --> 2016-01-09T17:30:00"); + t.is (ranges[11].end ().toISOLocalExtended (), "2016-01-10T00:00:00", "Exclusion range[11].end() --> 2016-01-10T00:00:00"); + e.initialize ("exc sunday <8:00:00 12:00:00-12:45:00 >17:30:00"); tokens = e.tokens (); t.ok (tokens.size () == 5, "Exclusion 'exc sunday <8:00:00 12:00:00-12:45:00 >17:30:00' --> 5"); @@ -103,6 +316,36 @@ int main (int, char**) t.is (tokens[3], "12:00:00-12:45:00", "Exclusion 'exc sunday <8:00:00 12:00:00-12:45:00 >17:30:00' [3] --> '12:00:00-12:45:00'"); t.is (tokens[4], ">17:30:00", "Exclusion 'exc sunday <8:00:00 12:00:00-12:45:00 >17:30:00' [4] --> '>17:30:00'"); + ranges = e.ranges (r); + t.ok (ranges.size () == 12, "Exclusion ranges --> [12]"); + t.is (ranges[0].start ().toISOLocalExtended (), "2015-12-20T00:00:00", "Exclusion range[0].start() --> 2015-12-20T00:00:00"); + t.is (ranges[0].end ().toISOLocalExtended (), "2015-12-20T08:00:00", "Exclusion range[0].end() --> 2015-12-20T08:00:00"); + t.is (ranges[1].start ().toISOLocalExtended (), "2015-12-20T12:00:00", "Exclusion range[1].start() --> 2015-12-20T12:00:00"); + t.is (ranges[1].end ().toISOLocalExtended (), "2015-12-20T12:45:00", "Exclusion range[1].end() --> 2015-12-20T12:45:00"); + t.is (ranges[2].start ().toISOLocalExtended (), "2015-12-20T17:30:00", "Exclusion range[2].start() --> 2015-12-20T17:30:00"); + t.is (ranges[2].end ().toISOLocalExtended (), "2015-12-21T00:00:00", "Exclusion range[2].end() --> 2015-12-21T00:00:00"); + + t.is (ranges[3].start ().toISOLocalExtended (), "2015-12-27T00:00:00", "Exclusion range[3].start() --> 2015-12-27T00:00:00"); + t.is (ranges[3].end ().toISOLocalExtended (), "2015-12-27T08:00:00", "Exclusion range[3].end() --> 2015-12-27T08:00:00"); + t.is (ranges[4].start ().toISOLocalExtended (), "2015-12-27T12:00:00", "Exclusion range[4].start() --> 2015-12-27T12:00:00"); + t.is (ranges[4].end ().toISOLocalExtended (), "2015-12-27T12:45:00", "Exclusion range[4].end() --> 2015-12-27T12:45:00"); + t.is (ranges[5].start ().toISOLocalExtended (), "2015-12-27T17:30:00", "Exclusion range[5].start() --> 2015-12-22717:30:00"); + t.is (ranges[5].end ().toISOLocalExtended (), "2015-12-28T00:00:00", "Exclusion range[5].end() --> 2015-12-28T00:00:00"); + + t.is (ranges[6].start ().toISOLocalExtended (), "2016-01-03T00:00:00", "Exclusion range[6].start() --> 2016-01-03T00:00:00"); + t.is (ranges[6].end ().toISOLocalExtended (), "2016-01-03T08:00:00", "Exclusion range[6].end() --> 2016-01-03T08:00:00"); + t.is (ranges[7].start ().toISOLocalExtended (), "2016-01-03T12:00:00", "Exclusion range[7].start() --> 2016-01-03T12:00:00"); + t.is (ranges[7].end ().toISOLocalExtended (), "2016-01-03T12:45:00", "Exclusion range[7].end() --> 2016-01-03T12:45:00"); + t.is (ranges[8].start ().toISOLocalExtended (), "2016-01-03T17:30:00", "Exclusion range[8].start() --> 2016-01-03T17:30:00"); + t.is (ranges[8].end ().toISOLocalExtended (), "2016-01-04T00:00:00", "Exclusion range[8].end() --> 2016-01-04T00:00:00"); + + t.is (ranges[9].start ().toISOLocalExtended (), "2016-01-10T00:00:00", "Exclusion range[9].start() --> 2016-01-10T00:00:00"); + t.is (ranges[9].end ().toISOLocalExtended (), "2016-01-10T08:00:00", "Exclusion range[9].end() --> 2016-01-10T08:00:00"); + t.is (ranges[10].start ().toISOLocalExtended (), "2016-01-10T12:00:00", "Exclusion range[10].start() --> 2016-01-10T12:00:00"); + t.is (ranges[10].end ().toISOLocalExtended (), "2016-01-10T12:45:00", "Exclusion range[10].end() --> 2016-01-10T12:45:00"); + t.is (ranges[11].start ().toISOLocalExtended (), "2016-01-10T17:30:00", "Exclusion range[11].start() --> 2016-01-10T17:30:00"); + t.is (ranges[11].end ().toISOLocalExtended (), "2016-01-11T00:00:00", "Exclusion range[11].end() --> 2016-01-11T00:00:00"); + // exc day on 2016-01-01 e.initialize ("exc day on 2016-01-01"); tokens = e.tokens (); @@ -112,8 +355,7 @@ int main (int, char**) t.is (tokens[2], "on", "Exclusion 'exc day on 2016-01-01' [2] --> 'on'"); t.is (tokens[3], "2016-01-01", "Exclusion 'exc day on 2016-01-01' [3] --> '2016-01-01'"); - Daterange r (Datetime ("2015-12-15"), Datetime ("2016-01-15")); - auto ranges = e.ranges (r); + ranges = e.ranges (r); t.ok (ranges.size () == 1, "Exclusion ranges --> [1]"); t.is (ranges[0].start ().toString ("Y-M-D"), "2016-01-01", "Exclusion range[0].start() --> 2016-01-01"); t.is (ranges[0].end ().toString ("Y-M-D"), "2016-01-02", "Exclusion range[0].end() --> 2016-01-02");