1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.eluder.coveralls.maven.plugin.source;
25
26 import static org.mockito.Mockito.times;
27 import static org.mockito.Mockito.verify;
28
29 import java.io.IOException;
30 import java.security.NoSuchAlgorithmException;
31
32 import org.eluder.coveralls.maven.plugin.ProcessingException;
33 import org.eluder.coveralls.maven.plugin.domain.Source;
34 import org.eluder.coveralls.maven.plugin.util.TestIoUtil;
35 import org.junit.jupiter.api.Test;
36 import org.junit.jupiter.api.extension.ExtendWith;
37 import org.mockito.Mock;
38 import org.mockito.Mockito;
39 import org.mockito.junit.jupiter.MockitoExtension;
40
41 @ExtendWith(MockitoExtension.class)
42 class UniqueSourceCallbackTest {
43
44 @Mock
45 private SourceCallback sourceCallbackMock;
46
47 @Test
48 void testOnSourceWithUniqueFiles() throws NoSuchAlgorithmException, ProcessingException, IOException {
49 Source s1 = createSource("Foo.java", "{\n void();\n}\n", 2);
50 Source s2 = createSource("Bar.java", "{\n bar();\n}\n", 2);
51
52 UniqueSourceCallback cb = createUniqueSourceCallback();
53 cb.onBegin();
54 cb.onSource(s1);
55 cb.onSource(s2);
56 cb.onComplete();
57 verify(sourceCallbackMock).onBegin();
58 verify(sourceCallbackMock, times(2)).onSource(Mockito.any(Source.class));
59 verify(sourceCallbackMock).onComplete();
60 }
61
62 @Test
63 void testOnSourceWithDuplicateSources() throws NoSuchAlgorithmException, ProcessingException, IOException {
64 Source s1 = createSource("Foo.java", "{\n void();\n}\n", 2);
65 Source s2 = createSource("Foo.java", "{\n void();\n}\n", 2);
66
67 UniqueSourceCallback cb = createUniqueSourceCallback();
68 cb.onBegin();
69 cb.onSource(s1);
70 cb.onSource(s2);
71 cb.onComplete();
72 verify(sourceCallbackMock).onBegin();
73 verify(sourceCallbackMock, times(1)).onSource(Mockito.any(Source.class));
74 verify(sourceCallbackMock).onComplete();
75 }
76
77 @Test
78 void testOnSourceWithUniqueSources() throws NoSuchAlgorithmException, ProcessingException, IOException {
79 Source s1 = createSource("Foo.java", "{\n void();\n}\n", 2);
80 Source s2 = createSource("Foo.java", "{\n void();\n func();\n}\n", 2, 3);
81
82 UniqueSourceCallback cb = createUniqueSourceCallback();
83 cb.onBegin();
84 cb.onSource(s1);
85 cb.onSource(s2);
86 cb.onComplete();
87 verify(sourceCallbackMock).onBegin();
88 verify(sourceCallbackMock, times(2)).onSource(Mockito.any(Source.class));
89 verify(sourceCallbackMock).onComplete();
90 }
91
92 private UniqueSourceCallback createUniqueSourceCallback() {
93 return new UniqueSourceCallback(sourceCallbackMock);
94 }
95
96 private Source createSource(final String name, final String source, final int... relevant) throws NoSuchAlgorithmException {
97 Source s = new Source(name, source, TestIoUtil.getSha512DigestHex(source));
98 for (int i : relevant) {
99 s.addCoverage(i, 1);
100 }
101 return s;
102 }
103 }