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.analysis; 13 14 import static org.jacoco.core.analysis.ICoverageNode.CounterEntity.BRANCH; 15 import static org.jacoco.core.analysis.ICoverageNode.CounterEntity.CLASS; 16 import static org.jacoco.core.analysis.ICoverageNode.CounterEntity.COMPLEXITY; 17 import static org.jacoco.core.analysis.ICoverageNode.CounterEntity.INSTRUCTION; 18 import static org.jacoco.core.analysis.ICoverageNode.CounterEntity.LINE; 19 import static org.jacoco.core.analysis.ICoverageNode.CounterEntity.METHOD; 20 import static org.junit.Assert.assertEquals; 21 22 import java.util.Arrays; 23 24 import org.jacoco.core.analysis.ICoverageNode.ElementType; 25 import org.jacoco.core.internal.analysis.CounterImpl; 26 import org.junit.Test; 27 28 /** 29 * Unit tests for {@link CoverageNodeImpl}. 30 */ 31 public class CoverageNodeImplTest { 32 33 @Test 34 public void testProperties() { 35 ICoverageNode node = new CoverageNodeImpl(ElementType.GROUP, "sample"); 36 assertEquals(ElementType.GROUP, node.getElementType()); 37 assertEquals("sample", node.getName()); 38 } 39 40 @Test 41 public void testInit() { 42 ICoverageNode node = new CoverageNodeImpl(ElementType.GROUP, "sample"); 43 assertEquals(CounterImpl.COUNTER_0_0, node.getBranchCounter()); 44 assertEquals(CounterImpl.COUNTER_0_0, node.getInstructionCounter()); 45 assertEquals(CounterImpl.COUNTER_0_0, node.getLineCounter()); 46 assertEquals(CounterImpl.COUNTER_0_0, node.getComplexityCounter()); 47 assertEquals(CounterImpl.COUNTER_0_0, node.getMethodCounter()); 48 assertEquals(CounterImpl.COUNTER_0_0, node.getClassCounter()); 49 } 50 51 @Test 52 public void testIncrement() { 53 CoverageNodeImpl parent = new CoverageNodeImpl(ElementType.GROUP, 54 "sample"); 55 ICoverageNode child = new CoverageNodeImpl(ElementType.GROUP, "sample") { 56 { 57 instructionCounter = CounterImpl.getInstance(1, 41); 58 branchCounter = CounterImpl.getInstance(10, 15); 59 lineCounter = CounterImpl.getInstance(5, 3); 60 complexityCounter = CounterImpl.getInstance(4, 2); 61 methodCounter = CounterImpl.getInstance(1, 21); 62 classCounter = CounterImpl.getInstance(1, 11); 63 } 64 }; 65 parent.increment(child); 66 assertEquals(CounterImpl.getInstance(1, 41), 67 parent.getCounter(INSTRUCTION)); 68 assertEquals(CounterImpl.getInstance(1, 41), 69 parent.getInstructionCounter()); 70 assertEquals(CounterImpl.getInstance(10, 15), parent.getCounter(BRANCH)); 71 assertEquals(CounterImpl.getInstance(10, 15), parent.getBranchCounter()); 72 assertEquals(CounterImpl.getInstance(5, 3), parent.getCounter(LINE)); 73 assertEquals(CounterImpl.getInstance(5, 3), parent.getLineCounter()); 74 assertEquals(CounterImpl.getInstance(4, 2), 75 parent.getCounter(COMPLEXITY)); 76 assertEquals(CounterImpl.getInstance(4, 2), 77 parent.getComplexityCounter()); 78 assertEquals(CounterImpl.getInstance(1, 21), parent.getCounter(METHOD)); 79 assertEquals(CounterImpl.getInstance(1, 21), parent.getMethodCounter()); 80 assertEquals(CounterImpl.getInstance(1, 11), parent.getCounter(CLASS)); 81 assertEquals(CounterImpl.getInstance(1, 11), parent.getClassCounter()); 82 } 83 84 @Test 85 public void testIncrementCollection() { 86 CoverageNodeImpl parent = new CoverageNodeImpl(ElementType.GROUP, 87 "sample"); 88 ICoverageNode child1 = new CoverageNodeImpl(ElementType.GROUP, "sample") { 89 { 90 branchCounter = CounterImpl.getInstance(5, 2); 91 } 92 }; 93 ICoverageNode child2 = new CoverageNodeImpl(ElementType.GROUP, "sample") { 94 { 95 branchCounter = CounterImpl.getInstance(3, 3); 96 } 97 }; 98 parent.increment(Arrays.asList(child1, child2)); 99 assertEquals(CounterImpl.getInstance(8, 5), parent.getBranchCounter()); 100 } 101 102 @Test 103 public void testGetPlainCopy() { 104 ICoverageNode node = new CoverageNodeImpl(ElementType.CLASS, "Sample") { 105 { 106 classCounter = CounterImpl.getInstance(1, 1); 107 methodCounter = CounterImpl.getInstance(2, 2); 108 branchCounter = CounterImpl.getInstance(3, 3); 109 instructionCounter = CounterImpl.getInstance(4, 4); 110 lineCounter = CounterImpl.getInstance(5, 5); 111 complexityCounter = CounterImpl.getInstance(6, 6); 112 } 113 }; 114 ICoverageNode copy = node.getPlainCopy(); 115 assertEquals(ElementType.CLASS, copy.getElementType()); 116 assertEquals("Sample", copy.getName()); 117 assertEquals(CounterImpl.getInstance(1, 1), copy.getClassCounter()); 118 assertEquals(CounterImpl.getInstance(2, 2), copy.getMethodCounter()); 119 assertEquals(CounterImpl.getInstance(3, 3), copy.getBranchCounter()); 120 assertEquals(CounterImpl.getInstance(4, 4), 121 copy.getInstructionCounter()); 122 assertEquals(CounterImpl.getInstance(5, 5), copy.getLineCounter()); 123 assertEquals(CounterImpl.getInstance(6, 6), copy.getComplexityCounter()); 124 } 125 126 @Test 127 public void testToString() { 128 CoverageNodeImpl node = new CoverageNodeImpl(ElementType.CLASS, "Test"); 129 assertEquals("Test [CLASS]", node.toString()); 130 } 131 132 } 133