xref: /aosp_15_r20/external/spdx-tools/reporter/reporter_test.go (revision ba677afa8f67bb56cbc794f4d0e378e0da058e16)
1*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
2*ba677afaSXin Li
3*ba677afaSXin Lipackage reporter
4*ba677afaSXin Li
5*ba677afaSXin Liimport (
6*ba677afaSXin Li	"bytes"
7*ba677afaSXin Li	"testing"
8*ba677afaSXin Li
9*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/v2_1"
10*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/v2_2"
11*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/v2_3"
12*ba677afaSXin Li)
13*ba677afaSXin Li
14*ba677afaSXin Li// ===== 2.1 Reporter top-level function tests =====
15*ba677afaSXin Lifunc Test2_1ReporterCanMakeReportFromPackage(t *testing.T) {
16*ba677afaSXin Li	pkg := &v2_1.Package{
17*ba677afaSXin Li		FilesAnalyzed: true,
18*ba677afaSXin Li		Files: []*v2_1.File{
19*ba677afaSXin Li			{FileSPDXIdentifier: "File0", LicenseConcluded: "MIT"},
20*ba677afaSXin Li			{FileSPDXIdentifier: "File1", LicenseConcluded: "NOASSERTION"},
21*ba677afaSXin Li			{FileSPDXIdentifier: "File2", LicenseConcluded: "MIT"},
22*ba677afaSXin Li			{FileSPDXIdentifier: "File3", LicenseConcluded: "MIT"},
23*ba677afaSXin Li			{FileSPDXIdentifier: "File4", LicenseConcluded: "GPL-2.0-only"},
24*ba677afaSXin Li			{FileSPDXIdentifier: "File5", LicenseConcluded: "NOASSERTION"},
25*ba677afaSXin Li			{FileSPDXIdentifier: "File6", LicenseConcluded: "GPL-2.0-only"},
26*ba677afaSXin Li			{FileSPDXIdentifier: "File7", LicenseConcluded: "GPL-2.0-only"},
27*ba677afaSXin Li			{FileSPDXIdentifier: "File8", LicenseConcluded: "MIT"},
28*ba677afaSXin Li			{FileSPDXIdentifier: "File9", LicenseConcluded: "GPL-2.0-only"},
29*ba677afaSXin Li			{FileSPDXIdentifier: "File10", LicenseConcluded: "GPL-2.0-only"},
30*ba677afaSXin Li			{FileSPDXIdentifier: "File11", LicenseConcluded: "NOASSERTION"},
31*ba677afaSXin Li		},
32*ba677afaSXin Li	}
33*ba677afaSXin Li
34*ba677afaSXin Li	// what we want to get, as a buffer of bytes
35*ba677afaSXin Li	want := bytes.NewBufferString(`   9  License found
36*ba677afaSXin Li   3  License not found
37*ba677afaSXin Li  12  TOTAL
38*ba677afaSXin Li
39*ba677afaSXin Li  5  GPL-2.0-only
40*ba677afaSXin Li  4  MIT
41*ba677afaSXin Li  9  TOTAL FOUND
42*ba677afaSXin Li`)
43*ba677afaSXin Li
44*ba677afaSXin Li	// render as buffer of bytes
45*ba677afaSXin Li	var got bytes.Buffer
46*ba677afaSXin Li	err := Generate2_1(pkg, &got)
47*ba677afaSXin Li	if err != nil {
48*ba677afaSXin Li		t.Errorf("Expected nil error, got %v", err)
49*ba677afaSXin Li	}
50*ba677afaSXin Li
51*ba677afaSXin Li	// check that they match
52*ba677afaSXin Li	c := bytes.Compare(want.Bytes(), got.Bytes())
53*ba677afaSXin Li	if c != 0 {
54*ba677afaSXin Li		t.Errorf("Expected %v, got %v", want.String(), got.String())
55*ba677afaSXin Li	}
56*ba677afaSXin Li}
57*ba677afaSXin Li
58*ba677afaSXin Lifunc Test2_1ReporterReturnsErrorIfPackageFilesNotAnalyzed(t *testing.T) {
59*ba677afaSXin Li	pkg := &v2_1.Package{
60*ba677afaSXin Li		FilesAnalyzed: false,
61*ba677afaSXin Li	}
62*ba677afaSXin Li
63*ba677afaSXin Li	// render as buffer of bytes
64*ba677afaSXin Li	var got bytes.Buffer
65*ba677afaSXin Li	err := Generate2_1(pkg, &got)
66*ba677afaSXin Li	if err == nil {
67*ba677afaSXin Li		t.Errorf("Expected non-nil error, got nil")
68*ba677afaSXin Li	}
69*ba677afaSXin Li}
70*ba677afaSXin Li
71*ba677afaSXin Li// ===== 2.1 Utility functions =====
72*ba677afaSXin Li
73*ba677afaSXin Lifunc Test2_1CanGetCountsOfLicenses(t *testing.T) {
74*ba677afaSXin Li	pkg := &v2_1.Package{
75*ba677afaSXin Li		FilesAnalyzed: true,
76*ba677afaSXin Li		Files: []*v2_1.File{
77*ba677afaSXin Li			{FileSPDXIdentifier: "File0", LicenseConcluded: "MIT"},
78*ba677afaSXin Li			{FileSPDXIdentifier: "File1", LicenseConcluded: "NOASSERTION"},
79*ba677afaSXin Li			{FileSPDXIdentifier: "File2", LicenseConcluded: "MIT"},
80*ba677afaSXin Li			{FileSPDXIdentifier: "File3", LicenseConcluded: "MIT"},
81*ba677afaSXin Li			{FileSPDXIdentifier: "File4", LicenseConcluded: "GPL-2.0-only"},
82*ba677afaSXin Li			{FileSPDXIdentifier: "File5", LicenseConcluded: "NOASSERTION"},
83*ba677afaSXin Li			{FileSPDXIdentifier: "File6", LicenseConcluded: "GPL-2.0-only"},
84*ba677afaSXin Li			{FileSPDXIdentifier: "File7", LicenseConcluded: "GPL-2.0-only"},
85*ba677afaSXin Li			{FileSPDXIdentifier: "File8", LicenseConcluded: "MIT"},
86*ba677afaSXin Li			{FileSPDXIdentifier: "File9", LicenseConcluded: "GPL-2.0-only"},
87*ba677afaSXin Li			{FileSPDXIdentifier: "File10", LicenseConcluded: "GPL-2.0-only"},
88*ba677afaSXin Li			{FileSPDXIdentifier: "File11", LicenseConcluded: "NOASSERTION"},
89*ba677afaSXin Li		},
90*ba677afaSXin Li	}
91*ba677afaSXin Li
92*ba677afaSXin Li	totalFound, totalNotFound, foundCounts := countLicenses2_1(pkg)
93*ba677afaSXin Li	if totalFound != 9 {
94*ba677afaSXin Li		t.Errorf("expected %v, got %v", 9, totalFound)
95*ba677afaSXin Li	}
96*ba677afaSXin Li	if totalNotFound != 3 {
97*ba677afaSXin Li		t.Errorf("expected %v, got %v", 3, totalNotFound)
98*ba677afaSXin Li	}
99*ba677afaSXin Li	if len(foundCounts) != 2 {
100*ba677afaSXin Li		t.Fatalf("expected %v, got %v", 2, len(foundCounts))
101*ba677afaSXin Li	}
102*ba677afaSXin Li
103*ba677afaSXin Li	// foundCounts is a map of license ID to count of licenses
104*ba677afaSXin Li	// confirm that the results are as expected
105*ba677afaSXin Li	if foundCounts["GPL-2.0-only"] != 5 {
106*ba677afaSXin Li		t.Errorf("expected %v, got %v", 5, foundCounts["GPL-2.0-only"])
107*ba677afaSXin Li	}
108*ba677afaSXin Li	if foundCounts["MIT"] != 4 {
109*ba677afaSXin Li		t.Errorf("expected %v, got %v", 4, foundCounts["MIT"])
110*ba677afaSXin Li	}
111*ba677afaSXin Li}
112*ba677afaSXin Li
113*ba677afaSXin Lifunc Test2_1NilPackageReturnsZeroCountsOfLicenses(t *testing.T) {
114*ba677afaSXin Li	totalFound, totalNotFound, foundCounts := countLicenses2_1(nil)
115*ba677afaSXin Li	if totalFound != 0 {
116*ba677afaSXin Li		t.Errorf("expected %v, got %v", 0, totalFound)
117*ba677afaSXin Li	}
118*ba677afaSXin Li	if totalNotFound != 0 {
119*ba677afaSXin Li		t.Errorf("expected %v, got %v", 0, totalNotFound)
120*ba677afaSXin Li	}
121*ba677afaSXin Li	if len(foundCounts) != 0 {
122*ba677afaSXin Li		t.Fatalf("expected %v, got %v", 0, len(foundCounts))
123*ba677afaSXin Li	}
124*ba677afaSXin Li
125*ba677afaSXin Li	pkg := &v2_1.Package{}
126*ba677afaSXin Li	totalFound, totalNotFound, foundCounts = countLicenses2_1(pkg)
127*ba677afaSXin Li	if totalFound != 0 {
128*ba677afaSXin Li		t.Errorf("expected %v, got %v", 0, totalFound)
129*ba677afaSXin Li	}
130*ba677afaSXin Li	if totalNotFound != 0 {
131*ba677afaSXin Li		t.Errorf("expected %v, got %v", 0, totalNotFound)
132*ba677afaSXin Li	}
133*ba677afaSXin Li	if len(foundCounts) != 0 {
134*ba677afaSXin Li		t.Fatalf("expected %v, got %v", 0, len(foundCounts))
135*ba677afaSXin Li	}
136*ba677afaSXin Li}
137*ba677afaSXin Li
138*ba677afaSXin Li// ===== 2.2 Reporter top-level function tests =====
139*ba677afaSXin Lifunc Test2_2ReporterCanMakeReportFromPackage(t *testing.T) {
140*ba677afaSXin Li	pkg := &v2_2.Package{
141*ba677afaSXin Li		FilesAnalyzed: true,
142*ba677afaSXin Li		Files: []*v2_2.File{
143*ba677afaSXin Li			{FileSPDXIdentifier: "File0", LicenseConcluded: "MIT"},
144*ba677afaSXin Li			{FileSPDXIdentifier: "File1", LicenseConcluded: "NOASSERTION"},
145*ba677afaSXin Li			{FileSPDXIdentifier: "File2", LicenseConcluded: "MIT"},
146*ba677afaSXin Li			{FileSPDXIdentifier: "File3", LicenseConcluded: "MIT"},
147*ba677afaSXin Li			{FileSPDXIdentifier: "File4", LicenseConcluded: "GPL-2.0-only"},
148*ba677afaSXin Li			{FileSPDXIdentifier: "File5", LicenseConcluded: "NOASSERTION"},
149*ba677afaSXin Li			{FileSPDXIdentifier: "File6", LicenseConcluded: "GPL-2.0-only"},
150*ba677afaSXin Li			{FileSPDXIdentifier: "File7", LicenseConcluded: "GPL-2.0-only"},
151*ba677afaSXin Li			{FileSPDXIdentifier: "File8", LicenseConcluded: "MIT"},
152*ba677afaSXin Li			{FileSPDXIdentifier: "File9", LicenseConcluded: "GPL-2.0-only"},
153*ba677afaSXin Li			{FileSPDXIdentifier: "File10", LicenseConcluded: "GPL-2.0-only"},
154*ba677afaSXin Li			{FileSPDXIdentifier: "File11", LicenseConcluded: "NOASSERTION"},
155*ba677afaSXin Li		},
156*ba677afaSXin Li	}
157*ba677afaSXin Li
158*ba677afaSXin Li	// what we want to get, as a buffer of bytes
159*ba677afaSXin Li	want := bytes.NewBufferString(`   9  License found
160*ba677afaSXin Li   3  License not found
161*ba677afaSXin Li  12  TOTAL
162*ba677afaSXin Li
163*ba677afaSXin Li  5  GPL-2.0-only
164*ba677afaSXin Li  4  MIT
165*ba677afaSXin Li  9  TOTAL FOUND
166*ba677afaSXin Li`)
167*ba677afaSXin Li
168*ba677afaSXin Li	// render as buffer of bytes
169*ba677afaSXin Li	var got bytes.Buffer
170*ba677afaSXin Li	err := Generate2_2(pkg, &got)
171*ba677afaSXin Li	if err != nil {
172*ba677afaSXin Li		t.Errorf("Expected nil error, got %v", err)
173*ba677afaSXin Li	}
174*ba677afaSXin Li
175*ba677afaSXin Li	// check that they match
176*ba677afaSXin Li	c := bytes.Compare(want.Bytes(), got.Bytes())
177*ba677afaSXin Li	if c != 0 {
178*ba677afaSXin Li		t.Errorf("Expected %v, got %v", want.String(), got.String())
179*ba677afaSXin Li	}
180*ba677afaSXin Li}
181*ba677afaSXin Li
182*ba677afaSXin Lifunc Test2_2ReporterReturnsErrorIfPackageFilesNotAnalyzed(t *testing.T) {
183*ba677afaSXin Li	pkg := &v2_2.Package{
184*ba677afaSXin Li		FilesAnalyzed: false,
185*ba677afaSXin Li	}
186*ba677afaSXin Li
187*ba677afaSXin Li	// render as buffer of bytes
188*ba677afaSXin Li	var got bytes.Buffer
189*ba677afaSXin Li	err := Generate2_2(pkg, &got)
190*ba677afaSXin Li	if err == nil {
191*ba677afaSXin Li		t.Errorf("Expected non-nil error, got nil")
192*ba677afaSXin Li	}
193*ba677afaSXin Li}
194*ba677afaSXin Li
195*ba677afaSXin Li// ===== 2.2 Utility functions =====
196*ba677afaSXin Li
197*ba677afaSXin Lifunc Test2_2CanGetCountsOfLicenses(t *testing.T) {
198*ba677afaSXin Li	pkg := &v2_2.Package{
199*ba677afaSXin Li		FilesAnalyzed: true,
200*ba677afaSXin Li		Files: []*v2_2.File{
201*ba677afaSXin Li			{FileSPDXIdentifier: "File0", LicenseConcluded: "MIT"},
202*ba677afaSXin Li			{FileSPDXIdentifier: "File1", LicenseConcluded: "NOASSERTION"},
203*ba677afaSXin Li			{FileSPDXIdentifier: "File2", LicenseConcluded: "MIT"},
204*ba677afaSXin Li			{FileSPDXIdentifier: "File3", LicenseConcluded: "MIT"},
205*ba677afaSXin Li			{FileSPDXIdentifier: "File4", LicenseConcluded: "GPL-2.0-only"},
206*ba677afaSXin Li			{FileSPDXIdentifier: "File5", LicenseConcluded: "NOASSERTION"},
207*ba677afaSXin Li			{FileSPDXIdentifier: "File6", LicenseConcluded: "GPL-2.0-only"},
208*ba677afaSXin Li			{FileSPDXIdentifier: "File7", LicenseConcluded: "GPL-2.0-only"},
209*ba677afaSXin Li			{FileSPDXIdentifier: "File8", LicenseConcluded: "MIT"},
210*ba677afaSXin Li			{FileSPDXIdentifier: "File9", LicenseConcluded: "GPL-2.0-only"},
211*ba677afaSXin Li			{FileSPDXIdentifier: "File10", LicenseConcluded: "GPL-2.0-only"},
212*ba677afaSXin Li			{FileSPDXIdentifier: "File11", LicenseConcluded: "NOASSERTION"},
213*ba677afaSXin Li		},
214*ba677afaSXin Li	}
215*ba677afaSXin Li
216*ba677afaSXin Li	totalFound, totalNotFound, foundCounts := countLicenses2_2(pkg)
217*ba677afaSXin Li	if totalFound != 9 {
218*ba677afaSXin Li		t.Errorf("expected %v, got %v", 9, totalFound)
219*ba677afaSXin Li	}
220*ba677afaSXin Li	if totalNotFound != 3 {
221*ba677afaSXin Li		t.Errorf("expected %v, got %v", 3, totalNotFound)
222*ba677afaSXin Li	}
223*ba677afaSXin Li	if len(foundCounts) != 2 {
224*ba677afaSXin Li		t.Fatalf("expected %v, got %v", 2, len(foundCounts))
225*ba677afaSXin Li	}
226*ba677afaSXin Li
227*ba677afaSXin Li	// foundCounts is a map of license ID to count of licenses
228*ba677afaSXin Li	// confirm that the results are as expected
229*ba677afaSXin Li	if foundCounts["GPL-2.0-only"] != 5 {
230*ba677afaSXin Li		t.Errorf("expected %v, got %v", 5, foundCounts["GPL-2.0-only"])
231*ba677afaSXin Li	}
232*ba677afaSXin Li	if foundCounts["MIT"] != 4 {
233*ba677afaSXin Li		t.Errorf("expected %v, got %v", 4, foundCounts["MIT"])
234*ba677afaSXin Li	}
235*ba677afaSXin Li}
236*ba677afaSXin Li
237*ba677afaSXin Lifunc Test2_2NilPackageReturnsZeroCountsOfLicenses(t *testing.T) {
238*ba677afaSXin Li	totalFound, totalNotFound, foundCounts := countLicenses2_2(nil)
239*ba677afaSXin Li	if totalFound != 0 {
240*ba677afaSXin Li		t.Errorf("expected %v, got %v", 0, totalFound)
241*ba677afaSXin Li	}
242*ba677afaSXin Li	if totalNotFound != 0 {
243*ba677afaSXin Li		t.Errorf("expected %v, got %v", 0, totalNotFound)
244*ba677afaSXin Li	}
245*ba677afaSXin Li	if len(foundCounts) != 0 {
246*ba677afaSXin Li		t.Fatalf("expected %v, got %v", 0, len(foundCounts))
247*ba677afaSXin Li	}
248*ba677afaSXin Li
249*ba677afaSXin Li	pkg := &v2_2.Package{}
250*ba677afaSXin Li	totalFound, totalNotFound, foundCounts = countLicenses2_2(pkg)
251*ba677afaSXin Li	if totalFound != 0 {
252*ba677afaSXin Li		t.Errorf("expected %v, got %v", 0, totalFound)
253*ba677afaSXin Li	}
254*ba677afaSXin Li	if totalNotFound != 0 {
255*ba677afaSXin Li		t.Errorf("expected %v, got %v", 0, totalNotFound)
256*ba677afaSXin Li	}
257*ba677afaSXin Li	if len(foundCounts) != 0 {
258*ba677afaSXin Li		t.Fatalf("expected %v, got %v", 0, len(foundCounts))
259*ba677afaSXin Li	}
260*ba677afaSXin Li}
261*ba677afaSXin Li
262*ba677afaSXin Li// ===== 2.3 Reporter top-level function tests =====
263*ba677afaSXin Lifunc Test2_3ReporterCanMakeReportFromPackage(t *testing.T) {
264*ba677afaSXin Li	pkg := &v2_3.Package{
265*ba677afaSXin Li		FilesAnalyzed: true,
266*ba677afaSXin Li		Files: []*v2_3.File{
267*ba677afaSXin Li			{FileSPDXIdentifier: "File0", LicenseConcluded: "MIT"},
268*ba677afaSXin Li			{FileSPDXIdentifier: "File1", LicenseConcluded: "NOASSERTION"},
269*ba677afaSXin Li			{FileSPDXIdentifier: "File2", LicenseConcluded: "MIT"},
270*ba677afaSXin Li			{FileSPDXIdentifier: "File3", LicenseConcluded: "MIT"},
271*ba677afaSXin Li			{FileSPDXIdentifier: "File4", LicenseConcluded: "GPL-2.0-only"},
272*ba677afaSXin Li			{FileSPDXIdentifier: "File5", LicenseConcluded: "NOASSERTION"},
273*ba677afaSXin Li			{FileSPDXIdentifier: "File6", LicenseConcluded: "GPL-2.0-only"},
274*ba677afaSXin Li			{FileSPDXIdentifier: "File7", LicenseConcluded: "GPL-2.0-only"},
275*ba677afaSXin Li			{FileSPDXIdentifier: "File8", LicenseConcluded: "MIT"},
276*ba677afaSXin Li			{FileSPDXIdentifier: "File9", LicenseConcluded: "GPL-2.0-only"},
277*ba677afaSXin Li			{FileSPDXIdentifier: "File10", LicenseConcluded: "GPL-2.0-only"},
278*ba677afaSXin Li			{FileSPDXIdentifier: "File11", LicenseConcluded: "NOASSERTION"},
279*ba677afaSXin Li		},
280*ba677afaSXin Li	}
281*ba677afaSXin Li
282*ba677afaSXin Li	// what we want to get, as a buffer of bytes
283*ba677afaSXin Li	want := bytes.NewBufferString(`   9  License found
284*ba677afaSXin Li   3  License not found
285*ba677afaSXin Li  12  TOTAL
286*ba677afaSXin Li
287*ba677afaSXin Li  5  GPL-2.0-only
288*ba677afaSXin Li  4  MIT
289*ba677afaSXin Li  9  TOTAL FOUND
290*ba677afaSXin Li`)
291*ba677afaSXin Li
292*ba677afaSXin Li	// render as buffer of bytes
293*ba677afaSXin Li	var got bytes.Buffer
294*ba677afaSXin Li	err := Generate2_3(pkg, &got)
295*ba677afaSXin Li	if err != nil {
296*ba677afaSXin Li		t.Errorf("Expected nil error, got %v", err)
297*ba677afaSXin Li	}
298*ba677afaSXin Li
299*ba677afaSXin Li	// check that they match
300*ba677afaSXin Li	c := bytes.Compare(want.Bytes(), got.Bytes())
301*ba677afaSXin Li	if c != 0 {
302*ba677afaSXin Li		t.Errorf("Expected %v, got %v", want.String(), got.String())
303*ba677afaSXin Li	}
304*ba677afaSXin Li}
305*ba677afaSXin Li
306*ba677afaSXin Lifunc Test2_3ReporterReturnsErrorIfPackageFilesNotAnalyzed(t *testing.T) {
307*ba677afaSXin Li	pkg := &v2_3.Package{
308*ba677afaSXin Li		FilesAnalyzed: false,
309*ba677afaSXin Li	}
310*ba677afaSXin Li
311*ba677afaSXin Li	// render as buffer of bytes
312*ba677afaSXin Li	var got bytes.Buffer
313*ba677afaSXin Li	err := Generate2_3(pkg, &got)
314*ba677afaSXin Li	if err == nil {
315*ba677afaSXin Li		t.Errorf("Expected non-nil error, got nil")
316*ba677afaSXin Li	}
317*ba677afaSXin Li}
318*ba677afaSXin Li
319*ba677afaSXin Li// ===== 2.3 Utility functions =====
320*ba677afaSXin Li
321*ba677afaSXin Lifunc Test2_3CanGetCountsOfLicenses(t *testing.T) {
322*ba677afaSXin Li	pkg := &v2_3.Package{
323*ba677afaSXin Li		FilesAnalyzed: true,
324*ba677afaSXin Li		Files: []*v2_3.File{
325*ba677afaSXin Li			{FileSPDXIdentifier: "File0", LicenseConcluded: "MIT"},
326*ba677afaSXin Li			{FileSPDXIdentifier: "File1", LicenseConcluded: "NOASSERTION"},
327*ba677afaSXin Li			{FileSPDXIdentifier: "File2", LicenseConcluded: "MIT"},
328*ba677afaSXin Li			{FileSPDXIdentifier: "File3", LicenseConcluded: "MIT"},
329*ba677afaSXin Li			{FileSPDXIdentifier: "File4", LicenseConcluded: "GPL-2.0-only"},
330*ba677afaSXin Li			{FileSPDXIdentifier: "File5", LicenseConcluded: "NOASSERTION"},
331*ba677afaSXin Li			{FileSPDXIdentifier: "File6", LicenseConcluded: "GPL-2.0-only"},
332*ba677afaSXin Li			{FileSPDXIdentifier: "File7", LicenseConcluded: "GPL-2.0-only"},
333*ba677afaSXin Li			{FileSPDXIdentifier: "File8", LicenseConcluded: "MIT"},
334*ba677afaSXin Li			{FileSPDXIdentifier: "File9", LicenseConcluded: "GPL-2.0-only"},
335*ba677afaSXin Li			{FileSPDXIdentifier: "File10", LicenseConcluded: "GPL-2.0-only"},
336*ba677afaSXin Li			{FileSPDXIdentifier: "File11", LicenseConcluded: "NOASSERTION"},
337*ba677afaSXin Li		},
338*ba677afaSXin Li	}
339*ba677afaSXin Li
340*ba677afaSXin Li	totalFound, totalNotFound, foundCounts := countLicenses2_3(pkg)
341*ba677afaSXin Li	if totalFound != 9 {
342*ba677afaSXin Li		t.Errorf("expected %v, got %v", 9, totalFound)
343*ba677afaSXin Li	}
344*ba677afaSXin Li	if totalNotFound != 3 {
345*ba677afaSXin Li		t.Errorf("expected %v, got %v", 3, totalNotFound)
346*ba677afaSXin Li	}
347*ba677afaSXin Li	if len(foundCounts) != 2 {
348*ba677afaSXin Li		t.Fatalf("expected %v, got %v", 2, len(foundCounts))
349*ba677afaSXin Li	}
350*ba677afaSXin Li
351*ba677afaSXin Li	// foundCounts is a map of license ID to count of licenses
352*ba677afaSXin Li	// confirm that the results are as expected
353*ba677afaSXin Li	if foundCounts["GPL-2.0-only"] != 5 {
354*ba677afaSXin Li		t.Errorf("expected %v, got %v", 5, foundCounts["GPL-2.0-only"])
355*ba677afaSXin Li	}
356*ba677afaSXin Li	if foundCounts["MIT"] != 4 {
357*ba677afaSXin Li		t.Errorf("expected %v, got %v", 4, foundCounts["MIT"])
358*ba677afaSXin Li	}
359*ba677afaSXin Li}
360*ba677afaSXin Li
361*ba677afaSXin Lifunc Test2_3NilPackageReturnsZeroCountsOfLicenses(t *testing.T) {
362*ba677afaSXin Li	totalFound, totalNotFound, foundCounts := countLicenses2_3(nil)
363*ba677afaSXin Li	if totalFound != 0 {
364*ba677afaSXin Li		t.Errorf("expected %v, got %v", 0, totalFound)
365*ba677afaSXin Li	}
366*ba677afaSXin Li	if totalNotFound != 0 {
367*ba677afaSXin Li		t.Errorf("expected %v, got %v", 0, totalNotFound)
368*ba677afaSXin Li	}
369*ba677afaSXin Li	if len(foundCounts) != 0 {
370*ba677afaSXin Li		t.Fatalf("expected %v, got %v", 0, len(foundCounts))
371*ba677afaSXin Li	}
372*ba677afaSXin Li
373*ba677afaSXin Li	pkg := &v2_3.Package{}
374*ba677afaSXin Li	totalFound, totalNotFound, foundCounts = countLicenses2_3(pkg)
375*ba677afaSXin Li	if totalFound != 0 {
376*ba677afaSXin Li		t.Errorf("expected %v, got %v", 0, totalFound)
377*ba677afaSXin Li	}
378*ba677afaSXin Li	if totalNotFound != 0 {
379*ba677afaSXin Li		t.Errorf("expected %v, got %v", 0, totalNotFound)
380*ba677afaSXin Li	}
381*ba677afaSXin Li	if len(foundCounts) != 0 {
382*ba677afaSXin Li		t.Fatalf("expected %v, got %v", 0, len(foundCounts))
383*ba677afaSXin Li	}
384*ba677afaSXin Li}
385