Let Interval inherit from Range

- Remove 1 level of indirection
- Remove public field Interval::range (instead use interval directly)
This commit is contained in:
Thomas Lauf 2018-06-13 23:01:35 +02:00
parent 0d33700336
commit 9dd106116c
30 changed files with 289 additions and 280 deletions

View file

@ -46,8 +46,8 @@ void test_flatten (
Interval tmp;
tmp.initialize (output[i]);
t.is (tmp.range.start.toISO (), results[i].range.start.toISO (), "flatten: " + label + " start matches");
t.is (tmp.range.end.toISO (), results[i].range.end.toISO (), "flatten: " + label + " end matches");
t.is (tmp.start.toISO (), results[i].start.toISO (), "flatten: " + label + " start matches");
t.is (tmp.end.toISO (), results[i].end.toISO (), "flatten: " + label + " end matches");
t.ok (tmp.tags () == results[i].tags (), "flatten: " + label + " tags match");
}
}
@ -201,12 +201,12 @@ int main (int, char**)
// bool matchesFilter (const Interval& interval, const Interval& filter);
Interval refOpen;
refOpen.range = Range (Datetime (2016, 6, 1), Datetime (0));
refOpen.setRange (Range (Datetime (2016, 6, 1), Datetime (0)));
refOpen.tag ("tag1");
refOpen.tag ("tag2");
Interval refClosed;
refClosed.range = Range (Datetime (2016, 6, 1), Datetime (2016, 6, 30));
refClosed.setRange (Range (Datetime (2016, 6, 1), Datetime (2016, 6, 30)));
refClosed.tag ("tag1");
refClosed.tag ("tag2");
@ -235,15 +235,15 @@ int main (int, char**)
Interval i;
i.tag ("tag1");
i.tag ("tag2");
i.range = testA; t.notok (matchesFilter (i, refClosed), "matchesFilter A <!> refClosed");
i.range = testB; t.ok (matchesFilter (i, refClosed), "matchesFilter B <=> refClosed");
i.range = testC; t.ok (matchesFilter (i, refClosed), "matchesFilter C <=> refClosed");
i.range = testD; t.ok (matchesFilter (i, refClosed), "matchesFilter D <=> refClosed");
i.range = testE; t.notok (matchesFilter (i, refClosed), "matchesFilter E <!> refClosed");
i.range = testF; t.ok (matchesFilter (i, refClosed), "matchesFilter F <=> refClosed");
i.range = testG; t.ok (matchesFilter (i, refClosed), "matchesFilter G <=> refClosed");
i.range = testH; t.ok (matchesFilter (i, refClosed), "matchesFilter H <=> refClosed");
i.range = testI; t.notok (matchesFilter (i, refClosed), "matchesFilter I <!> refClosed");
i.setRange (testA); t.notok (matchesFilter (i, refClosed), "matchesFilter A <!> refClosed");
i.setRange (testB); t.ok (matchesFilter (i, refClosed), "matchesFilter B <=> refClosed");
i.setRange (testC); t.ok (matchesFilter (i, refClosed), "matchesFilter C <=> refClosed");
i.setRange (testD); t.ok (matchesFilter (i, refClosed), "matchesFilter D <=> refClosed");
i.setRange (testE); t.notok (matchesFilter (i, refClosed), "matchesFilter E <!> refClosed");
i.setRange (testF); t.ok (matchesFilter (i, refClosed), "matchesFilter F <=> refClosed");
i.setRange (testG); t.ok (matchesFilter (i, refClosed), "matchesFilter G <=> refClosed");
i.setRange (testH); t.ok (matchesFilter (i, refClosed), "matchesFilter H <=> refClosed");
i.setRange (testI); t.notok (matchesFilter (i, refClosed), "matchesFilter I <!> refClosed");
// this [...
// A [--------)
@ -255,15 +255,15 @@ int main (int, char**)
// G [...
// H [...
// I [...
i.range = testA; t.notok (matchesFilter (i, refOpen), "matchesFilter A <!> refOpen");
i.range = testB; t.ok (matchesFilter (i, refOpen), "matchesFilter B <=> refOpen");
i.range = testC; t.ok (matchesFilter (i, refOpen), "matchesFilter C <=> refOpen");
i.range = testD; t.ok (matchesFilter (i, refOpen), "matchesFilter D <=> refOpen");
i.range = testE; t.ok (matchesFilter (i, refOpen), "matchesFilter E <=> refOpen");
i.range = testF; t.ok (matchesFilter (i, refOpen), "matchesFilter F <=> refOpen");
i.range = testG; t.ok (matchesFilter (i, refOpen), "matchesFilter G <=> refOpen");
i.range = testH; t.ok (matchesFilter (i, refOpen), "matchesFilter H <=> refOpen");
i.range = testI; t.ok (matchesFilter (i, refOpen), "matchesFilter I <=> refOpen");
i.setRange (testA); t.notok (matchesFilter (i, refOpen), "matchesFilter A <!> refOpen");
i.setRange (testB); t.ok (matchesFilter (i, refOpen), "matchesFilter B <=> refOpen");
i.setRange (testC); t.ok (matchesFilter (i, refOpen), "matchesFilter C <=> refOpen");
i.setRange (testD); t.ok (matchesFilter (i, refOpen), "matchesFilter D <=> refOpen");
i.setRange (testE); t.ok (matchesFilter (i, refOpen), "matchesFilter E <=> refOpen");
i.setRange (testF); t.ok (matchesFilter (i, refOpen), "matchesFilter F <=> refOpen");
i.setRange (testG); t.ok (matchesFilter (i, refOpen), "matchesFilter G <=> refOpen");
i.setRange (testH); t.ok (matchesFilter (i, refOpen), "matchesFilter H <=> refOpen");
i.setRange (testI); t.ok (matchesFilter (i, refOpen), "matchesFilter I <=> refOpen");
// Range getFullDay (const Datetime&);
auto r1 = getFullDay (Datetime ("20160501T203112"));

