Files
qt5-legatus-legacy/Lts/Services/AudioVideoManagement/UnitTests/ava_timeline_test.cpp
T
2026-08-13 18:33:10 +02:00

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);
}