blob: 1f6f9d279f0618e4d251fb901483e2e140d75211 [file] [log] [blame]
package org.eclipse.amp.axf.ide;
import static org.junit.Assert.fail;
import org.ascape.model.Scape;
import org.eclipse.amp.agf.gef.ModelEditPartInput;
import org.eclipse.amp.axf.core.IEngine;
import org.eclipse.amp.axf.core.IModel;
import org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel;
import org.eclipse.amp.escape.ide.EclipseEscapeRunner;
import org.junit.Before;
import org.junit.Test;
public class ModelViewManagerTest {
private ModelViewManager classToTest;
private ModelEditPartInput modelInput;
@Before
public void setUp() throws Exception {
classToTest = ModelViewManager.createNewInstance();
EclipseEscapeRunner runner = new EclipseEscapeRunner() {
@Override
public void close() {
//
}
};
SimpleModel model = new SimpleModel(new Scape());
model.engine = runner;
classToTest.register(model, runner);
modelInput = new ModelEditPartInput(model, null);
}
/**
* The Method should also be callable if the main Thread is the caller Bug: The Application has a deadlock if the main
* Thread call the method
*/
@Test
public void testCreateViewPart() {
ObserverThread thread = new ObserverThread();
thread.mainThread = Thread.currentThread();
thread.start();
classToTest.createViewPart(EmtyView.VIEW_ID, modelInput, "viewName");
if(thread.mainThreadInterrupted){
fail("Deadlock in createViewPart?");
}
thread.interrupt();
}
private class ObserverThread extends Thread{
Thread mainThread;
boolean mainThreadInterrupted = false;
public ObserverThread() {
//
}
@Override
public void run() {
try {
sleep(10000);
mainThreadInterrupted = true;
mainThread.interrupt();
} catch (InterruptedException e) {
//
}
}
}
private class SimpleModel extends ScapeWrapperModel implements IModel {
IEngine engine;
public SimpleModel(Scape scape) {
super(scape);
}
@Override
public IEngine getEngine() {
return engine;
}
}
}