/*******************************************************************************
* Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Marc R. Hoffmann - initial API and implementation
*
*******************************************************************************/
package org.jacoco.core.internal.analysis;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Collections;
import org.jacoco.core.analysis.ICoverageNode;
import org.jacoco.core.analysis.ISourceNode;
import org.junit.Before;
import org.junit.Test;
/**
* Unit test for {@link ClassCoverageImpl}.
*/
public class ClassCoverageImplTest {
private ClassCoverageImpl node;
@Before
public void setup() {
node = new ClassCoverageImpl("Sample", 12345, false);
}
@Test
public void testDefaults() {
assertEquals(ICoverageNode.ElementType.CLASS, node.getElementType());
assertEquals("Sample", node.getName());
assertEquals(12345, node.getId());
assertFalse(node.isNoMatch());
assertEquals(Collections.emptyList(), node.getMethods());
}
@Test
public void testSignature() {
node.setSignature("LSample;");
assertEquals("LSample;", node.getSignature());
}
@Test
public void testSuperName() {
node.setSuperName("java/lang/Object");
assertEquals("java/lang/Object", node.getSuperName());
}
@Test
public void testInterfaces() {
node.setInterfaces(new String[] { "A", "B" });
assertArrayEquals(new String[] { "A", "B" }, node.getInterfaceNames());
}
@Test
public void testSourceFileName() {
node.setSourceFileName("Sample.java");
assertEquals("Sample.java", node.getSourceFileName());
}
@Test
public void testNoMatch() {
ClassCoverageImpl node = new ClassCoverageImpl("Sample", 12345, true);
assertTrue(node.isNoMatch());
}
@Test
public void testGetPackageName1() {
ClassCoverageImpl node = new ClassCoverageImpl("ClassInDefaultPackage",
0, false);
assertEquals("", node.getPackageName());
}
@Test
public void testGetPackageName2() {
ClassCoverageImpl data = new ClassCoverageImpl(
"org/jacoco/examples/Sample", 0, false);
assertEquals("org/jacoco/examples", data.getPackageName());
}
@Test
public void testEmptyClass() {
assertEquals(CounterImpl.COUNTER_0_0, node.getInstructionCounter());
assertEquals(CounterImpl.COUNTER_0_0, node.getBranchCounter());
assertEquals(CounterImpl.COUNTER_0_0, node.getMethodCounter());
assertEquals(CounterImpl.COUNTER_1_0, node.getClassCounter());
}
@Test
public void testAddMethodMissed() {
node.addMethod(createMethod(false));
assertEquals(CounterImpl.COUNTER_1_0, node.getInstructionCounter());
assertEquals(CounterImpl.COUNTER_1_0, node.getMethodCounter());
assertEquals(CounterImpl.COUNTER_1_0, node.getClassCounter());
}
@Test
public void testAddMethodCovered() {
node.addMethod(createMethod(true));
assertEquals(CounterImpl.COUNTER_0_1, node.getInstructionCounter());
assertEquals(CounterImpl.COUNTER_0_1, node.getMethodCounter());
assertEquals(CounterImpl.COUNTER_0_1, node.getClassCounter());
}
private MethodCoverageImpl createMethod(boolean covered) {
final MethodCoverageImpl m = new MethodCoverageImpl("sample", "()V",
null);
m.increment(
covered ? CounterImpl.COUNTER_0_1 : CounterImpl.COUNTER_1_0,
CounterImpl.COUNTER_0_0, ISourceNode.UNKNOWN_LINE);
m.incrementMethodCounter();
return m;
}
}