/******************************************************************************* * Copyright (c) 2015 QNX Software Systems * 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: * Alena Laskavaia - initial API and implementation *******************************************************************************/ package org.eclipse.linuxtools.internal.valgrind.core; import static org.junit.Assert.*; import java.io.File; import java.io.IOException; import org.eclipse.debug.core.ILaunch; import org.eclipse.linuxtools.valgrind.core.IValgrindMessage; import org.eclipse.linuxtools.valgrind.core.tests.AbstractInlineDataTest; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; public class ValgrindCoreParserTest extends AbstractInlineDataTest { private static final String VALGRIND_OUT1 = "valgrind_01.txt"; private static final String VALGRIND_OUT2 = "valgrind_02.txt"; private IValgrindMessage[] messages; private ILaunch launchMock; private File file; @Before public void setUp() throws IOException { launchMock = Mockito.mock(ILaunch.class); file = tmpfiles.newFile(VALGRIND_OUT1); } private void parse(File file, ILaunch l) throws IOException { ValgrindCoreParser valgrindCoreParser = new ValgrindCoreParser(file, l); messages = valgrindCoreParser.getMessages(); assertNotNull(messages); } private void parse() throws IOException { parse(file, launchMock); } private void parseComment() throws IOException { file = getAboveCommentAndSaveFile(VALGRIND_OUT2); parse(); } private void checkMessage(int index, IValgrindMessage[] messages, String string) { String text = messages[index].getText(); text = text.replaceFirst(" \\[PID: \\d+\\]", ""); assertEquals(string, text); } @Test(expected = IOException.class) public void test() throws IOException { file.delete(); launchMock = null; parse(); } //this is pretend message which should be ignored @Test public void testLaunch() throws IOException { parseComment(); assertEquals(0, messages.length); } //==00:00:00:01.175 52756728== bla bla @Test public void testTimestamp() throws IOException { parseComment(); assertEquals(1, messages.length); assertEquals("bla bla [PID: 2]", messages[0].getText()); // TODO should be PID 52756728 } //==2== one //==2== two @Test public void testIndent() throws IOException { parseComment(); assertEquals(1, messages.length); assertEquals(1, messages[0].getChildren().length); checkMessage(0, messages, "one"); checkMessage(0, messages[0].getChildren(), "two"); } }