/** * @RDE_HEADER@ * AvaTimelineTest * $Id$ * $HeadURL$ * $Author$ * Created by Christian Fröbel, NLSE, 2018-03-28 */ #include "ava_timeline_test.h" #include #include #include #include using namespace AudioVideoManagement; namespace { /** * Small helper so that we can easily craeate a AvaTimeline from a list of int-pairs. */ AvaTimeline makeTimeline(std::initializer_list> v) { AvaTimeline timeline; std::for_each(v.begin(), v.end(), [&timeline] (const std::pair &p) { timeline.append({AvaTimePoint(AvaDuration{p.first}), AvaTimePoint(AvaDuration{p.second})}); }); return timeline; } } // anonymous namespace void AvaTimelineTest::testMergeEmpty() { const AvaTimeline timeline1 = makeTimeline({ {1, 2}, {3, 4} }); AvaTimeline timeline2 = timeline1; AvaTimeline empty; timeline2.merge(empty); QCOMPARE(timeline2, timeline1); empty.merge(timeline1); QCOMPARE(empty, timeline1); } void AvaTimelineTest::testMergeSelf() { const AvaTimeline timeline1 = makeTimeline({ {1, 2}, {3, 4} }); AvaTimeline timeline2 = timeline1; timeline2.merge(timeline2); QCOMPARE(timeline2, timeline1); } void AvaTimelineTest::testMergeDisjunct() { AvaTimeline timeline1 = makeTimeline({ {1, 2} }); AvaTimeline timeline2 = makeTimeline({ {3, 4} }); timeline1.merge(timeline2); AvaTimeline expected = makeTimeline({ {1, 2}, {3, 4}}); QCOMPARE(timeline1, expected); } void AvaTimelineTest::testMergeWithin() { AvaTimeline timeline1 = makeTimeline({ {1, 4} }); AvaTimeline timeline2 = makeTimeline({ {2, 3} }); timeline1.merge(timeline2); AvaTimeline expected = makeTimeline({ {1, 4} }); QCOMPARE(timeline1, expected); } void AvaTimelineTest::testMergeOverlap() { AvaTimeline timeline1 = makeTimeline({ {1, 3} }); AvaTimeline timeline2 = makeTimeline({ {2, 4} }); timeline1.merge(timeline2); AvaTimeline expected = makeTimeline({ {1, 4} }); QCOMPARE(timeline1, expected); } void AvaTimelineTest::testMergeEdgeOverlap() { AvaTimeline timeline1 = makeTimeline({ {1, 2} }); AvaTimeline timeline2 = makeTimeline({ {2, 3} }); timeline1.merge(timeline2); AvaTimeline expected = makeTimeline({ {1, 3} }); QCOMPARE(timeline1, expected); }