93 lines
2.3 KiB
C++
Executable File
93 lines
2.3 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* AvaTimelineTest
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
* Created by Christian Fröbel, NLSE, 2018-03-28
|
|
*/
|
|
|
|
#include "ava_timeline_test.h"
|
|
#include <AudioVideoManagement/ava_types.h>
|
|
#include <initializer_list>
|
|
#include <utility>
|
|
#include <algorithm>
|
|
|
|
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<std::pair<int, int>> v)
|
|
{
|
|
AvaTimeline timeline;
|
|
std::for_each(v.begin(), v.end(), [&timeline] (const std::pair<int, int> &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);
|
|
}
|