blob: e1691c4abdcc5b7999148f396cf08e769456ad72 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.junit.tests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.junit.Ignore;
import org.junit.Test;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.ui.PartInitException;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.internal.junit.ui.ITraceDisplay;
import org.eclipse.jdt.internal.junit.ui.TextualTrace;
/**
* Disabled unreliable tests driving the event loop in JUnitJUnitTests.
*/
public class WrappingUnitTest {
@Test
public void test00wrapSecondLine() throws Exception {
TextualTrace trace = new TextualTrace("12345\n1234512345",
new String[0]);
trace.display(new ITraceDisplay() {
@Override
public void addTraceLine(int lineType, String label) {
assertEquals("12345", label);
}
}, 5);
}
@Test
public void test01wrappingSystemTestRunTestsWaitsForCorrectNumberOfLines()
throws Exception {
final boolean[] wasCalled = { false };
WrappingSystemTest test = new WrappingSystemTest() {
@Override
protected void launchTests(String prefixForErrorMessage,
int howManyNumbersInErrorString) throws CoreException,
JavaModelException {
// do nothing
}
@Override
protected void waitForTableToFill(int numExpectedTableLines,
int millisecondTimeout, boolean lastItemHasImage) throws PartInitException {
wasCalled[0] = true;
assertEquals(17, numExpectedTableLines);
}
};
test.runTests(null, 0, 17, false);
assertTrue(wasCalled[0]);
}
@Test
public void test02waitForTableToFillWaitsForNumberOfLines()
throws Exception {
WrappingSystemTest test = new WrappingSystemTest() {
@Override
protected boolean stillWaiting(int numExpectedTableLines, boolean lastItemHasImage)
throws PartInitException {
assertEquals(17, numExpectedTableLines);
return false;
}
};
test.waitForTableToFill(17, 30000, false);
}
@Ignore("java.lang.AssertionError")
@Test
public void test03waitForTableToFillObeysTimeout() throws Exception {
final WrappingSystemTest test = new WrappingSystemTest() {
@Override
protected void dispatchEvents() {
// do nothing (avoid accessing display from non-UI thread)
}
@Override
protected int getNumTableItems() throws PartInitException {
return -1; // avoid accessing getActiveWorkbenchWindow() from non-UI thread
}
@Override
protected boolean stillWaiting(int numExpectedTableLines, boolean lastItemHasImage)
throws PartInitException {
return true;
}
};
final boolean[] done = { false };
new Thread(new Runnable() {
@Override
public void run() {
synchronized (done) {
try {
test.waitForTableToFill(17, 50, false);
fail();
// } catch (AssertionFailedError e) {
// done[0] = true;
} catch (PartInitException e) {
fail();// bah.
}
}
}
}).start();
Thread.sleep(1000);
synchronized (done) {
assertTrue(done[0]);
}
}
@Test
public void test04stillWaitingChecksForProperNumberOfLines()
throws Exception {
WrappingSystemTest test = new WrappingSystemTest() {
@Override
protected int getNumTableItems() throws PartInitException {
return 2;
}
@Override
protected synchronized boolean hasNotTerminated() {
return false;
}
};
assertTrue(test.stillWaiting(17, false));
}
}