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