/******************************************************************************* * 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()); } }