9 namespace Fossology\Lib\View;
26 function setUp() :
void
28 $this->license1 =
new License(10,
"shortName",
"fullName",
"licenseFullText", 4,
"URL", 2);
30 $this->licenseDao = M::mock(LicenseDao::class)
31 ->shouldReceive(
'getLicenseById')->with($this->license1->getId())
32 ->andReturn($this->license1)->getMock();
37 function tearDown() :
void
42 function testAddReferenceTexts()
44 $highlight1 =
new Highlight(5, 8,
'type1', 2, 6, $this->license1->getId());
45 $highlights = array($highlight1);
47 $this->highlight->addReferenceTexts($highlights);
49 assertThat($highlight1->getInfoText(), is(
"10"));
52 function testSplitOverlappingHighlightEntriesReordersByStart()
54 $highlight1 =
new Highlight(5, 8,
'type1',
'ref1', 0, 0);
55 $highlight2 =
new Highlight(4, 8,
'text2',
'ref2', 0, 0);
56 $highlightInfos = array($highlight1, $highlight2);
58 $splitOverlap = $this->highlight->calculateSplitPositions($highlightInfos);
60 assertThat($splitOverlap, anArray(
62 4 => array(
new SplitPosition(0, SplitPosition::START, $highlight2)),
63 5 => array(
new SplitPosition(1, SplitPosition::START, $highlight1)),
71 function testSplitHighlightEntriesContainingAnAtomAtStart()
73 $highlight1 =
new Highlight(5, 8,
'type1',
'ref1', 0, 0);
74 $highlight2 =
new Highlight(5, 5,
'type1',
'ref2', 0, 0);
75 $highlightInfos = array($highlight1, $highlight2);
77 $splitOverlap = $this->highlight->calculateSplitPositions($highlightInfos);
79 assertThat($splitOverlap, anArray(
84 8 => array(
new SplitPosition(0, SplitPosition::END, $highlight1))
88 function testSplitHighlightEntriesContainingAnAtomInTheMiddle()
90 $highlight1 =
new Highlight(5, 8,
'type1',
'ref1', 0, 0);
91 $highlight2 =
new Highlight(7, 7,
'type2',
'ref2', 0, 0);
92 $highlightInfos = array($highlight1, $highlight2);
94 $splitOverlap = $this->highlight->calculateSplitPositions($highlightInfos);
96 assertThat($splitOverlap, anArray(
98 5 => array(
new SplitPosition(0, SplitPosition::START, $highlight1)),
99 7 => array(
new SplitPosition(1, SplitPosition::ATOM, $highlight2)),
100 8 => array(
new SplitPosition(0, SplitPosition::END, $highlight1))
104 function testSplitOverlappingHightlightEntriesReordersByLengthIfStartIsIdentical()
106 $highlight1 =
new Highlight(5, 8,
'type1',
'ref1', 0, 0);
107 $highlight2 =
new Highlight(5, 9,
'type2',
'ref2', 0, 0);
108 $highlightInfos = array($highlight1, $highlight2);
110 $splitOverlap = $this->highlight->calculateSplitPositions($highlightInfos);
112 assertThat($splitOverlap, anArray(
114 5 => array(
new SplitPosition(0, SplitPosition::START, $highlight2),
116 8 => array(
new SplitPosition(1, SplitPosition::END, $highlight1)),
117 9 => array(
new SplitPosition(0, SplitPosition::END, $highlight2))
121 function testSplitOverlappingHightlightEntriesSplitsOverlappingEntries()
123 $highlight1 =
new Highlight(5, 8,
'type1',
'ref1', 0, 0);
124 $highlight2 =
new Highlight(7, 11,
'type2',
'ref2', 0, 0);
125 $highlightInfos = array($highlight1, $highlight2);
127 $splitOverlap = $this->highlight->calculateSplitPositions($highlightInfos);
129 assertThat($splitOverlap, anArray(
131 5 => array(
new SplitPosition(0, SplitPosition::START, $highlight1)),
132 7 => array(
new SplitPosition(1, SplitPosition::START, $highlight2)),
137 11 => array(
new SplitPosition(1, SplitPosition::END, $highlight2))
141 function testSplitOverlappingHightlightEntriesKeepsNonOverlappingEntriesInDepth()
143 $highlight1 =
new Highlight(5, 15,
'type1',
'ref1', 0, 0);
144 $highlight2 =
new Highlight(7, 13,
'type2',
'ref2', 0, 0);
145 $highlight3 =
new Highlight(9, 11,
'type3',
'ref3', 0, 0);
146 $highlightInfos = array($highlight1, $highlight2, $highlight3);
148 $splitOverlap = $this->highlight->calculateSplitPositions($highlightInfos);
150 assertThat($splitOverlap, anArray(
152 5 => array(
new SplitPosition(0, SplitPosition::START, $highlight1)),
153 7 => array(
new SplitPosition(1, SplitPosition::START, $highlight2)),
154 9 => array(
new SplitPosition(2, SplitPosition::START, $highlight3)),
155 11 => array(
new SplitPosition(2, SplitPosition::END, $highlight3)),
156 13 => array(
new SplitPosition(1, SplitPosition::END, $highlight2)),
157 15 => array(
new SplitPosition(0, SplitPosition::END, $highlight1))
161 function testSplitOverlappingHightlightEntriesSplitsOverlappingEntriesInDepth()
163 $highlight1 =
new Highlight(5, 11,
'type1',
'ref1', 0, 0);
164 $highlight2 =
new Highlight(7, 13,
'type2',
'ref2', 0, 0);
165 $highlight3 =
new Highlight(9, 15,
'type3',
'ref3', 0, 0);
166 $highlightInfos = array($highlight1, $highlight2, $highlight3);
168 $splitOverlap = $this->highlight->calculateSplitPositions($highlightInfos);
170 assertThat($splitOverlap, anArray(
172 5 => array(
new SplitPosition(0, SplitPosition::START, $highlight1)),
173 7 => array(
new SplitPosition(1, SplitPosition::START, $highlight2)),
174 9 => array(
new SplitPosition(2, SplitPosition::START, $highlight3)),
185 15 => array(
new SplitPosition(2, SplitPosition::END, $highlight3))
190 function testSplitOverlappingHightlightEntriesSplitsPartialOverlappingEntries()
192 $highlight1 =
new Highlight(5, 8,
'type1',
'ref1', 0, 0);
193 $highlight2 =
new Highlight(10, 13,
'type2',
'ref2', 0, 0);
194 $highlight3 =
new Highlight(7, 11,
'type3',
'ref3', 0, 0);
195 $highlightInfos = array($highlight1, $highlight2, $highlight3);
197 $splitOverlap = $this->highlight->calculateSplitPositions($highlightInfos);
199 assertThat($splitOverlap, anArray(
201 5 => array(
new SplitPosition(0, SplitPosition::START, $highlight1)),
202 7 => array(
new SplitPosition(1, SplitPosition::START, $highlight3)),
211 11 => array(
new SplitPosition(1, SplitPosition::END, $highlight3),),
212 13 => array(
new SplitPosition(0, SplitPosition::END, $highlight2))
216 function testFlattenHighlightWithSeparatedEntries()
218 $highlight1 =
new Highlight(5, 8,
'type1',
'ref1', 0, 0);
219 $highlight2 =
new Highlight(10, 13,
'type2',
'ref2', 0, 0);
220 $highlights = array($highlight1, $highlight2);
222 $this->highlight->flattenHighlights($highlights);
224 assertThat($highlights, anArray(
226 new Highlight(5, 8, Highlight::UNDEFINED,
'ref1', 0, 0),
227 new Highlight(10, 13, Highlight::UNDEFINED,
'ref2', 0, 0)
231 function testFlattenHighlightWithOverlappingEntries()
233 $highlight1 =
new Highlight(5, 10, Highlight::MATCH,
'ref1', 0, 0);
234 $highlight2 =
new Highlight(8, 13, Highlight::ADDED,
'ref2', 0, 0);
235 $highlights = array($highlight1, $highlight2);
237 $this->highlight->flattenHighlights($highlights);
239 assertThat($highlights, anArray(
241 new Highlight(5, 10, Highlight::UNDEFINED,
'ref1', 0, 0),
242 new Highlight(10, 13, Highlight::UNDEFINED,
'ref2', 0, 0)
246 function testFlattenHighlightWithFullyOverlappingEntries()
248 $highlight1 =
new Highlight(5, 10, Highlight::MATCH,
'ref1', 0, 0);
249 $highlight2 =
new Highlight(7, 9, Highlight::ADDED,
'ref2', 0, 0);
250 $highlights = array($highlight1, $highlight2);
252 $this->highlight->flattenHighlights($highlights);
254 assertThat($highlights, anArray(
256 new Highlight(5, 10, Highlight::UNDEFINED,
'ref1', 0, 0),
260 function testFlattenHighlightWithIgnoredEntries()
262 $highlight1 =
new Highlight(5, 10, Highlight::MATCH,
'ref1', 0, 0);
263 $highlight2 =
new Highlight(7, 9, Highlight::KEYWORD,
'ref2', 0, 0);
264 $highlights = array($highlight1, $highlight2);
266 $this->highlight->flattenHighlights($highlights, array(Highlight::KEYWORD));
268 assertThat($highlights, anArray(
270 new Highlight(5, 10, Highlight::UNDEFINED,
'ref1', 0, 0),
271 new Highlight(7, 9, Highlight::KEYWORD,
'ref2', 0, 0)
275 function testFlattenHighlightWithOverlappingEntriesThatHaveEqualEnd()
277 $highlight1 =
new Highlight(5, 10, Highlight::MATCH,
'ref1', 0, 0);
278 $highlight2 =
new Highlight(7, 10, Highlight::ADDED,
'ref2', 0, 0);
279 $highlights = array($highlight1, $highlight2);
281 $this->highlight->flattenHighlights($highlights);
283 assertThat($highlights, anArray(
285 new Highlight(5, 10, Highlight::UNDEFINED,
'ref1', 0, 0),