/******************************************************************************* * 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 static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.Arrays; 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.IPackageCoverage; import org.jacoco.core.analysis.ISourceFileCoverage; import org.junit.Test; /** * Unit tests for {@link BundleCoverageImpl}. */ public class BundleCoverageImplTest { @Test public void testProperties() { Collection<IClassCoverage> classes = Collections.emptySet(); Collection<ISourceFileCoverage> sourcefiles = Collections.emptySet(); Collection<IPackageCoverage> packages = Collections .singleton((IPackageCoverage) new PackageCoverageImpl("p1", classes, sourcefiles)); BundleCoverageImpl bundle = new BundleCoverageImpl("testbundle", packages); assertEquals(ICoverageNode.ElementType.BUNDLE, bundle.getElementType()); assertEquals("testbundle", bundle.getName()); assertEquals(packages, bundle.getPackages()); } @Test public void testCounters() { Collection<IClassCoverage> classes = Collections.emptySet(); Collection<ISourceFileCoverage> sourcefiles = Collections.emptySet(); final IPackageCoverage p1 = new PackageCoverageImpl("p1", classes, sourcefiles) { { classCounter = CounterImpl.getInstance(1, 0); methodCounter = CounterImpl.getInstance(2, 0); branchCounter = CounterImpl.getInstance(3, 0); instructionCounter = CounterImpl.getInstance(4, 0); lineCounter = CounterImpl.getInstance(5, 0); } }; final IPackageCoverage p2 = new PackageCoverageImpl("p1", classes, sourcefiles) { { classCounter = CounterImpl.getInstance(1, 0); methodCounter = CounterImpl.getInstance(2, 0); branchCounter = CounterImpl.getInstance(3, 0); instructionCounter = CounterImpl.getInstance(4, 0); lineCounter = CounterImpl.getInstance(5, 0); } }; BundleCoverageImpl bundle = new BundleCoverageImpl("testbundle", Arrays.asList(p1, p2)); assertEquals(CounterImpl.getInstance(2, 0), bundle.getClassCounter()); assertEquals(CounterImpl.getInstance(4, 0), bundle.getMethodCounter()); assertEquals(CounterImpl.getInstance(6, 0), bundle.getBranchCounter()); assertEquals(CounterImpl.getInstance(8, 0), bundle.getInstructionCounter()); assertEquals(CounterImpl.getInstance(10, 0), bundle.getLineCounter()); } @Test public void testGroupByPackage() { ClassCoverageImpl ca = new ClassCoverageImpl("p1/A", 1, false); ca.setSourceFileName("A.java"); ClassCoverageImpl cb = new ClassCoverageImpl("p2/B", 2, false); cb.setSourceFileName("B.java"); ISourceFileCoverage sb = new SourceFileCoverageImpl("B.java", "p2"); ISourceFileCoverage sc = new SourceFileCoverageImpl("C.java", "p3"); BundleCoverageImpl bundle = new BundleCoverageImpl("bundle", Arrays.asList((IClassCoverage) ca, (IClassCoverage) cb), Arrays.asList(sb, sc)); Collection<IPackageCoverage> packages = bundle.getPackages(); assertEquals(3, packages.size(), 0.0); IPackageCoverage p1 = findPackage("p1", packages); assertNotNull(p1); assertEquals(Collections.singletonList(ca), p1.getClasses()); assertTrue(p1.getSourceFiles().isEmpty()); IPackageCoverage p2 = findPackage("p2", packages); assertNotNull(p2); assertEquals(Collections.singletonList(cb), p2.getClasses()); assertEquals(Collections.singletonList(sb), p2.getSourceFiles()); IPackageCoverage p3 = findPackage("p3", packages); assertNotNull(p3); assertTrue(p3.getClasses().isEmpty()); assertEquals(Collections.singletonList(sc), p3.getSourceFiles()); } private IPackageCoverage findPackage(String name, Collection<IPackageCoverage> packages) { for (IPackageCoverage p : packages) { if (name.equals(p.getName())) { return p; } } return null; } }