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