blob: 00ebe4c7b0468af308abb6ff199d04c928adc5f7 [file] [log] [blame]
package org.eclipse.qvt.declarative.test.editor.qvtcore;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.ecore.xmi.ClassNotFoundException;
import org.eclipse.emf.ecore.xmi.PackageNotFoundException;
import org.eclipse.jface.text.AbstractDocument;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.qvt.declarative.ecore.adapters.AdapterNotFoundException;
import org.eclipse.qvt.declarative.editor.qvtcore.ui.QVTcMultiEditor;
import org.eclipse.qvt.declarative.editor.ui.ICreationFactory;
import org.eclipse.qvt.declarative.editor.ui.text.ITextEditorWithUndoContext;
import org.eclipse.qvt.declarative.editor.ui.text.TextPageManager;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.texteditor.IDocumentProvider;
public class QVTcMultiEditorTests extends QVTcEditorTestCase
{
public void testDoAndUndo() throws CoreException, ExecutionException, BadLocationException {
final String contents1 = "trans";
final String contents2 = " ";
final String contents3 = "formation tx0 {}\n";
final String contents = contents1 + contents3;
final String testFileName = getName() + ".qvtc";
final String pageTitle = "QVT core Text";
IFile file = createFile(testFileName, contents);
IFileEditorInput editorInput = new FileEditorInput(file);
QVTcMultiEditor editor = (QVTcMultiEditor) workbenchPage.openEditor(editorInput, getMultiEditorId());
try {
ICreationFactory creationFactory = editor.getCreationFactory();
String markerId = creationFactory.getProblemMarkerId();
TextPageManager textPageManager = (TextPageManager) editor.getActivePageManager();
assertEquals("Page managers", 4, editor.getPageManagers().size());
ITextEditorWithUndoContext textEditor = textPageManager.getEditor();
IDocumentProvider documentProvider = textEditor.getDocumentProvider();
AbstractDocument document = (AbstractDocument) documentProvider.getDocument(editorInput);
IMarker[] markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Original contents", contents, document.get());
assertEquals("Original isDirty", false, editor.isDirty());
assertEquals("Original isDirtyPage", false, editor.isDirtyPage());
assertEquals("Original page title", pageTitle, editor.getPageTitle(textPageManager.getEditor()));
assertEquals("Original markers", 0, markers.length);
document.replace(contents1.length(), 0, contents2);
runAsyncMessages(editor.getDisplay(), "Typing");
assertEquals("Edited contents", contents1 + contents2 + contents3, document.get());
assertEquals("Edited isDirty", true, editor.isDirty());
assertEquals("Edited isDirtyPage", true, editor.isDirtyPage());
assertEquals("Edited page title", "*" + pageTitle, editor.getPageTitle(textPageManager.getEditor()));
textPageManager.refresh();
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Edited markers", 1, markers.length);
assertEquals("Edited marker", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markers[0].getAttribute(IMarker.MESSAGE, ""));
editor.getOperationHistory().undo(editor.getUndoContext(), monitor, null);
runAsyncMessages(editor.getDisplay(), "Undo");
assertEquals("Restored contents", contents, document.get());
assertEquals("Restored isDirty", false, editor.isDirty());
assertEquals("Restored isDirtyPage", false, editor.isDirtyPage());
assertEquals("Restored page title", pageTitle, editor.getPageTitle(textPageManager.getEditor()));
textPageManager.refresh();
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Restored markers", 0, markers.length);
} finally {
assertTrue("Close Editor", workbenchPage.closeEditor(editor, true));
}
}
// Second edit continues first, requiring TextEditor's to DocumentUndoManager.commit
// Bugzilla 224324 part 1.
public void testEditSaveAndEdit() throws CoreException, ExecutionException, BadLocationException {
final String contents1 = "trans";
final String contents2 = " ";
final String contents3 = "formation tx0 {}\n";
final String contents = contents1 + contents3;
final String testFileName = getName() + ".qvtc";
final String pageTitle = "QVT core Text";
IFile file = createFile(testFileName, contents);
IFileEditorInput editorInput = new FileEditorInput(file);
QVTcMultiEditor editor = (QVTcMultiEditor) workbenchPage.openEditor(editorInput, getMultiEditorId());
try {
ICreationFactory creationFactory = editor.getCreationFactory();
String markerId = creationFactory.getProblemMarkerId();
TextPageManager textPageManager = (TextPageManager) editor.getActivePageManager();
assertEquals("Page managers", 4, editor.getPageManagers().size());
ITextEditorWithUndoContext textEditor = textPageManager.getEditor();
IDocumentProvider documentProvider = textEditor.getDocumentProvider();
AbstractDocument document = (AbstractDocument) documentProvider.getDocument(editorInput);
IMarker[] markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Original contents", contents, document.get());
assertEquals("Original isDirty", false, editor.isDirty());
assertEquals("Original isDirtyPage", false, editor.isDirtyPage());
assertEquals("Original page title", pageTitle, editor.getPageTitle(textPageManager.getEditor()));
assertEquals("Original markers", 0, markers.length);
// assertEquals("Original marker", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markers[0].getAttribute(IMarker.MESSAGE, ""));
document.replace(contents1.length(), 0, contents2);
runAsyncMessages(editor.getDisplay(), "Typing");
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Edited contents", contents1 + contents2 + contents3, document.get());
assertEquals("Edited isDirty", true, editor.isDirty());
assertEquals("Edited isDirtyPage", true, editor.isDirtyPage());
assertEquals("Edited page title", "*" + pageTitle, editor.getPageTitle(textPageManager.getEditor()));
textPageManager.refresh();
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Edited markers", 1, markers.length);
assertEquals("Edited marker", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markers[0].getAttribute(IMarker.MESSAGE, ""));
editor.doSave(null);
// editor.getOperationHistory().undo(editor.getUndoContext(), monitor, null);
runAsyncMessages(editor.getDisplay(), "Save");
assertEquals("Saved contents", contents1 + contents2 + contents3, document.get());
assertEquals("Saved isDirty", false, editor.isDirty());
assertEquals("Saved isDirtyPage", false, editor.isDirtyPage());
assertEquals("Saved page title", pageTitle, editor.getPageTitle(textPageManager.getEditor()));
textPageManager.refresh();
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Saved markers", 1, markers.length);
assertEquals("Saved marker", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markers[0].getAttribute(IMarker.MESSAGE, ""));
document.replace(contents1.length() + contents2.length(), 0, contents2);
runAsyncMessages(editor.getDisplay(), "Typing");
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Edited2 contents", contents1 + contents2 + contents2 + contents3, document.get());
assertEquals("Edited2 isDirty", true, editor.isDirty());
assertEquals("Edited2 isDirtyPage", true, editor.isDirtyPage());
assertEquals("Edited2 page title", "*" + pageTitle, editor.getPageTitle(textPageManager.getEditor()));
textPageManager.refresh();
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Edited2 markers", 1, markers.length);
assertEquals("Edited2 marker", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markers[0].getAttribute(IMarker.MESSAGE, ""));
editor.getOperationHistory().undo(editor.getUndoContext(), monitor, null);
runAsyncMessages(editor.getDisplay(), "Undo");
assertEquals("Restored contents", contents1 + contents2 + contents3, document.get());
assertEquals("Restored isDirty", false, editor.isDirty());
assertEquals("Restored isDirtyPage", false, editor.isDirtyPage());
assertEquals("Restored page title", pageTitle, editor.getPageTitle(textPageManager.getEditor()));
textPageManager.refresh();
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Restored markers", 1, markers.length);
assertEquals("Restored marker", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markers[0].getAttribute(IMarker.MESSAGE, ""));
} finally {
assertTrue("Close Editor", workbenchPage.closeEditor(editor, true));
}
}
// FIXME Awaiting Bugzilla 237213 guidance
// Subsequent test is for Bugzilla 231288
public void nontestEditSaveAndUndo() throws CoreException, ExecutionException, BadLocationException {
final String contents1 = "trans";
final String contents2 = " ";
final String contents3 = "formation tx0 {}\n";
final String contents = contents1 + contents3;
final String testFileName = getName() + ".qvtc";
final String pageTitle = "QVT core Text";
IFile file = createFile(testFileName, contents);
IFileEditorInput editorInput = new FileEditorInput(file);
QVTcMultiEditor editor = (QVTcMultiEditor) workbenchPage.openEditor(editorInput, getMultiEditorId());
try {
ICreationFactory creationFactory = editor.getCreationFactory();
String markerId = creationFactory.getProblemMarkerId();
TextPageManager textPageManager = (TextPageManager) editor.getActivePageManager();
assertEquals("Page managers", 4, editor.getPageManagers().size());
ITextEditorWithUndoContext textEditor = textPageManager.getEditor();
IDocumentProvider documentProvider = textEditor.getDocumentProvider();
AbstractDocument document = (AbstractDocument) documentProvider.getDocument(editorInput);
IMarker[] markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Original contents", contents, document.get());
assertEquals("Original isDirty", false, editor.isDirty());
assertEquals("Original isDirtyPage", false, editor.isDirtyPage());
assertEquals("Original page title", pageTitle, editor.getPageTitle(textPageManager.getEditor()));
assertEquals("Original markers", 0, markers.length);
// assertEquals("Original marker", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markers[0].getAttribute(IMarker.MESSAGE, ""));
document.replace(contents1.length(), 0, contents2);
runAsyncMessages(editor.getDisplay(), "Typing");
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Edited contents", contents1 + contents2 + contents3, document.get());
assertEquals("Edited isDirty", true, editor.isDirty());
assertEquals("Edited isDirtyPage", true, editor.isDirtyPage());
assertEquals("Edited page title", "*" + pageTitle, editor.getPageTitle(textPageManager.getEditor()));
textPageManager.refresh();
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Edited markers", 1, markers.length);
assertEquals("Edited marker", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markers[0].getAttribute(IMarker.MESSAGE, ""));
editor.doSave(null);
// editor.getOperationHistory().undo(editor.getUndoContext(), monitor, null);
runAsyncMessages(editor.getDisplay(), "Save");
assertEquals("Saved contents", contents1 + contents2 + contents3, document.get());
assertEquals("Saved isDirty", false, editor.isDirty());
assertEquals("Saved isDirtyPage", false, editor.isDirtyPage());
assertEquals("Saved page title", pageTitle, editor.getPageTitle(textPageManager.getEditor()));
textPageManager.refresh();
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Saved markers", 1, markers.length);
assertEquals("Saved marker", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markers[0].getAttribute(IMarker.MESSAGE, ""));
editor.getOperationHistory().undo(editor.getUndoContext(), monitor, null);
runAsyncMessages(editor.getDisplay(), "Undo");
assertEquals("Restored contents", contents, document.get());
assertEquals("Restored isDirty", false, editor.isDirty());
assertEquals("Restored isDirtyPage", false, editor.isDirtyPage());
assertEquals("Restored page title", pageTitle, editor.getPageTitle(textPageManager.getEditor()));
textPageManager.refresh();
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Restored markers", 1, markers.length);
assertEquals("Restored marker", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markers[0].getAttribute(IMarker.MESSAGE, ""));
} finally {
assertTrue("Close Editor", workbenchPage.closeEditor(editor, true));
}
}
public void testErrorAndNoError() throws CoreException, ExecutionException, BadLocationException {
final String contents1 = "trans";
final String contents2 = " ";
final String contents3 = "formation tx0 {}\n";
final String contents = contents1 + contents2 + contents3;
final String testFileName = getName() + ".qvtc";
final String pageTitle = "QVT core Text";
IFile file = createFile(testFileName, contents);
IFileEditorInput editorInput = new FileEditorInput(file);
QVTcMultiEditor editor = (QVTcMultiEditor) workbenchPage.openEditor(editorInput, getMultiEditorId());
try {
ICreationFactory creationFactory = editor.getCreationFactory();
String markerId = creationFactory.getProblemMarkerId();
TextPageManager textPageManager = (TextPageManager) editor.getActivePageManager();
assertEquals("Page managers", 4, editor.getPageManagers().size());
ITextEditorWithUndoContext textEditor = textPageManager.getEditor();
IDocumentProvider documentProvider = textEditor.getDocumentProvider();
AbstractDocument document = (AbstractDocument) documentProvider.getDocument(editorInput);
IMarker[] markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Original contents", contents, document.get());
assertEquals("Original isDirty", false, editor.isDirty());
assertEquals("Original isDirtyPage", false, editor.isDirtyPage());
assertEquals("Original page title", pageTitle, editor.getPageTitle(textPageManager.getEditor()));
assertEquals("Original markers", 1, markers.length);
assertEquals("Original marker", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markers[0].getAttribute(IMarker.MESSAGE, ""));
document.replace(contents1.length(), contents2.length(), "");
runAsyncMessages(editor.getDisplay(), "Typing");
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Edited contents", contents1 + contents3, document.get());
assertEquals("Edited isDirty", true, editor.isDirty());
assertEquals("Edited isDirtyPage", true, editor.isDirtyPage());
assertEquals("Edited page title", "*" + pageTitle, editor.getPageTitle(textPageManager.getEditor()));
textPageManager.refresh();
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Edited markers", 0, markers.length);
editor.getOperationHistory().undo(editor.getUndoContext(), monitor, null);
runAsyncMessages(editor.getDisplay(), "Undo");
assertEquals("Restored contents", contents, document.get());
assertEquals("Restored isDirty", false, editor.isDirty());
assertEquals("Restored isDirtyPage", false, editor.isDirtyPage());
assertEquals("Restored page title", pageTitle, editor.getPageTitle(textPageManager.getEditor()));
textPageManager.refresh();
markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Restored markers", 1, markers.length);
assertEquals("Restored marker", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markers[0].getAttribute(IMarker.MESSAGE, ""));
} finally {
assertTrue("Close Editor", workbenchPage.closeEditor(editor, true));
}
}
public void testTwoEditorsDoAndUndo() throws CoreException, ExecutionException, BadLocationException {
final String contents1A = "trans";
final String contents2A = " ";
final String contents3A = "formation txA {}\n";
final String contents1B = "tr";
final String contents2B = " ";
final String contents3B = "ansformation txB {}\n";
final String contentsA = contents1A + contents3A;
final String contentsB = contents1B + contents3B;
final String testFileNameA = getName() + ".A.qvtc";
final String testFileNameB = getName() + ".B.qvtc";
final String pageTitle = "QVT core Text";
IFile fileA = createFile(testFileNameA, contentsA);
IFile fileB = createFile(testFileNameB, contentsB);
IFileEditorInput editorInputA = new FileEditorInput(fileA);
IFileEditorInput editorInputB = new FileEditorInput(fileB);
QVTcMultiEditor editorA = (QVTcMultiEditor) workbenchPage.openEditor(editorInputA, getMultiEditorId());
QVTcMultiEditor editorB = (QVTcMultiEditor) workbenchPage.openEditor(editorInputB, getMultiEditorId());
try {
ICreationFactory creationFactory = editorA.getCreationFactory();
String markerId = creationFactory.getProblemMarkerId();
TextPageManager textPageManagerA = (TextPageManager) editorA.getActivePageManager();
TextPageManager textPageManagerB = (TextPageManager) editorB.getActivePageManager();
assertEquals("Page managers A", 4, editorA.getPageManagers().size());
assertEquals("Page managers B", 4, editorB.getPageManagers().size());
ITextEditorWithUndoContext textEditorA = textPageManagerA.getEditor();
ITextEditorWithUndoContext textEditorB = textPageManagerB.getEditor();
IDocumentProvider documentProviderA = textEditorA.getDocumentProvider();
IDocumentProvider documentProviderB = textEditorB.getDocumentProvider();
AbstractDocument documentA = (AbstractDocument) documentProviderA.getDocument(editorInputA);
AbstractDocument documentB = (AbstractDocument) documentProviderB.getDocument(editorInputB);
IMarker[] markersA = fileA.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
IMarker[] markersB = fileB.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Original contents A", contentsA, documentA.get());
assertEquals("Original isDirty A", false, editorA.isDirty());
assertEquals("Original isDirtyPage A", false, editorA.isDirtyPage());
assertEquals("Original page title A", pageTitle, editorA.getPageTitle(textPageManagerA.getEditor()));
assertEquals("Original markers A", 0, markersA.length);
assertEquals("Original contents B", contentsB, documentB.get());
assertEquals("Original isDirty B", false, editorB.isDirty());
assertEquals("Original isDirtyPage B", false, editorB.isDirtyPage());
assertEquals("Original page title B", pageTitle, editorB.getPageTitle(textPageManagerB.getEditor()));
assertEquals("Original markers B", 0, markersB.length);
documentA.replace(contents1A.length(), 0, contents2A);
runAsyncMessages(editorA.getDisplay(), "Typing A");
assertEquals("Edited contents A", contents1A + contents2A + contents3A, documentA.get());
assertEquals("Edited isDirty A", true, editorA.isDirty());
assertEquals("Edited isDirtyPage A", true, editorA.isDirtyPage());
assertEquals("Edited page title A", "*" + pageTitle, editorA.getPageTitle(textPageManagerA.getEditor()));
assertEquals("Unedited contents B", contentsB, documentB.get());
assertEquals("Unedited isDirty B", false, editorB.isDirty());
assertEquals("Unedited isDirtyPage B", false, editorB.isDirtyPage());
assertEquals("Unedited page title B", pageTitle, editorB.getPageTitle(textPageManagerB.getEditor()));
textPageManagerA.refresh();
textPageManagerB.refresh();
markersA = fileA.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
markersB = fileB.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Edited markers A", 1, markersA.length);
assertEquals("Edited marker A", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markersA[0].getAttribute(IMarker.MESSAGE, ""));
assertEquals("Unedited markers B", 0, markersB.length);
documentB.replace(contents1B.length(), 0, contents2B);
runAsyncMessages(editorB.getDisplay(), "Typing B");
assertEquals("Edited contents A", contents1A + contents2A + contents3A, documentA.get());
assertEquals("Edited isDirty A", true, editorA.isDirty());
assertEquals("Edited isDirtyPage A", true, editorA.isDirtyPage());
assertEquals("Edited page title A", "*" + pageTitle, editorA.getPageTitle(textPageManagerA.getEditor()));
assertEquals("Edited contents B", contents1B + contents2B + contents3B, documentB.get());
assertEquals("Edited isDirty B", true, editorB.isDirty());
assertEquals("Edited isDirtyPage B", true, editorB.isDirtyPage());
assertEquals("Edited page title B", "*" + pageTitle, editorB.getPageTitle(textPageManagerB.getEditor()));
textPageManagerA.refresh();
textPageManagerB.refresh();
markersA = fileA.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
markersB = fileB.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Edited markers A", 1, markersA.length);
assertEquals("Edited marker A", "Parser: merge tokens \"trans formation\" to form \"transformation\"", markersA[0].getAttribute(IMarker.MESSAGE, ""));
assertEquals("Edited markers B", 1, markersB.length);
assertEquals("Edited marker B", "Parser: merge tokens \"tr ansformation\" to form \"transformation\"", markersB[0].getAttribute(IMarker.MESSAGE, ""));
editorA.getOperationHistory().undo(editorA.getUndoContext(), monitor, null);
runAsyncMessages(editorA.getDisplay(), "Undo A");
assertEquals("Restored contents A", contentsA, documentA.get());
assertEquals("Restored isDirty A", false, editorA.isDirty());
assertEquals("Restored isDirtyPage A", false, editorA.isDirtyPage());
assertEquals("Restored page title A", pageTitle, editorA.getPageTitle(textPageManagerA.getEditor()));
assertEquals("Edited contents B", contents1B + contents2B + contents3B, documentB.get());
assertEquals("Edited isDirty B", true, editorB.isDirty());
assertEquals("Edited isDirtyPage B", true, editorB.isDirtyPage());
assertEquals("Edited page title B", "*" + pageTitle, editorB.getPageTitle(textPageManagerB.getEditor()));
textPageManagerA.refresh();
textPageManagerB.refresh();
markersA = fileA.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
markersB = fileB.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Restored markers A", 0, markersA.length);
assertEquals("Edited markers B", 1, markersB.length);
assertEquals("Edited marker B", "Parser: merge tokens \"tr ansformation\" to form \"transformation\"", markersB[0].getAttribute(IMarker.MESSAGE, ""));
editorB.getOperationHistory().undo(editorB.getUndoContext(), monitor, null);
runAsyncMessages(editorB.getDisplay(), "Undo B");
assertEquals("Restored contents A", contentsA, documentA.get());
assertEquals("Restored isDirty A", false, editorA.isDirty());
assertEquals("Restored isDirtyPage A", false, editorA.isDirtyPage());
assertEquals("Restored page title A", pageTitle, editorA.getPageTitle(textPageManagerA.getEditor()));
assertEquals("Restored contents B", contentsB, documentB.get());
assertEquals("Restored isDirty B", false, editorB.isDirty());
assertEquals("Restored isDirtyPage B", false, editorB.isDirtyPage());
assertEquals("Restored page title B", pageTitle, editorB.getPageTitle(textPageManagerB.getEditor()));
textPageManagerA.refresh();
textPageManagerB.refresh();
markersA = fileA.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
markersB = fileB.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Restored markers A", 0, markersA.length);
assertEquals("Restored markers B", 0, markersB.length);
} finally {
assertTrue("Close Editor A", workbenchPage.closeEditor(editorA, true));
assertTrue("Close Editor B", workbenchPage.closeEditor(editorB, true));
}
}
public void testEditQvtCoreAsEqvtCore() throws CoreException, ExecutionException, BadLocationException {
final String contents =
"<?xml version=\"1.0\" encoding=\"ASCII\"?>\n" +
"<eqvtbase:Transformation xmi:version=\"2.0\"\n" +
" xmlns:xmi=\"http://www.omg.org/XMI\"\n" +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\"\n" +
" xmlns:eqvtbase=\"http://www.eclipse.org/gmt/umlx/EQVTbase\"\n" +
" xmlns:eqvtcore=\"http://www.eclipse.org/gmt/umlx/EQVTcore\"\n" +
" xmlns:ocl.ecore=\"http://www.eclipse.org/ocl/1.1.0/Ecore\"\n" +
" xmi:id=\"ast0\" name=\"umlRdbms\"/>\n";
IFile file = createFile(getName() + ".qvtcore", contents);
checkOpenCloseDiagnostics(file, AdapterNotFoundException.class);
checkOpenCloseDiagnostics(file, AdapterNotFoundException.class); // Could differ if resource mis-caches
}
public void testEditNotEqvtCore() throws CoreException, ExecutionException, BadLocationException {
final String contents =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<emp:Company xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:emp=\"http://www.eclipse.org/OCL/examples/codegen/employee\">\n" +
" <employees empID=\"99\" name=\"e1\"/>\n" +
" <departments manager=\"99\" deptID=\"1\" name=\"d1\"/>\n" +
"</emp:Company>\n";
IFile file = createFile(getName() + ".eqvtcore", contents);
checkOpenCloseDiagnostics(file, PackageNotFoundException.class, ClassNotFoundException.class);
checkOpenCloseDiagnostics(file, PackageNotFoundException.class, ClassNotFoundException.class); // Could differ if resource mis-caches
}
public void testEditNotQvtCore() throws CoreException, ExecutionException, BadLocationException {
final String contents =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<emp:Company xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:emp=\"http://www.eclipse.org/OCL/examples/codegen/employee\">\n" +
" <employees empID=\"99\" name=\"e1\"/>\n" +
" <departments manager=\"99\" deptID=\"1\" name=\"d1\"/>\n" +
"</emp:Company>\n";
IFile file = createFile(getName() + ".qvtcore", contents);
checkOpenCloseDiagnostics(file, PackageNotFoundException.class);
checkOpenCloseDiagnostics(file, PackageNotFoundException.class); // Could differ if resource mis-caches
}
private void checkOpenCloseDiagnostics(IFile file, Class<?>... expectedDiagnostics) throws PartInitException, CoreException {
IFileEditorInput editorInput = new FileEditorInput(file);
QVTcMultiEditor editor = (QVTcMultiEditor) workbenchPage.openEditor(editorInput, getMultiEditorId());
try {
ICreationFactory creationFactory = editor.getCreationFactory();
String markerId = creationFactory.getProblemMarkerId();
assertEquals("Page managers", 0, editor.getPageManagers().size());
assertNull("Page manager", editor.getActivePageManager());
ProblemEditorPart editorPart = (ProblemEditorPart) editor.getActiveEditor();
Diagnostic diagnostic0 = editorPart.getDiagnostic();
assertEquals("Diagnostics 0", 1, diagnostic0.getChildren().size());
Diagnostic diagnostic1 = diagnostic0.getChildren().get(0);
assertEquals("Diagnostics 0.0", expectedDiagnostics.length, diagnostic1.getChildren().size());
for (int i = 0; i < expectedDiagnostics.length; i++) {
Diagnostic diagnostic2 = diagnostic1.getChildren().get(i);
assertEquals("Diagnostics 0."+i, 1, diagnostic2.getData().size());
assertEquals("Diagnostic 0." + i, expectedDiagnostics[i], diagnostic2.getData().get(0).getClass());
}
IMarker[] markers = file.findMarkers(markerId, true, IResource.DEPTH_INFINITE);
assertEquals("Original isDirty", false, editor.isDirty());
assertEquals("Original isDirtyPage", false, editor.isDirtyPage());
assertEquals("Original markers", 0, markers.length);
} finally {
assertTrue("Close Editor", workbenchPage.closeEditor(editor, true));
}
}
}