1e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov/******************************************************************************* 2b9d1b54e300318b470d9fedccc69d75187016444Evgeny Mandrikov * Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors 3e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * All rights reserved. This program and the accompanying materials 4e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * are made available under the terms of the Eclipse Public License v1.0 5e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * which accompanies this distribution, and is available at 6e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * http://www.eclipse.org/legal/epl-v10.html 7e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * 8e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * Contributors: 9e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * Marc R. Hoffmann - initial API and implementation 10e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * 11e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov *******************************************************************************/ 12e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovpackage org.jacoco.core.analysis; 13e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 14e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport static org.junit.Assert.assertEquals; 15e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport static org.junit.Assert.assertNotNull; 16e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport static org.junit.Assert.assertTrue; 17e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 18e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport java.util.Arrays; 19e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport java.util.Collection; 20e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport java.util.Collections; 21e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport java.util.HashMap; 22e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport java.util.HashSet; 23e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport java.util.Map; 24e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport java.util.Set; 25e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 26e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport org.jacoco.core.internal.analysis.ClassCoverageImpl; 27e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport org.jacoco.core.internal.analysis.CounterImpl; 28e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport org.jacoco.core.internal.analysis.MethodCoverageImpl; 29e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport org.junit.Before; 30e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport org.junit.Test; 31e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 32e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov/** 33e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * Unit tests for {@link CoverageBuilder}. 34e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov */ 35e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovpublic class CoverageBuilderTest { 36e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 37e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov private CoverageBuilder coverageBuilder; 38e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 39e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Before 40e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void setup() { 41e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov coverageBuilder = new CoverageBuilder(); 42e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 43e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 44e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 45e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testCreateClassMissed() { 46e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final MethodCoverageImpl method = new MethodCoverageImpl("doit", "()V", 47e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov null); 48e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 6); 49e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 7); 50e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 8); 51e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method.incrementMethodCounter(); 5260c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(123L, false, "Sample", null, method); 53e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 54e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final Collection<IClassCoverage> classes = coverageBuilder.getClasses(); 55e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, classes.size()); 56e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov IClassCoverage c = classes.iterator().next(); 57e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals("Sample", c.getName()); 58e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, c.getClassCounter().getTotalCount()); 59e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(0, c.getClassCounter().getCoveredCount()); 60e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, c.getMethodCounter().getTotalCount()); 61e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(0, c.getMethodCounter().getCoveredCount()); 62e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(3, c.getLineCounter().getTotalCount()); 63e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(0, c.getLineCounter().getCoveredCount()); 64e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 65e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final Collection<IMethodCoverage> methods = c.getMethods(); 66e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, methods.size()); 67e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov IMethodCoverage m = methods.iterator().next(); 68e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals("doit", m.getName()); 69e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals("()V", m.getDesc()); 70e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, m.getMethodCounter().getTotalCount()); 71e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(0, m.getMethodCounter().getCoveredCount()); 72e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(3, m.getLineCounter().getTotalCount()); 73e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(0, m.getLineCounter().getCoveredCount()); 74e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 75e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 76e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 77e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testCreateClassCovered() { 78e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final MethodCoverageImpl method = new MethodCoverageImpl("doit", "()V", 79e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov null); 80e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method.increment(CounterImpl.COUNTER_0_1, CounterImpl.COUNTER_0_0, 6); 81e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method.increment(CounterImpl.COUNTER_0_1, CounterImpl.COUNTER_0_0, 7); 82e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method.increment(CounterImpl.COUNTER_0_1, CounterImpl.COUNTER_0_0, 8); 83e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method.incrementMethodCounter(); 8460c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(123L, false, "Sample", null, method); 85e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 86e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final Collection<IClassCoverage> classes = coverageBuilder.getClasses(); 87e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, classes.size()); 88e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov IClassCoverage c = classes.iterator().next(); 89e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals("Sample", c.getName()); 90e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, c.getClassCounter().getTotalCount()); 91e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, c.getClassCounter().getCoveredCount()); 92e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, c.getMethodCounter().getTotalCount()); 93e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, c.getMethodCounter().getCoveredCount()); 94e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(3, c.getLineCounter().getTotalCount()); 95e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(3, c.getLineCounter().getCoveredCount()); 96e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 97e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final Collection<IMethodCoverage> methods = c.getMethods(); 98e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, methods.size()); 99e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov IMethodCoverage m = methods.iterator().next(); 100e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals("doit", m.getName()); 101e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals("()V", m.getDesc()); 102e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, m.getMethodCounter().getTotalCount()); 103e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, m.getMethodCounter().getCoveredCount()); 104e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(3, m.getLineCounter().getTotalCount()); 105e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(3, m.getLineCounter().getCoveredCount()); 106e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 107e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 108e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 109e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testIgnoreClassesWithoutCode() { 110e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final MethodCoverageImpl method = new MethodCoverageImpl("doit", "()V", 111e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov null); 11260c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(123L, false, "Sample", null, method); 113e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 114e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final Collection<IClassCoverage> classes = coverageBuilder.getClasses(); 115e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertTrue(classes.isEmpty()); 116e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 117e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 118e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test(expected = IllegalStateException.class) 119e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testDuplicateClassNameDifferent() { 120e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl method = new MethodCoverageImpl("doit", "()V", null); 121e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 3); 12260c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(123L, false, "Sample", null, method); 123e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 124e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov // Add class with different id must fail: 125e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method = new MethodCoverageImpl("doit", "()V", null); 126e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 3); 12760c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(345L, false, "Sample", null, method); 128e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 129e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 130e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 131e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testDuplicateClassNameIdentical() { 132e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl method = new MethodCoverageImpl("doit", "()V", null); 133e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 3); 13460c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(123L, false, "Sample", null, method); 135e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 136e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov // Add class with same id: 137e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method = new MethodCoverageImpl("doit", "()V", null); 138e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 3); 13960c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(123L, false, "Sample", null, method); 140e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 141e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov // Second add must be ignored: 142e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final Collection<IClassCoverage> classes = coverageBuilder.getClasses(); 143e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, classes.size()); 144e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 145e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 146e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 147e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testCreateSourceFile() { 148e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final MethodCoverageImpl method1 = new MethodCoverageImpl("doit", 149e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov "()V", null); 150e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method1.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 3); 15160c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(123L, false, "Sample", "Sample.java", method1); 152e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 153e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final MethodCoverageImpl method2 = new MethodCoverageImpl("doit", 154e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov "()V", null); 155e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method2.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 6); 15660c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(234L, false, "Second", "Sample.java", method2); 157e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 158e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final Collection<ISourceFileCoverage> sourcefiles = coverageBuilder 159e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov .getSourceFiles(); 160e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(1, sourcefiles.size()); 161e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov ISourceFileCoverage s = sourcefiles.iterator().next(); 162e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 163e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(2, s.getClassCounter().getTotalCount()); 164e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(0, s.getClassCounter().getCoveredCount()); 165e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 166e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 167e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 168f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail public void testCreateSourceFileDuplicateClassNameIdentical() { 169f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail final MethodCoverageImpl method1 = new MethodCoverageImpl("doit", 170f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail "()V", null); 171f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail method1.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 3); 172f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail addClass(123L, false, "Sample", "Sample.java", method1); 173f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail 174f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail final MethodCoverageImpl method2 = new MethodCoverageImpl("doit", 175f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail "()V", null); 176f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail method2.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 3); 177f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail addClass(123L, false, "Sample", "Sample.java", method2); 178f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail 179f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail final Collection<ISourceFileCoverage> sourcefiles = coverageBuilder 180f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail .getSourceFiles(); 181f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail assertEquals(1, sourcefiles.size()); 182f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail ISourceFileCoverage s = sourcefiles.iterator().next(); 183f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail 184f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail assertEquals(1, s.getClassCounter().getTotalCount()); 185f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail assertEquals(0, s.getClassCounter().getCoveredCount()); 186f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail } 187f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail 188f2aef08a63e3867a7db781040950d8a54078fcf7Brett Kail @Test 189e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testGetBundle() { 190e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final MethodCoverageImpl method1 = new MethodCoverageImpl("doit", 191e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov "()V", null); 192e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method1.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 3); 19360c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(1, false, "org/jacoco/examples/Sample1", null, method1); 194e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 195e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final MethodCoverageImpl method2 = new MethodCoverageImpl("doit", 196e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov "()V", null); 197e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method2.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 6); 19860c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(2, false, "org/jacoco/examples/Sample2", null, method2); 199e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 200e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final MethodCoverageImpl method3 = new MethodCoverageImpl("doit", 201e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov "()V", null); 202e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov method3.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 1); 20360c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(3, false, "Sample3", null, method3); 204e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 205e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov IBundleCoverage bundle = coverageBuilder.getBundle("testbundle"); 206e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals("testbundle", bundle.getName()); 207e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 208e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final Collection<IPackageCoverage> packages = bundle.getPackages(); 209e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(2, packages.size()); 210e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov Map<String, IPackageCoverage> packagesByName = new HashMap<String, IPackageCoverage>(); 211e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov for (IPackageCoverage p : packages) { 212e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov packagesByName.put(p.getName(), p); 213e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 214e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 215e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov IPackageCoverage p1 = packagesByName.get("org/jacoco/examples"); 216e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertNotNull(p1); 217e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals( 218e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov new HashSet<String>(Arrays.asList( 219e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov "org/jacoco/examples/Sample1", 220e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov "org/jacoco/examples/Sample2")), 221e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov getNames(p1.getClasses())); 222e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 223e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov IPackageCoverage p2 = packagesByName.get(""); 224e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertNotNull(p2); 225e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(Collections.singleton("Sample3"), 226e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov getNames(p2.getClasses())); 227e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 228e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 22960c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann @Test 23060c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann public void testGetNoMatchClasses() { 23160c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann MethodCoverageImpl m = new MethodCoverageImpl("doit", "()V", null); 23260c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann m.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 1); 23360c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(1, true, "Sample1", null, m); 23460c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann 23560c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann m = new MethodCoverageImpl("doit", "()V", null); 23660c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann m.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 2); 23760c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(2, true, "Sample2", null, m); 23860c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann 23960c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann m = new MethodCoverageImpl("doit", "()V", null); 24060c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann m.increment(CounterImpl.COUNTER_1_0, CounterImpl.COUNTER_0_0, 3); 24160c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann addClass(3, false, "Sample3", null, m); 24260c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann 24360c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann final Set<String> actual = getNames(coverageBuilder.getNoMatchClasses()); 24460c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann final Set<String> expected = new HashSet<String>(Arrays.asList( 24560c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann "Sample1", "Sample2")); 24660c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann 24760c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann assertEquals(expected, actual); 24860c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann } 24960c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann 250e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov private Set<String> getNames(Collection<? extends ICoverageNode> nodes) { 251e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov Set<String> result = new HashSet<String>(); 252e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov for (ICoverageNode n : nodes) { 253e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov result.add(n.getName()); 254e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 255e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov return result; 256e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 257e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 25860c33d63e75c1b0a5da9bd58be1f0b5434240220Marc R. Hoffmann private void addClass(long id, boolean nomatch, String name, String source, 259e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl... methods) { 260e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final ClassCoverageImpl coverage = new ClassCoverageImpl(name, id, 261f4622217085198f3ae42906934026961b29d1111Marc R. Hoffmann nomatch); 262e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov coverage.setSourceFileName(source); 263e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov for (MethodCoverageImpl m : methods) { 264e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov coverage.addMethod(m); 265e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 266e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov coverageBuilder.visitCoverage(coverage); 267e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 268e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov} 269