View file

@ -37,19 +37,19 @@ int main (int, char**)
// bool is_ended () const;
Interval i1;
t.is (i1.empty (), true, "Interval().empty -> true");
t.is (i1.range.is_started (), false, "Interval().is_started -> false");
t.is (i1.range.is_ended (), false, "Interval().is_ended -> false");
t.is (i1.is_started (), false, "Interval().is_started -> false");
t.is (i1.is_ended (), false, "Interval().is_ended -> false");
// void start (Datetime);
i1.range.start = Datetime ();
i1.start = Datetime ();
t.is (i1.empty (), false, "Interval().empty -> false");
t.is (i1.range.is_started (), true, "Interval(start=now).is_started -> true");
t.is (i1.range.is_ended (), false, "Interval(start=now).is_ended -> false");
t.is (i1.is_started (), true, "Interval(start=now).is_started -> true");
t.is (i1.is_ended (), false, "Interval(start=now).is_ended -> false");
// void end (Datetime);
i1.range.end = Datetime ();
t.is (i1.range.is_started (), true, "Interval(start=now,end=now).is_started -> true");
t.is (i1.range.is_ended (), true, "Interval(start=now,end=now).is_ended -> true");
i1.end = Datetime ();
t.is (i1.is_started (), true, "Interval(start=now,end=now).is_started -> true");
t.is (i1.is_ended (), true, "Interval(start=now,end=now).is_ended -> true");
// std::set <std::string> tags () const;
// void tag (const std::string&);
@ -73,9 +73,9 @@ int main (int, char**)
t.is (i3.serialize (), "inc # foo", "Interval().serialize -> 'inc # foo'");
i3.tag ("bar");
t.is (i3.serialize (), "inc # bar foo", "Interval().serialize -> 'inc # bar foo'");
i3.range.start = Datetime(1);
i3.start = Datetime(1);
t.is (i3.serialize (), "inc 19700101T000001Z # bar foo", "Interval(Datetime(1)).serialize -> 'inc 19700101T000001Z # bar foo'");
i3.range.end = Datetime(2);
i3.end = Datetime(2);
t.is (i3.serialize (), "inc 19700101T000001Z - 19700101T000002Z # bar foo", "Interval(Datetime(1)).serialize -> 'inc 19700101T000001Z - 19700101T000002Z # bar foo'");
i3.tag ("Trans-Europe Express");
t.is (i3.serialize (), "inc 19700101T000001Z - 19700101T000002Z # \"Trans-Europe Express\" bar foo", "Interval(Datetime(1)).serialize -> 'inc 19700101T000001Z - 19700101T000002Z # \"Trans-Europe Express\" bar foo'");