blob: 599ea4e6ff6dcda82eb061e0de66f013e2cda3da [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2017 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());
}
}