Home | History | Annotate | Download | only in analysis
      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