1e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov/******************************************************************************* 2398ee59bebad6835dab57b60157eff16d511709eMarc R. Hoffmann * Copyright (c) 2009, 2015 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.internal.analysis; 13e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 14e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport static org.junit.Assert.assertEquals; 15e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 16e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport org.jacoco.core.analysis.ICoverageNode; 17e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport org.junit.Test; 18e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 19e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov/** 20e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * Unit test for {@link MethodCoverageImpl}. 21e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov */ 22e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovpublic class MethodCoverageImplTest { 23e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 24e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 25e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testProperties() { 26e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov // Example: java.util.Collections.emptySet() 27e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl node = new MethodCoverageImpl("emptySet", 28e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov "()Ljava/util/Set;", 29e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov "<T:Ljava/lang/Object;>()Ljava/util/Set<TT;>;"); 30e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(ICoverageNode.ElementType.METHOD, node.getElementType()); 31e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals("emptySet", node.getName()); 32e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals("()Ljava/util/Set;", node.getDesc()); 33e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals("<T:Ljava/lang/Object;>()Ljava/util/Set<TT;>;", 34e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov node.getSignature()); 35e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 36e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 37e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 38e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testEmptyMethod() { 39e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov ICoverageNode node = new MethodCoverageImpl("sample", "()V", null); 40e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 41e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.COUNTER_0_0, node.getInstructionCounter()); 42e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.COUNTER_0_0, node.getBranchCounter()); 43e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.COUNTER_0_0, node.getLineCounter()); 44e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.COUNTER_0_0, node.getComplexityCounter()); 45e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.COUNTER_0_0, node.getMethodCounter()); 46e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.COUNTER_0_0, node.getClassCounter()); 47e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 48e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 49e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 50e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testIncrementMissedInstructions() { 51e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl node = new MethodCoverageImpl("sample", "()V", null); 52e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov node.increment(CounterImpl.getInstance(25, 0), CounterImpl.COUNTER_0_0, 53e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 3); 54e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov node.incrementMethodCounter(); 55e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.COUNTER_1_0, node.getMethodCounter()); 56e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.COUNTER_1_0, node.getComplexityCounter()); 57e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 58e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 59e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 60e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testIncrementCoveredInstructions() { 61e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl node = new MethodCoverageImpl("sample", "()V", null); 62e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov node.increment(CounterImpl.getInstance(12, 13), 63e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov CounterImpl.COUNTER_0_0, 3); 64e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov node.incrementMethodCounter(); 65e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.COUNTER_0_1, node.getMethodCounter()); 66e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.COUNTER_0_1, node.getComplexityCounter()); 67e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 68e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 69e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 70e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testIncrementComplexity1() { 71e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl node = new MethodCoverageImpl("sample", "()V", null); 72e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov node.increment(CounterImpl.COUNTER_0_0, CounterImpl.COUNTER_0_0, 3); 73e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.COUNTER_0_0, node.getComplexityCounter()); 74e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 75e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 76e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 77e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testIncrementComplexity2() { 78e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl node = new MethodCoverageImpl("sample", "()V", null); 79e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov node.increment(CounterImpl.COUNTER_0_0, CounterImpl.getInstance(2, 0), 80e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 3); 81e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.getInstance(1, 0), node.getComplexityCounter()); 82e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 83e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 84e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 85e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testIncrementComplexity3() { 86e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl node = new MethodCoverageImpl("sample", "()V", null); 87e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov node.increment(CounterImpl.COUNTER_0_0, CounterImpl.getInstance(1, 1), 88e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 3); 89e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.getInstance(1, 0), node.getComplexityCounter()); 90e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 91e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 92e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 93e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testIncrementComplexity4() { 94e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl node = new MethodCoverageImpl("sample", "()V", null); 95e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov node.increment(CounterImpl.COUNTER_0_0, CounterImpl.getInstance(0, 2), 96e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 3); 97e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.getInstance(0, 1), node.getComplexityCounter()); 98e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 99e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 100e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 101e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testIncrementComplexity5() { 102e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl node = new MethodCoverageImpl("sample", "()V", null); 103e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov node.increment(CounterImpl.COUNTER_0_0, CounterImpl.getInstance(3, 0), 104e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 3); 105e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.getInstance(2, 0), node.getComplexityCounter()); 106e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 107e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 108e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 109e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testIncrementComplexity6() { 110e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl node = new MethodCoverageImpl("sample", "()V", null); 111e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov node.increment(CounterImpl.COUNTER_0_0, CounterImpl.getInstance(2, 1), 112e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 3); 113e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.getInstance(2, 0), node.getComplexityCounter()); 114e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 115e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 116e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 117e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testIncrementComplexity7() { 118e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl node = new MethodCoverageImpl("sample", "()V", null); 119e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov node.increment(CounterImpl.COUNTER_0_0, CounterImpl.getInstance(1, 2), 120e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 3); 121e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.getInstance(1, 1), node.getComplexityCounter()); 122e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 123e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 124e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 125e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testIncrementComplexity8() { 126e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov MethodCoverageImpl node = new MethodCoverageImpl("sample", "()V", null); 127e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov node.increment(CounterImpl.COUNTER_0_0, CounterImpl.getInstance(0, 3), 128e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 3); 129e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(CounterImpl.getInstance(0, 2), node.getComplexityCounter()); 130e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 131e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov} 132