/******************************************************************************* * Copyright (c) 2006, 2016 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 com.mountainminds.eclemma.internal.core; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.Collections; import org.jacoco.core.data.ExecutionData; import org.jacoco.core.data.ExecutionDataReader; import org.jacoco.core.data.ExecutionDataStore; import org.jacoco.core.data.ExecutionDataWriter; import org.jacoco.core.data.SessionInfo; import org.jacoco.core.data.SessionInfoStore; import org.junit.Before; import org.junit.Test; /** * Tests for {@link MemoryExecutionDataSource}. */ public class MemoryExecutionDataSourceTest { private MemoryExecutionDataSource source; @Before public void setup() { source = new MemoryExecutionDataSource(); } @Test public void testIsEmptyPositive() { assertTrue(source.isEmpty()); } @Test public void testIsEmptyNegative() { source.visitSessionInfo(new SessionInfo("id", 1, 2)); assertFalse(source.isEmpty()); } @Test public void testAccept() throws Exception { SessionInfo info = new SessionInfo("id1", 1, 2); source.visitSessionInfo(info); source.visitClassExecution(new ExecutionData(123, "MyClass", new boolean[] { true, false })); SessionInfoStore sessionStore = new SessionInfoStore(); ExecutionDataStore execStore = new ExecutionDataStore(); source.accept(execStore, sessionStore); assertEquals(Collections.singletonList(info), sessionStore.getInfos()); assertEquals("MyClass", execStore.get(123).getName()); } @Test public void testReadFrom() throws Exception { ExecutionDataReader reader = new ExecutionDataReader( new ByteArrayInputStream(createSessionData())); source.readFrom(reader); SessionInfoStore sessionStore = new SessionInfoStore(); ExecutionDataStore execStore = new ExecutionDataStore(); source.accept(execStore, sessionStore); assertEquals(1, sessionStore.getInfos().size()); assertEquals("MyClass", execStore.get(123).getName()); } private byte[] createSessionData() throws Exception { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ExecutionDataWriter writer = new ExecutionDataWriter(buffer); SessionInfo info = new SessionInfo("id1", 1, 2); writer.visitSessionInfo(info); writer.visitClassExecution(new ExecutionData(123, "MyClass", new boolean[] { true, false })); return buffer.toByteArray(); } }