blob: 57ce2694ead2473e5f9c1564732d060e9a3cd0e4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2008 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.junit.tests;
import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
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;
public class WrappingUnitTest extends TestCase {
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);
}
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]);
}
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);
}
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]);
}
}
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));
}
}