1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 package org.eluder.coveralls.maven.plugin.source;
26
27 import java.io.IOException;
28 import java.security.NoSuchAlgorithmException;
29
30 import org.eluder.coveralls.maven.plugin.ProcessingException;
31 import org.eluder.coveralls.maven.plugin.domain.Source;
32 import org.eluder.coveralls.maven.plugin.util.TestIoUtil;
33 import org.junit.jupiter.api.Test;
34 import org.junit.jupiter.api.extension.ExtendWith;
35 import org.mockito.ArgumentMatchers;
36 import org.mockito.Mock;
37 import org.mockito.Mockito;
38 import org.mockito.junit.jupiter.MockitoExtension;
39
40
41
42
43 @ExtendWith(MockitoExtension.class)
44 class UniqueSourceCallbackTest {
45
46
47 @Mock
48 private SourceCallback sourceCallbackMock;
49
50
51
52
53
54
55
56
57
58
59
60 @Test
61 void onSourceWithUniqueFiles() throws NoSuchAlgorithmException, ProcessingException, IOException {
62 final var s1 = this.createSource("Foo.java", "{\n void();\n}\n", 2);
63 final var s2 = this.createSource("Bar.java", "{\n bar();\n}\n", 2);
64
65 final var cb = this.createUniqueSourceCallback();
66 cb.onBegin();
67 cb.onSource(s1);
68 cb.onSource(s2);
69 cb.onComplete();
70 Mockito.verify(this.sourceCallbackMock).onBegin();
71 Mockito.verify(this.sourceCallbackMock, Mockito.times(2)).onSource(ArgumentMatchers.any(Source.class));
72 Mockito.verify(this.sourceCallbackMock).onComplete();
73 }
74
75
76
77
78
79
80
81
82
83
84
85 @Test
86 void onSourceWithDuplicateSources() throws NoSuchAlgorithmException, ProcessingException, IOException {
87 final var s1 = this.createSource("Foo.java", "{\n void();\n}\n", 2);
88 final var s2 = this.createSource("Foo.java", "{\n void();\n}\n", 2);
89
90 final var cb = this.createUniqueSourceCallback();
91 cb.onBegin();
92 cb.onSource(s1);
93 cb.onSource(s2);
94 cb.onComplete();
95 Mockito.verify(this.sourceCallbackMock).onBegin();
96 Mockito.verify(this.sourceCallbackMock, Mockito.times(1)).onSource(ArgumentMatchers.any(Source.class));
97 Mockito.verify(this.sourceCallbackMock).onComplete();
98 }
99
100
101
102
103
104
105
106
107
108
109
110 @Test
111 void onSourceWithUniqueSources() throws NoSuchAlgorithmException, ProcessingException, IOException {
112 final var s1 = this.createSource("Foo.java", "{\n void();\n}\n", 2);
113 final var s2 = this.createSource("Foo.java", "{\n void();\n func();\n}\n", 2, 3);
114
115 final var cb = this.createUniqueSourceCallback();
116 cb.onBegin();
117 cb.onSource(s1);
118 cb.onSource(s2);
119 cb.onComplete();
120 Mockito.verify(this.sourceCallbackMock).onBegin();
121 Mockito.verify(this.sourceCallbackMock, Mockito.times(2)).onSource(ArgumentMatchers.any(Source.class));
122 Mockito.verify(this.sourceCallbackMock).onComplete();
123 }
124
125
126
127
128
129
130 UniqueSourceCallback createUniqueSourceCallback() {
131 return new UniqueSourceCallback(this.sourceCallbackMock);
132 }
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 Source createSource(final String name, final String source, final int... relevant) throws NoSuchAlgorithmException {
150 final var s = new Source(name, source, TestIoUtil.getSha512DigestHex(source));
151 for (final int i : relevant) {
152 s.addCoverage(i, 1);
153 }
154 return s;
155 }
156
157 }