1 /*
2     SPDX-FileCopyrightText: 2007-2009 Sergio Pistone <sergio_pistone@yahoo.com.ar>
3     SPDX-FileCopyrightText: 2010-2018 Mladen Milinkovic <max@smoothware.net>
4 
5     SPDX-License-Identifier: GPL-2.0-or-later
6 */
7 
8 #include "rangelisttest.h"
9 #include "core/rangelist.h"
10 
11 #include <QTest>                               // krazy:exclude=c++/includes
12 
13 using namespace SubtitleComposer;
14 
15 void
testConstructors()16 RangeListTest::testConstructors()
17 {
18 	RangeList ranges;
19 	QVERIFY(ranges.isEmpty() && ranges.rangesCount() == 0);
20 
21 	ranges << Range(1, 2);
22 	QVERIFY(ranges.firstIndex() == 1 && ranges.lastIndex() == 2 && ranges.indexesCount() == 2);
23 
24 	RangeList ranges2(Range(1, 2));
25 	QVERIFY(ranges == ranges2);
26 
27 	ranges2 = ranges;
28 	QVERIFY(ranges == ranges2);
29 
30 	ranges << Range(7, 9);
31 	QVERIFY(ranges.firstIndex() == 1 && ranges.lastIndex() == 9 && ranges.indexesCount() == 5);
32 
33 	RangeList ranges3(ranges);
34 	QVERIFY(ranges == ranges3);
35 
36 	ranges3 = ranges;
37 	QVERIFY(ranges == ranges3);
38 
39 	RangeList complementRanges = ranges.complement();
40 	QVERIFY(complementRanges.firstIndex() == 0);
41 	QVERIFY(complementRanges.lastIndex() == Range::MaxIndex);
42 
43 	RangeList::ConstIterator complementRangesIt = complementRanges.begin();
44 	QVERIFY(*(complementRangesIt++) == Range(0, 0));
45 	QVERIFY(*(complementRangesIt++) == Range(3, 6));
46 	QVERIFY(*(complementRangesIt++) == Range(10, Range::MaxIndex));
47 }
48 
49 void
testJoinAndTrim()50 RangeListTest::testJoinAndTrim()
51 {
52 	RangeList ranges;
53 
54 	ranges << Range(1, 4);
55 	QVERIFY(ranges.rangesCount() == 1 && ranges.indexesCount() == 4);
56 
57 	ranges << Range(3, 5);
58 	QVERIFY(ranges.rangesCount() == 1 && ranges.indexesCount() == 5);
59 
60 	ranges << Range(7, 7);
61 	QVERIFY(ranges.rangesCount() == 2 && ranges.indexesCount() == 6);
62 
63 	ranges << Range(13, 16);
64 	QVERIFY(ranges.rangesCount() == 3 && ranges.indexesCount() == 10);
65 
66 	ranges << Range(6, 15);
67 	QVERIFY(ranges.rangesCount() == 1 && ranges.indexesCount() == 16);
68 
69 	ranges.trimToRange(Range(0, 17));
70 	QVERIFY(ranges.rangesCount() == 1 && ranges.indexesCount() == 16);
71 
72 	ranges.trimToRange(Range(0, 16));
73 	QVERIFY(ranges.rangesCount() == 1 && ranges.indexesCount() == 16);
74 
75 	ranges.trimToRange(Range(0, 15));
76 	QVERIFY(ranges.rangesCount() == 1 && ranges.indexesCount() == 15);
77 
78 	ranges.trimToRange(Range(0, 5));
79 	QVERIFY(ranges.rangesCount() == 1 && ranges.indexesCount() == 5);
80 }
81 
82 QTEST_GUILESS_MAIN(RangeListTest);
83