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.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