1 /******************************************************************************* 2 * Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors 3 * All rights reserved. This program and the accompanying materials 4 * are made available under the terms of the Eclipse Public License v1.0 5 * which accompanies this distribution, and is available at 6 * http://www.eclipse.org/legal/epl-v10.html 7 * 8 * Contributors: 9 * Marc R. Hoffmann - initial API and implementation 10 * 11 *******************************************************************************/ 12 package org.jacoco.core.internal.analysis; 13 14 import static org.junit.Assert.assertEquals; 15 16 import java.util.Collection; 17 import java.util.Collections; 18 19 import org.jacoco.core.analysis.IClassCoverage; 20 import org.jacoco.core.analysis.ICoverageNode; 21 import org.jacoco.core.analysis.ISourceFileCoverage; 22 import org.junit.Test; 23 24 /** 25 * Unit test for {@link PackageCoverageImpl}. 26 */ 27 public class PackageCoverageTest { 28 29 @Test 30 public void testProperties() { 31 Collection<IClassCoverage> classes = Collections 32 .singleton((IClassCoverage) new ClassCoverageImpl( 33 "org/jacoco/test/Sample", 0, false)); 34 Collection<ISourceFileCoverage> sourceFiles = Collections 35 .singleton((ISourceFileCoverage) new SourceFileCoverageImpl( 36 "Sample.java", "org/jacoco/test/Sample")); 37 PackageCoverageImpl data = new PackageCoverageImpl("org/jacoco/test", 38 classes, sourceFiles); 39 assertEquals(ICoverageNode.ElementType.PACKAGE, data.getElementType()); 40 assertEquals("org/jacoco/test", data.getName()); 41 assertEquals(classes, data.getClasses()); 42 assertEquals(sourceFiles, data.getSourceFiles()); 43 } 44 45 @Test 46 public void testCountersWithSources() { 47 // Classes with source reference will not considered for counters: 48 final ClassCoverageImpl classnode = new ClassCoverageImpl( 49 "org/jacoco/test/Sample", 0, false) { 50 { 51 classCounter = CounterImpl.getInstance(9, 0); 52 methodCounter = CounterImpl.getInstance(9, 0); 53 branchCounter = CounterImpl.getInstance(9, 0); 54 instructionCounter = CounterImpl.getInstance(9, 0); 55 } 56 }; 57 classnode.setSourceFileName("Sample.java"); 58 // Only source files will be considered for counters: 59 final ISourceFileCoverage sourceFile = new SourceFileCoverageImpl( 60 "Sample.java", "org/jacoco/test/Sample") { 61 { 62 classCounter = CounterImpl.getInstance(1, 0); 63 methodCounter = CounterImpl.getInstance(2, 0); 64 branchCounter = CounterImpl.getInstance(3, 0); 65 instructionCounter = CounterImpl.getInstance(4, 0); 66 } 67 }; 68 PackageCoverageImpl data = new PackageCoverageImpl("org/jacoco/test", 69 Collections.singleton((IClassCoverage) classnode), 70 Collections.singleton(sourceFile)); 71 assertEquals(CounterImpl.getInstance(1, 0), data.getClassCounter()); 72 assertEquals(CounterImpl.getInstance(2, 0), data.getMethodCounter()); 73 assertEquals(CounterImpl.getInstance(3, 0), data.getBranchCounter()); 74 assertEquals(CounterImpl.getInstance(4, 0), 75 data.getInstructionCounter()); 76 } 77 78 @Test 79 public void testCountersWithoutSources() { 80 // Classes without source reference will be considered for counters: 81 final ClassCoverageImpl classnode = new ClassCoverageImpl( 82 "org/jacoco/test/Sample", 0, false) { 83 { 84 classCounter = CounterImpl.getInstance(1, 0); 85 methodCounter = CounterImpl.getInstance(2, 0); 86 branchCounter = CounterImpl.getInstance(3, 0); 87 instructionCounter = CounterImpl.getInstance(4, 0); 88 } 89 }; 90 final Collection<ISourceFileCoverage> sourceFiles = Collections 91 .emptySet(); 92 PackageCoverageImpl data = new PackageCoverageImpl("org/jacoco/test", 93 Collections.singleton((IClassCoverage) classnode), sourceFiles); 94 assertEquals(CounterImpl.getInstance(1, 0), data.getClassCounter()); 95 assertEquals(CounterImpl.getInstance(2, 0), data.getMethodCounter()); 96 assertEquals(CounterImpl.getInstance(3, 0), data.getBranchCounter()); 97 assertEquals(CounterImpl.getInstance(4, 0), 98 data.getInstructionCounter()); 99 assertEquals(CounterImpl.getInstance(0, 0), data.getLineCounter()); 100 } 101 102 } 103