blob: 89ed7b4087880dc2069b1de6272c293c3bf2910b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2018 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.data;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
/**
* Unit tests for {@link ExecutionData}.
*/
public class ExecutionDataTest {
@Test
public void testCreateEmpty() {
final ExecutionData e = new ExecutionData(5, "Example", 3);
assertEquals(5, e.getId());
assertEquals("Example", e.getName());
assertEquals(3, e.getProbes().length);
assertFalse(e.getProbes()[0]);
assertFalse(e.getProbes()[1]);
assertFalse(e.getProbes()[2]);
}
@Test
public void testGetters() {
final boolean[] data = new boolean[0];
final ExecutionData e = new ExecutionData(5, "Example", data);
assertEquals(5, e.getId());
assertEquals("Example", e.getName());
assertSame(data, e.getProbes());
}
@Test
public void testReset() {
final ExecutionData e = new ExecutionData(5, "Example", new boolean[] {
true, false, true });
e.reset();
assertFalse(e.getProbes()[0]);
assertFalse(e.getProbes()[1]);
assertFalse(e.getProbes()[2]);
}
@Test
public void testHasHits() {
final boolean[] probes = new boolean[] { false, false, false };
final ExecutionData e = new ExecutionData(5, "Example", probes);
assertFalse(e.hasHits());
probes[1] = true;
assertTrue(e.hasHits());
}
@Test
public void testHasHits_empty() {
final boolean[] probes = new boolean[] {};
final ExecutionData e = new ExecutionData(5, "Example", probes);
assertFalse(e.hasHits());
}
@Test
public void testMerge() {
final ExecutionData a = new ExecutionData(5, "Example", new boolean[] {
false, true, false, true });
final ExecutionData b = new ExecutionData(5, "Example", new boolean[] {
false, false, true, true });
a.merge(b);
// b is merged into a:
assertFalse(a.getProbes()[0]);
assertTrue(a.getProbes()[1]);
assertTrue(a.getProbes()[2]);
assertTrue(a.getProbes()[3]);
// b must not be modified:
assertFalse(b.getProbes()[0]);
assertFalse(b.getProbes()[1]);
assertTrue(b.getProbes()[2]);
assertTrue(b.getProbes()[3]);
}
@Test
public void testMergeSubtract() {
final ExecutionData a = new ExecutionData(5, "Example", new boolean[] {
false, true, false, true });
final ExecutionData b = new ExecutionData(5, "Example", new boolean[] {
false, false, true, true });
a.merge(b, false);
// b is subtracted from a:
assertFalse(a.getProbes()[0]);
assertTrue(a.getProbes()[1]);
assertFalse(a.getProbes()[2]);
assertFalse(a.getProbes()[3]);
// b must not be modified:
assertFalse(b.getProbes()[0]);
assertFalse(b.getProbes()[1]);
assertTrue(b.getProbes()[2]);
assertTrue(b.getProbes()[3]);
}
@Test
public void testAssertCompatibility() {
final ExecutionData a = new ExecutionData(5, "Example",
new boolean[] { true });
a.assertCompatibility(5, "Example", 1);
}
@Test(expected = IllegalStateException.class)
public void testAssertCompatibilityNegative1() {
final ExecutionData a = new ExecutionData(5, "Example",
new boolean[] { true });
a.assertCompatibility(55, "Example", 1);
}
@Test(expected = IllegalStateException.class)
public void testAssertCompatibilityNegative2() {
final ExecutionData a = new ExecutionData(5, "Example",
new boolean[] { true });
a.assertCompatibility(5, "Exxxample", 1);
}
@Test(expected = IllegalStateException.class)
public void testAssertCompatibilityNegative3() {
final ExecutionData a = new ExecutionData(5, "Example",
new boolean[] { true });
a.assertCompatibility(5, "Example", 3);
}
@Test
public void testToString() {
final ExecutionData a = new ExecutionData(Long.MAX_VALUE, "Example",
new boolean[] { true });
assertEquals("ExecutionData[name=Example, id=7fffffffffffffff]",
a.toString());
}
}