aboutsummaryrefslogtreecommitdiffstats
path: root/org.jacoco.core.test/src/org/jacoco/core/internal/analysis/PackageCoverageTest.java
blob: 06478a56efa2083986de0dedbbf02fa7af120392 (plain)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*******************************************************************************
 * Copyright (c) 2009, 2016 Mountainminds GmbH & Co. KG and Contributors
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Marc R. Hoffmann - initial API and implementation
 *    
 *******************************************************************************/
package org.jacoco.core.internal.analysis;

import static org.junit.Assert.assertEquals;

import java.util.Collection;
import java.util.Collections;

import org.jacoco.core.analysis.IClassCoverage;
import org.jacoco.core.analysis.ICoverageNode;
import org.jacoco.core.analysis.ISourceFileCoverage;
import org.junit.Test;

/**
 * Unit test for {@link PackageCoverageImpl}.
 */
public class PackageCoverageTest {

	@Test
	public void testProperties() {
		Collection<IClassCoverage> classes = Collections
				.singleton((IClassCoverage) new ClassCoverageImpl(
						"org/jacoco/test/Sample", 0, false));
		Collection<ISourceFileCoverage> sourceFiles = Collections
				.singleton((ISourceFileCoverage) new SourceFileCoverageImpl(
						"Sample.java", "org/jacoco/test/Sample"));
		PackageCoverageImpl data = new PackageCoverageImpl("org/jacoco/test",
				classes, sourceFiles);
		assertEquals(ICoverageNode.ElementType.PACKAGE, data.getElementType());
		assertEquals("org/jacoco/test", data.getName());
		assertEquals(classes, data.getClasses());
		assertEquals(sourceFiles, data.getSourceFiles());
	}

	@Test
	public void testCountersWithSources() {
		// Classes with source reference will not considered for counters:
		final ClassCoverageImpl classnode = new ClassCoverageImpl(
				"org/jacoco/test/Sample", 0, false) {
			{
				classCounter = CounterImpl.getInstance(9, 0);
				methodCounter = CounterImpl.getInstance(9, 0);
				branchCounter = CounterImpl.getInstance(9, 0);
				instructionCounter = CounterImpl.getInstance(9, 0);
			}
		};
		classnode.setSourceFileName("Sample.java");
		// Only source files will be considered for counters:
		final ISourceFileCoverage sourceFile = new SourceFileCoverageImpl(
				"Sample.java", "org/jacoco/test/Sample") {
			{
				classCounter = CounterImpl.getInstance(1, 0);
				methodCounter = CounterImpl.getInstance(2, 0);
				branchCounter = CounterImpl.getInstance(3, 0);
				instructionCounter = CounterImpl.getInstance(4, 0);
			}
		};
		PackageCoverageImpl data = new PackageCoverageImpl("org/jacoco/test",
				Collections.singleton((IClassCoverage) classnode),
				Collections.singleton(sourceFile));
		assertEquals(CounterImpl.getInstance(1, 0), data.getClassCounter());
		assertEquals(CounterImpl.getInstance(2, 0), data.getMethodCounter());
		assertEquals(CounterImpl.getInstance(3, 0), data.getBranchCounter());
		assertEquals(CounterImpl.getInstance(4, 0),
				data.getInstructionCounter());
	}

	@Test
	public void testCountersWithoutSources() {
		// Classes without source reference will be considered for counters:
		final ClassCoverageImpl classnode = new ClassCoverageImpl(
				"org/jacoco/test/Sample", 0, false) {
			{
				classCounter = CounterImpl.getInstance(1, 0);
				methodCounter = CounterImpl.getInstance(2, 0);
				branchCounter = CounterImpl.getInstance(3, 0);
				instructionCounter = CounterImpl.getInstance(4, 0);
			}
		};
		final Collection<ISourceFileCoverage> sourceFiles = Collections
				.emptySet();
		PackageCoverageImpl data = new PackageCoverageImpl("org/jacoco/test",
				Collections.singleton((IClassCoverage) classnode), sourceFiles);
		assertEquals(CounterImpl.getInstance(1, 0), data.getClassCounter());
		assertEquals(CounterImpl.getInstance(2, 0), data.getMethodCounter());
		assertEquals(CounterImpl.getInstance(3, 0), data.getBranchCounter());
		assertEquals(CounterImpl.getInstance(4, 0),
				data.getInstructionCounter());
		assertEquals(CounterImpl.getInstance(0, 0), data.getLineCounter());
	}

}