From 54e9457e74ccfb81fee61b4e032fd385448c1a98 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Tue, 30 Dec 2025 23:38:44 +0100 Subject: [PATCH] Extract AntModel and document management from AbstractAntUITest The AbstractAntUITest contains a stateful management of a loaded document and the extracted Ant model, even though it is only used by specific test cases. The state is also not cleaned up properly. This change separates the Ant model and document management into a separate class that is used in exactly those test methods that require it. --- .../editor/AntEditorContentOutlineTests.java | 111 +++--- .../tests/ui/editor/CodeCompletionTest.java | 331 ++++++++++++------ .../ui/testplugin/AbstractAntUITest.java | 55 --- .../ui/testplugin/AntModelForDocument.java | 69 ++++ 4 files changed, 342 insertions(+), 224 deletions(-) create mode 100644 ant/org.eclipse.ant.tests.ui/test plugin/org/eclipse/ant/tests/ui/testplugin/AntModelForDocument.java diff --git a/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/AntEditorContentOutlineTests.java b/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/AntEditorContentOutlineTests.java index bb678c0ef79..f3612a18666 100644 --- a/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/AntEditorContentOutlineTests.java +++ b/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/AntEditorContentOutlineTests.java @@ -28,7 +28,9 @@ import org.eclipse.ant.internal.ui.model.AntModel; import org.eclipse.ant.internal.ui.model.IAntElement; import org.eclipse.ant.tests.ui.testplugin.AbstractAntUITest; +import org.eclipse.ant.tests.ui.testplugin.AntModelForDocument; import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; import org.junit.Test; /** @@ -41,18 +43,19 @@ public class AntEditorContentOutlineTests extends AbstractAntUITest { */ @Test public void testCreationOfOutlineTree() throws BadLocationException { - AntModel model = getAntModel("buildtest1.xml"); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest1.xml"); //$NON-NLS-1$ - AntElementNode rootProject = model.getProjectNode(); + AntElementNode rootProject = model.getAntModel().getProjectNode(); assertNotNull(rootProject); // Get the content as string - String wholeDocumentString = getCurrentDocument().get(); + String wholeDocumentString = model.getDocument().get(); + IDocument document = model.getDocument(); // - assertEquals(2, getStartingRow(rootProject)); - assertEquals(2, getStartingColumn(rootProject)); + assertEquals(2, getStartingRow(document, rootProject)); + assertEquals(2, getStartingColumn(document, rootProject)); int offset = wholeDocumentString.indexOf("project"); //$NON-NLS-1$ assertEquals(offset, rootProject.getOffset()); @@ -60,10 +63,10 @@ public void testCreationOfOutlineTree() throws BadLocationException { // IAntElement element = children.get(0); - assertEquals(3, getStartingRow(element)); - assertEquals(3, getStartingColumn(element)); // with tab in file - assertEquals(3, getEndingRow(element)); - assertEquals(39, getEndingColumn(element)); // with tab in file + assertEquals(3, getStartingRow(document, element)); + assertEquals(3, getStartingColumn(document, element)); // with tab in file + assertEquals(3, getEndingRow(document, element)); + assertEquals(39, getEndingColumn(document, element)); // with tab in file offset = wholeDocumentString.indexOf("property"); //$NON-NLS-1$ assertEquals(offset, element.getOffset()); @@ -72,56 +75,56 @@ public void testCreationOfOutlineTree() throws BadLocationException { // element = children.get(1); - assertEquals(4, getStartingRow(element)); - assertEquals(6, getStartingColumn(element)); // no tab - assertEquals(4, getEndingRow(element)); - assertEquals(45, getEndingColumn(element)); + assertEquals(4, getStartingRow(document, element)); + assertEquals(6, getStartingColumn(document, element)); // no tab + assertEquals(4, getEndingRow(document, element)); + assertEquals(45, getEndingColumn(document, element)); // element = children.get(2); - assertEquals(5, getStartingRow(element)); - assertEquals(6, getStartingColumn(element)); - assertEquals(5, getEndingRow(element)); - assertEquals(42, getEndingColumn(element)); + assertEquals(5, getStartingRow(document, element)); + assertEquals(6, getStartingColumn(document, element)); + assertEquals(5, getEndingRow(document, element)); + assertEquals(42, getEndingColumn(document, element)); // element = children.get(3); - assertEquals(6, getStartingRow(element)); - assertEquals(6, getStartingColumn(element)); - assertEquals(9, getEndingRow(element)); - assertEquals(13, getEndingColumn(element)); + assertEquals(6, getStartingRow(document, element)); + assertEquals(6, getStartingColumn(document, element)); + assertEquals(9, getEndingRow(document, element)); + assertEquals(13, getEndingColumn(document, element)); // element = element.getChildNodes().get(0); - assertEquals(7, getStartingRow(element)); - assertEquals(10, getStartingColumn(element)); - assertEquals(7, getEndingRow(element)); - assertEquals(57, getEndingColumn(element)); + assertEquals(7, getStartingRow(document, element)); + assertEquals(10, getStartingColumn(document, element)); + assertEquals(7, getEndingRow(document, element)); + assertEquals(57, getEndingColumn(document, element)); offset = wholeDocumentString.indexOf("property name=\"property_in_target\""); //$NON-NLS-1$ assertEquals(offset, element.getOffset()); - assertEquals(21, getEndingRow(rootProject)); - assertEquals(10, getEndingColumn(rootProject)); + assertEquals(21, getEndingRow(document, rootProject)); + assertEquals(10, getEndingColumn(document, rootProject)); } - private int getColumn(int offset, int line) throws BadLocationException { - return offset - getCurrentDocument().getLineOffset(line - 1) + 1; + private int getColumn(IDocument document, int offset, int line) throws BadLocationException { + return offset - document.getLineOffset(line - 1) + 1; } - private int getStartingRow(IAntElement element) throws BadLocationException { - return getCurrentDocument().getLineOfOffset(element.getOffset()) + 1; + private int getStartingRow(IDocument document, IAntElement element) throws BadLocationException { + return document.getLineOfOffset(element.getOffset()) + 1; } - private int getEndingRow(IAntElement element) throws BadLocationException { - return getCurrentDocument().getLineOfOffset(element.getOffset() + element.getLength() - 1) + 1; + private int getEndingRow(IDocument document, IAntElement element) throws BadLocationException { + return document.getLineOfOffset(element.getOffset() + element.getLength() - 1) + 1; } - private int getStartingColumn(IAntElement element) throws BadLocationException { - return getColumn(element.getOffset(), getStartingRow(element)); + private int getStartingColumn(IDocument document, IAntElement element) throws BadLocationException { + return getColumn(document, element.getOffset(), getStartingRow(document, element)); } - private int getEndingColumn(IAntElement element) throws BadLocationException { - return getColumn(element.getOffset() + element.getLength() - 1, getEndingRow(element)); + private int getEndingColumn(IDocument document, IAntElement element) throws BadLocationException { + return getColumn(document, element.getOffset() + element.getLength() - 1, getEndingRow(document, element)); } /** @@ -129,20 +132,21 @@ private int getEndingColumn(IAntElement element) throws BadLocationException { */ @Test public void testParsingOfNonValidFile() throws BadLocationException { - AntModel model = getAntModel("buildtest2.xml"); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest2.xml"); //$NON-NLS-1$ - IAntElement root = model.getProjectNode(); + IAntElement root = model.getAntModel().getProjectNode(); assertNotNull(root); List children = root.getChildNodes(); + IDocument document = model.getDocument(); // IAntElement element = children.get(2); - assertEquals(5, getStartingRow(element)); - assertEquals(3, getStartingColumn(element)); // with tab in file - assertEquals(5, getEndingRow(element)); + assertEquals(5, getStartingRow(document, element)); + assertEquals(3, getStartingColumn(document, element)); // with tab in file + assertEquals(5, getEndingRow(document, element)); // main has no ending column as the element is not closed - int offset = getCurrentDocument().get().indexOf("target name=\"main\""); //$NON-NLS-1$ + int offset = model.getDocument().get().indexOf("target name=\"main\""); //$NON-NLS-1$ assertEquals(offset, element.getOffset()); } @@ -151,7 +155,7 @@ public void testParsingOfNonValidFile() throws BadLocationException { */ @Test public void testWithProjectOnlyBuildFile() { - AntModel model = getAntModel("projectOnly.xml"); //$NON-NLS-1$ + AntModel model = new AntModelForDocument("projectOnly.xml").getAntModel(); //$NON-NLS-1$ AntElementNode rootProject = model.getProjectNode(); assertNotNull(rootProject); } @@ -161,7 +165,7 @@ public void testWithProjectOnlyBuildFile() { */ @Test public void testWithEmptyBuildFile() { - AntModel model = getAntModel("empty.xml"); //$NON-NLS-1$ + AntModel model = new AntModelForDocument("empty.xml").getAntModel(); //$NON-NLS-1$ AntElementNode rootProject = model.getProjectNode(); assertTrue(rootProject == null); } @@ -171,16 +175,17 @@ public void testWithEmptyBuildFile() { */ @Test public void testAdvancedTaskLocation() throws BadLocationException { - AntModel model = getAntModel("outline_select_test_build.xml"); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("outline_select_test_build.xml"); //$NON-NLS-1$ - AntElementNode rootProject = model.getProjectNode(); + AntElementNode rootProject = model.getAntModel().getProjectNode(); // Get the content as string - String wholeDocumentString = getCurrentDocument().get(); + String wholeDocumentString = model.getDocument().get(); + IDocument document = model.getDocument(); // assertNotNull(rootProject); - assertEquals(2, getStartingRow(rootProject)); - assertEquals(2, getStartingColumn(rootProject)); + assertEquals(2, getStartingRow(document, rootProject)); + assertEquals(2, getStartingColumn(document, rootProject)); int offset = wholeDocumentString.indexOf("project"); //$NON-NLS-1$ assertEquals(offset, rootProject.getOffset()); @@ -189,8 +194,8 @@ public void testAdvancedTaskLocation() throws BadLocationException { IAntElement element = rootProject.getChildNodes().get(1); assertNotNull(element); assertEquals("properties", element.getLabel()); //$NON-NLS-1$ - assertEquals(16, getStartingRow(element)); - assertEquals(3, getStartingColumn(element)); + assertEquals(16, getStartingRow(document, element)); + assertEquals(3, getStartingColumn(document, element)); offset = wholeDocumentString.indexOf("target name=\"properties\""); //$NON-NLS-1$ assertEquals(offset, element.getOffset()); @@ -201,7 +206,7 @@ public void testAdvancedTaskLocation() throws BadLocationException { */ @Test public void testInternalTargets() { - AntModel model = getAntModel("internalTargets.xml"); //$NON-NLS-1$ + AntModel model = new AntModelForDocument("internalTargets.xml").getAntModel(); //$NON-NLS-1$ assertTrue("Target without description should be internal", model.getTargetNode("internal1").isInternal()); //$NON-NLS-1$ //$NON-NLS-2$ assertTrue("Target with name starting with '-' should be internal", model.getTargetNode("-internal2").isInternal()); //$NON-NLS-1$ //$NON-NLS-2$ assertFalse("Target with description attribute should not be internal", model.getTargetNode("non-internal").isInternal()); //$NON-NLS-1$ //$NON-NLS-2$ diff --git a/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/CodeCompletionTest.java b/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/CodeCompletionTest.java index a7f4ba9d962..a9f3a91ea35 100644 --- a/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/CodeCompletionTest.java +++ b/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/CodeCompletionTest.java @@ -46,9 +46,11 @@ import org.eclipse.ant.tests.ui.editor.performance.EditorTestHelper; import org.eclipse.ant.tests.ui.editor.support.TestTextCompletionProcessor; import org.eclipse.ant.tests.ui.testplugin.AbstractAntUITest; +import org.eclipse.ant.tests.ui.testplugin.AntModelForDocument; import org.eclipse.core.internal.runtime.XmlProcessorFactory; import org.eclipse.core.resources.IFile; import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.TextSelection; import org.eclipse.jface.text.contentassist.ICompletionProposal; import org.eclipse.ui.PartInitException; @@ -64,6 +66,8 @@ @SuppressWarnings("restriction") public class CodeCompletionTest extends AbstractAntUITest { + private static final String ANT_EDITOR_ID = "org.eclipse.ant.ui.internal.editor.AntEditor"; //$NON-NLS-1$ + /** * Tests the code completion for attributes of tasks. */ @@ -122,25 +126,27 @@ public void testAttributeProposals() { */ @Test public void testPropertyProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest1.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest1.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); int lineNumber = 7; int columnNumber = 16; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getPropertyProposals(getCurrentDocument(), "", lineOffset + columnNumber); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getPropertyProposals(document, "", lineOffset + columnNumber); //$NON-NLS-1$ assertThat(proposals).hasSizeGreaterThanOrEqualTo(1); assertContains("prop1", proposals); //$NON-NLS-1$ lineNumber = 18; columnNumber = 25; - lineOffset = getCurrentDocument().getLineOffset(lineNumber); + lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - proposals = processor.getPropertyProposals(getCurrentDocument(), "", lineOffset + columnNumber); //$NON-NLS-1$ + proposals = processor.getPropertyProposals(document, "", lineOffset + columnNumber); //$NON-NLS-1$ assertThat(proposals).hasSizeGreaterThanOrEqualTo(1); assertContains("prop2", proposals); //$NON-NLS-1$ } @@ -174,15 +180,17 @@ public void testPropertyTemplateProposals() throws BadLocationException, PartIni */ @Test public void testSystemPropertyProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest1.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest1.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); int lineNumber = 18; int columnNumber = 25; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getPropertyProposals(getCurrentDocument(), "", lineOffset + columnNumber); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getPropertyProposals(document, "", lineOffset + columnNumber); //$NON-NLS-1$ assertThat(proposals).hasSizeGreaterThanOrEqualTo(1); assertContains("java.home", proposals); //$NON-NLS-1$ } @@ -192,15 +200,17 @@ public void testSystemPropertyProposals() throws BadLocationException { */ @Test public void testBuiltInPropertyProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest1.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest1.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); int lineNumber = 18; int columnNumber = 25; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getPropertyProposals(getCurrentDocument(), "", lineOffset + columnNumber); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getPropertyProposals(document, "", lineOffset + columnNumber); //$NON-NLS-1$ assertThat(proposals).hasSizeGreaterThanOrEqualTo(1); assertContains("ant.file", proposals); //$NON-NLS-1$ assertContains("ant.version", proposals); //$NON-NLS-1$ @@ -222,15 +232,17 @@ public void testPreferencePropertyProposals() throws BadLocationException { prefs.setCustomProperties(new Property[] { new Property("test", "result") }); //$NON-NLS-1$ //$NON-NLS-2$ prefs.updatePluginPreferences(); - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest1.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest1.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); int lineNumber = 18; int columnNumber = 25; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getPropertyProposals(getCurrentDocument(), "", lineOffset + columnNumber); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getPropertyProposals(document, "", lineOffset + columnNumber); //$NON-NLS-1$ assertThat(proposals).hasSizeGreaterThanOrEqualTo(3); assertContains("eclipse.home", proposals); // contributed //$NON-NLS-1$ assertContains("property.ui.testing2", proposals); // contributed //$NON-NLS-1$ @@ -247,15 +259,19 @@ public void testPreferencePropertyProposals() throws BadLocationException { */ @Test public void testTargetDependProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest1.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest1.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + // simple depends int lineNumber = 10; int columnNumber = 34; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getTargetAttributeValueProposals(getCurrentDocument(), getCurrentDocument().get(0, lineOffset + ICompletionProposal[] proposals = processor.getTargetAttributeValueProposals(document, + document.get(0, lineOffset + columnNumber), "", "depends"); //$NON-NLS-1$ //$NON-NLS-2$ assertThat(proposals).hasSize(7); assertContains("pretest", proposals); //$NON-NLS-1$ @@ -263,11 +279,12 @@ public void testTargetDependProposals() throws BadLocationException { // comma separated depends lineNumber = 17; columnNumber = 53; - lineOffset = getCurrentDocument().getLineOffset(lineNumber); + lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - proposals = processor.getTargetAttributeValueProposals(getCurrentDocument(), getCurrentDocument().get(0, lineOffset + proposals = processor.getTargetAttributeValueProposals(document, + document.get(0, lineOffset + columnNumber), "", "depends"); //$NON-NLS-1$ //$NON-NLS-2$ assertThat(proposals).hasSize(7); assertContains("main", proposals); //$NON-NLS-1$ @@ -280,15 +297,18 @@ public void testTargetDependProposals() throws BadLocationException { */ @Test public void testTargetDependProposalImages() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest3.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest3.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + // simple depends int lineNumber = 5; int columnNumber = 34; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(3); assertContains("main", proposals); //$NON-NLS-1$ assertContains("pretest", proposals); //$NON-NLS-1$ @@ -313,15 +333,18 @@ public void testTargetDependProposalImages() throws BadLocationException { */ @Test public void testProjectDefaultProposalImages() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest4.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest4.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + // simple depends int lineNumber = 1; int columnNumber = 18; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(3); assertContains("task", proposals); //$NON-NLS-1$ assertContains("task2", proposals); //$NON-NLS-1$ @@ -346,14 +369,17 @@ public void testProjectDefaultProposalImages() throws BadLocationException { */ @Test public void testAntcallTargetProposalImages() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest4.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest4.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + int lineNumber = 4; int columnNumber = 25; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(2); assertContains("task", proposals); //$NON-NLS-1$ assertContains("task3", proposals); //$NON-NLS-1$ @@ -375,15 +401,18 @@ public void testAntcallTargetProposalImages() throws BadLocationException { */ @Test public void testTargetIfProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest1.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest1.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); int lineNumber = 15; int columnNumber = 31; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getTargetAttributeValueProposals(getCurrentDocument(), getCurrentDocument().get(0, lineOffset + ICompletionProposal[] proposals = processor.getTargetAttributeValueProposals(document, + document.get(0, lineOffset + columnNumber), "", "if"); //$NON-NLS-1$ //$NON-NLS-2$ assertThat(proposals).hasSizeGreaterThanOrEqualTo(1); assertContains("prop1", proposals); //$NON-NLS-1$ @@ -394,15 +423,18 @@ public void testTargetIfProposals() throws BadLocationException { */ @Test public void testTargetUnlessProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest1.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest1.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); int lineNumber = 16; int columnNumber = 43; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getTargetAttributeValueProposals(getCurrentDocument(), getCurrentDocument().get(0, lineOffset + ICompletionProposal[] proposals = processor.getTargetAttributeValueProposals(document, + document.get(0, lineOffset + columnNumber), "prop", "unless"); //$NON-NLS-1$ //$NON-NLS-2$ assertThat(proposals).hasSizeGreaterThanOrEqualTo(1); assertContains("prop1", proposals); //$NON-NLS-1$ @@ -414,14 +446,17 @@ public void testTargetUnlessProposals() throws BadLocationException { */ @Test public void testAntCallTargetProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("debugAntCall.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("debugAntCall.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + int lineNumber = 4; int columnNumber = 25; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getAntCallAttributeValueProposals(getCurrentDocument(), "", "target"); //$NON-NLS-1$ //$NON-NLS-2$ + ICompletionProposal[] proposals = processor.getAntCallAttributeValueProposals(document, "", "target"); //$NON-NLS-1$ //$NON-NLS-2$ assertThat(proposals).hasSize(2); assertContains("call", proposals); //$NON-NLS-1$ assertContains("pre-call", proposals); //$NON-NLS-1$ @@ -462,7 +497,8 @@ private void assertDoesNotContain(String displayString, ICompletionProposal[] pr */ @Test public void testPropertyProposalDefinedInDependantTargets() throws IOException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("dependencytest.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("dependencytest.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); File file = getBuildFile("dependencytest.xml"); //$NON-NLS-1$ processor.setEditedFile(file); @@ -487,9 +523,11 @@ public void testPropertyProposalDefinedInDependantTargets() throws IOException { */ @Test public void testCustomTaskProposals() { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("taskdef.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("taskdef.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); - ICompletionProposal[] proposals = processor.getTaskProposals(getCurrentDocument(), "target", "min"); //$NON-NLS-1$ //$NON-NLS-2$ + ICompletionProposal[] proposals = processor.getTaskProposals(document, "target", "min"); //$NON-NLS-1$ //$NON-NLS-2$ assertThat(proposals).hasSize(1).satisfiesExactly(it -> assertThat(it.getDisplayString()).isEqualTo("mine")); //$NON-NLS-1$ processor.dispose(); } @@ -499,8 +537,11 @@ public void testCustomTaskProposals() { */ @Test public void testExtensionPointTaskProposals() { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("taskdef.xml")); //$NON-NLS-1$ - ICompletionProposal[] proposals = processor.getTaskProposals(getCurrentDocument(), "target", "cool"); //$NON-NLS-1$ //$NON-NLS-2$ + AntModelForDocument model = new AntModelForDocument("taskdef.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + + ICompletionProposal[] proposals = processor.getTaskProposals(document, "target", "cool"); //$NON-NLS-1$ //$NON-NLS-2$ assertContains("coolUITask", proposals); //$NON-NLS-1$ assertContains("coolUIType", proposals); //$NON-NLS-1$ processor.dispose(); @@ -511,9 +552,11 @@ public void testExtensionPointTaskProposals() { */ @Test public void testMacrodefProposals() { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("macrodef.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("macrodef.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); - ICompletionProposal[] proposals = processor.getTaskProposals(getCurrentDocument(), "target", "eclipsema"); //$NON-NLS-1$ //$NON-NLS-2$ + ICompletionProposal[] proposals = processor.getTaskProposals(document, "target", "eclipsema"); //$NON-NLS-1$ //$NON-NLS-2$ assertThat(proposals).hasSize(1) .satisfiesExactly(it -> assertThat(it.getDisplayString()).isEqualTo("eclipseMacro")); //$NON-NLS-1$ @@ -524,9 +567,11 @@ public void testMacrodefProposals() { */ @Test public void testNamespacedMacrodefProposals() { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("98853.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("98853.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); - ICompletionProposal[] proposals = processor.getTaskProposals(getCurrentDocument(), "target", "xyz"); //$NON-NLS-1$ //$NON-NLS-2$ + ICompletionProposal[] proposals = processor.getTaskProposals(document, "target", "xyz"); //$NON-NLS-1$ //$NON-NLS-2$ assertThat(proposals).hasSize(2).satisfiesExactly( first -> assertThat(first.getDisplayString()).isEqualTo("xyz:echo-macro"), //$NON-NLS-1$ identity()::apply); @@ -538,14 +583,17 @@ public void testNamespacedMacrodefProposals() { */ @Test public void testMacrodefNestedElementAttributeProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("macrodef.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("macrodef.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + int lineNumber = 5; int columnNumber = 11; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(5); assertContains(IAntCoreConstants.DESCRIPTION, proposals); assertContains("implicit - (true | false | on | off | yes | no)", proposals); //$NON-NLS-1$ @@ -558,14 +606,17 @@ public void testMacrodefNestedElementAttributeProposals() throws BadLocationExce */ @Test public void testMacrodefAttributeProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("macrodef.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("macrodef.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + int lineNumber = 12; int columnNumber = 16; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(2); assertContains("v", proposals); //$NON-NLS-1$ assertContains("eclipse", proposals); //$NON-NLS-1$ @@ -578,14 +629,17 @@ public void testMacrodefAttributeProposals() throws BadLocationException { */ @Test public void testNamespacedMacrodefAttributeProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("98853.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("98853.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + int lineNumber = 16; int columnNumber = 18; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(1); assertContains("str", proposals); //$NON-NLS-1$ processor.dispose(); @@ -596,14 +650,17 @@ public void testNamespacedMacrodefAttributeProposals() throws BadLocationExcepti */ @Test public void testMacrodefElementProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("macrodef.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("macrodef.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + int lineNumber = 13; int columnNumber = 3; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(1); assertTrue("Proposal not correct", proposals[0].getDisplayString().equals("some-tasks")); //$NON-NLS-1$ //$NON-NLS-2$ assertTrue("Additional proposal information not correct", proposals[0].getAdditionalProposalInfo().endsWith("Not required")); //$NON-NLS-1$ //$NON-NLS-2$ @@ -615,7 +672,8 @@ public void testMacrodefElementProposals() throws BadLocationException { */ @Test public void testTaskProposals() { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest1.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest1.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); ICompletionProposal[] proposals = processor.getTaskProposals(" <", "rename", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ assertThat(proposals).isEmpty(); @@ -680,7 +738,8 @@ public void testTargetTemplateProposals() throws BadLocationException, PartInitE */ @Test public void testFailProposals() { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest1.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest1.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); ICompletionProposal[] proposals = processor.getAttributeProposals("fail", ""); //$NON-NLS-1$ //$NON-NLS-2$ assertThat(proposals).hasSize(6); @@ -696,14 +755,18 @@ public void testFailProposals() { */ @Test public void testMixedElements() { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("mixed.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("mixed.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + // String string = ""; - ICompletionProposal[] proposals = processor.getTaskProposals(getCurrentDocument(), processor.getParentName(getCurrentDocument(), 0, 62), "t"); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getTaskProposals(document, processor.getParentName(document, 0, 62), + "t"); //$NON-NLS-1$ assertThat(proposals).hasSize(1); ICompletionProposal proposal = proposals[0]; assertEquals("transaction", proposal.getDisplayString()); //$NON-NLS-1$ - proposals = processor.getTaskProposals(getCurrentDocument(), processor.getParentName(getCurrentDocument(), 0, 76), ""); //$NON-NLS-1$ + proposals = processor.getTaskProposals(document, processor.getParentName(document, 0, 76), ""); //$NON-NLS-1$ // filelist fileset filterchain footer header path assertThat(proposals).hasSize(6); proposal = proposals[0]; @@ -890,7 +953,8 @@ public void testDeterminingNoneProposalMode() { */ @Test public void testTaskProposalsForEmptyBuildFile() { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("empty.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("empty.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); ICompletionProposal[] proposals = processor.getBuildFileProposals("", ""); //$NON-NLS-1$ //$NON-NLS-2$ assertThat(proposals).hasSize(1).satisfiesExactly(it -> assertThat(it.getDisplayString()).isEqualTo("project")); //$NON-NLS-1$ @@ -908,15 +972,17 @@ public void testTaskProposalsForEmptyBuildFile() { */ @Test public void testRefidProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("refid.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("refid.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); int lineNumber = 9; int columnNumber = 16; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ // for sure should have project.class.path and project.class.path2 but project.class.path2 // should not present itself as a possible reference assertThat(proposals).hasSizeGreaterThanOrEqualTo(2); @@ -930,15 +996,17 @@ public void testRefidProposals() throws BadLocationException { */ @Test public void testCustomBooleanProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("customBoolean.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("customBoolean.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); int lineNumber = 2; int columnNumber = 45; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ // true false yes no on off assertThat(proposals).hasSize(6); assertContains("true", proposals); //$NON-NLS-1$ @@ -951,14 +1019,17 @@ public void testCustomBooleanProposals() throws BadLocationException { */ @Test public void testCustomEnumeratedProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("extensionPointTaskSepVM.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("extensionPointTaskSepVM.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + int lineNumber = 2; int columnNumber = 24; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), "c"); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, "c"); //$NON-NLS-1$ assertThat(proposals).hasSize(2); assertContains("cool", proposals); //$NON-NLS-1$ assertContains("chillin", proposals); //$NON-NLS-1$ @@ -971,14 +1042,17 @@ public void testCustomEnumeratedProposals() throws BadLocationException { */ @Test public void testCustomReferenceProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("extensionPointTaskSepVM.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("extensionPointTaskSepVM.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + int lineNumber = 2; int columnNumber = 41; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), "e"); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, "e"); //$NON-NLS-1$ assertThat(proposals).hasSize(1); // the reference to the project by name assertContains("Extension Point Task", proposals); //$NON-NLS-1$ @@ -990,14 +1064,17 @@ public void testCustomReferenceProposals() throws BadLocationException { */ @Test public void testNestedElementAttributeProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("nestedElementAttributes.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("nestedElementAttributes.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + int lineNumber = 4; int columnNumber = 18; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(1); assertContains("works", proposals); //$NON-NLS-1$ processor.dispose(); @@ -1008,14 +1085,17 @@ public void testNestedElementAttributeProposals() throws BadLocationException { */ @Test public void testNestedElementProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("nestedElementAttributes.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("nestedElementAttributes.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + int lineNumber = 4; int columnNumber = 3; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(1); assertContains("nestedelement", proposals); //$NON-NLS-1$ processor.dispose(); @@ -1049,14 +1129,17 @@ public void testNestedElementTemplateProposals() throws BadLocationException, Pa */ @Test public void testNestedElementAttributeValueProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("nestedElementAttributes.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("nestedElementAttributes.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + int lineNumber = 4; int columnNumber = 25; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(6); assertContains("true", proposals); //$NON-NLS-1$ processor.dispose(); @@ -1067,14 +1150,17 @@ public void testNestedElementAttributeValueProposals() throws BadLocationExcepti */ @Test public void testBadProjectProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("badproject.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("badproject.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + int lineNumber = 0; int columnNumber = 10; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), "n"); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, "n"); //$NON-NLS-1$ assertThat(proposals).hasSize(1); assertContains(IAntCoreConstants.NAME, proposals); processor.dispose(); @@ -1085,34 +1171,37 @@ public void testBadProjectProposals() throws BadLocationException { */ @Test public void testAttributeValueProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("javac.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("javac.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); + int lineNumber = 2; int columnNumber = 29; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(6); assertContains("false", proposals); //$NON-NLS-1$ lineNumber = 3; columnNumber = 19; - lineOffset = getCurrentDocument().getLineOffset(lineNumber); + lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(6); assertContains("true", proposals); //$NON-NLS-1$ lineNumber = 4; columnNumber = 22; - lineOffset = getCurrentDocument().getLineOffset(lineNumber); + lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(6); assertContains("no", proposals); //$NON-NLS-1$ processor.dispose(); @@ -1146,15 +1235,17 @@ public void testEmptyBuildfileProposals() throws PartInitException { */ @Test public void testJavacReferencesProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("refid.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("refid.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); int lineNumber = 16; int columnNumber = 24; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ // for sure should have project.class.path and project.class.path2 assertThat(proposals).hasSizeGreaterThanOrEqualTo(2); assertContains("project.class.path", proposals); //$NON-NLS-1$ @@ -1162,11 +1253,11 @@ public void testJavacReferencesProposals() throws BadLocationException { lineNumber = 17; columnNumber = 25; - lineOffset = getCurrentDocument().getLineOffset(lineNumber); + lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ // for sure should have project.class.path and project.class.path2 assertThat(proposals).hasSizeGreaterThanOrEqualTo(2); assertContains("project.class.path", proposals); //$NON-NLS-1$ @@ -1174,11 +1265,11 @@ public void testJavacReferencesProposals() throws BadLocationException { lineNumber = 18; columnNumber = 26; - lineOffset = getCurrentDocument().getLineOffset(lineNumber); + lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ // for sure should have project.class.path and project.class.path2 assertThat(proposals).hasSizeGreaterThanOrEqualTo(2); assertContains("project.class.path", proposals); //$NON-NLS-1$ @@ -1191,15 +1282,17 @@ public void testJavacReferencesProposals() throws BadLocationException { */ @Test public void testProjectDefaultProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest1.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest1.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); int lineNumber = 1; int columnNumber = 49; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ // includes all the public targets assertThat(proposals).hasSize(8); assertContains("main", proposals); //$NON-NLS-1$ @@ -1212,15 +1305,17 @@ public void testProjectDefaultProposals() throws BadLocationException { */ @Test public void testProjectAttributeProposals() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest1.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("buildtest1.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); int lineNumber = 1; int columnNumber = 9; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ // includes all the project attributes assertThat(proposals).hasSize(3); assertContains(IAntCoreConstants.NAME, proposals); @@ -1228,11 +1323,11 @@ public void testProjectAttributeProposals() throws BadLocationException { assertContains("basedir", proposals); //$NON-NLS-1$ columnNumber = 10; - lineOffset = getCurrentDocument().getLineOffset(lineNumber); + lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - proposals = processor.getProposalsFromDocument(getCurrentDocument(), "n"); //$NON-NLS-1$ + proposals = processor.getProposalsFromDocument(document, "n"); //$NON-NLS-1$ assertThat(proposals).hasSize(1); assertContains(IAntCoreConstants.NAME, proposals); processor.dispose(); @@ -1240,15 +1335,17 @@ public void testProjectAttributeProposals() throws BadLocationException { @Test public void testExtensionPoint() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("antextpoint1.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("antextpoint1.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); int lineNumber = 2; int columnNumber = 3; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), "ext"); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, "ext"); //$NON-NLS-1$ assertThat(proposals).hasSize(3); assertContains("extension-point", proposals); //$NON-NLS-1$ processor.dispose(); @@ -1256,15 +1353,17 @@ public void testExtensionPoint() throws BadLocationException { @Test public void testExtensionOf() throws BadLocationException { - TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("antextpoint2.xml")); //$NON-NLS-1$ + AntModelForDocument model = new AntModelForDocument("antextpoint2.xml"); //$NON-NLS-1$ + TestTextCompletionProcessor processor = new TestTextCompletionProcessor(model.getAntModel()); + IDocument document = model.getDocument(); int lineNumber = 3; int columnNumber = 38; - int lineOffset = getCurrentDocument().getLineOffset(lineNumber); + int lineOffset = document.getLineOffset(lineNumber); processor.setLineNumber(lineNumber); processor.setColumnNumber(columnNumber); processor.setCursorPosition(lineOffset + columnNumber); - ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), ""); //$NON-NLS-1$ + ICompletionProposal[] proposals = processor.getProposalsFromDocument(document, ""); //$NON-NLS-1$ assertThat(proposals).hasSize(1); assertContains("ep-B", proposals); //$NON-NLS-1$ processor.dispose(); diff --git a/ant/org.eclipse.ant.tests.ui/test plugin/org/eclipse/ant/tests/ui/testplugin/AbstractAntUITest.java b/ant/org.eclipse.ant.tests.ui/test plugin/org/eclipse/ant/tests/ui/testplugin/AbstractAntUITest.java index 3ad95a4c4b0..d9c2efe2f63 100644 --- a/ant/org.eclipse.ant.tests.ui/test plugin/org/eclipse/ant/tests/ui/testplugin/AbstractAntUITest.java +++ b/ant/org.eclipse.ant.tests.ui/test plugin/org/eclipse/ant/tests/ui/testplugin/AbstractAntUITest.java @@ -14,17 +14,7 @@ package org.eclipse.ant.tests.ui.testplugin; import static org.eclipse.ant.tests.ui.testplugin.AntUITestUtil.assertProject; -import static org.eclipse.ant.tests.ui.testplugin.AntUITestUtil.getBuildFile; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; - -import org.eclipse.ant.internal.ui.model.AntModel; -import org.eclipse.ant.tests.ui.editor.support.TestLocationProvider; -import org.eclipse.ant.tests.ui.editor.support.TestProblemRequestor; -import org.eclipse.jface.text.Document; -import org.eclipse.jface.text.IDocument; import org.junit.Before; import org.junit.Rule; @@ -33,9 +23,7 @@ */ public abstract class AbstractAntUITest { - public static final String ANT_EDITOR_ID = "org.eclipse.ant.ui.internal.editor.AntEditor"; //$NON-NLS-1$ private final CloseWelcomeScreenExtension closeWelcomeScreenExtension = new CloseWelcomeScreenExtension(); - private IDocument currentDocument; @Rule public TestAgainExceptionRule testAgainRule = new TestAgainExceptionRule(5); @@ -46,47 +34,4 @@ public void setUp() throws Exception { closeWelcomeScreenExtension.assertWelcomeScreenClosed(); } - /** - * Returns the underlying {@link IDocument} for the given file name - * - * @return the underlying {@link IDocument} for the given file name - */ - protected IDocument getDocument(String fileName) { - File file = getBuildFile(fileName); - try { - String initialContent = Files.readString(file.toPath()); - return new Document(initialContent); - } catch (IOException e) { - return null; - } - } - - /** - * Returns the {@link AntModel} for the given file name - * - * @return the {@link AntModel} for the given file name - */ - protected AntModel getAntModel(String fileName) { - currentDocument = getDocument(fileName); - AntModel model = new AntModel(currentDocument, new TestProblemRequestor(), - new TestLocationProvider(getBuildFile(fileName))); - model.reconcile(); - return model; - } - - /** - * @return the current {@link IDocument} context - */ - public IDocument getCurrentDocument() { - return currentDocument; - } - - /** - * Allows the current {@link IDocument} context to be set. This method accepts null - */ - public void setCurrentDocument(IDocument currentDocument) { - this.currentDocument = currentDocument; - } - - } \ No newline at end of file diff --git a/ant/org.eclipse.ant.tests.ui/test plugin/org/eclipse/ant/tests/ui/testplugin/AntModelForDocument.java b/ant/org.eclipse.ant.tests.ui/test plugin/org/eclipse/ant/tests/ui/testplugin/AntModelForDocument.java new file mode 100644 index 00000000000..0708d9a0e4b --- /dev/null +++ b/ant/org.eclipse.ant.tests.ui/test plugin/org/eclipse/ant/tests/ui/testplugin/AntModelForDocument.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright (c) 2025 Vector Informatik GmbH 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 + *******************************************************************************/ +package org.eclipse.ant.tests.ui.testplugin; + +import static org.eclipse.ant.tests.ui.testplugin.AntUITestUtil.getBuildFile; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +import org.eclipse.ant.internal.ui.model.AntModel; +import org.eclipse.ant.tests.ui.editor.support.TestLocationProvider; +import org.eclipse.ant.tests.ui.editor.support.TestProblemRequestor; +import org.eclipse.jface.text.Document; +import org.eclipse.jface.text.IDocument; + +public class AntModelForDocument { + + private final IDocument currentDocument; + + private final AntModel antModel; + + public AntModelForDocument(String fileName) { + this.currentDocument = loadDocument(fileName); + this.antModel = createAntModel(fileName); + } + + private IDocument loadDocument(String fileName) { + File file = getBuildFile(fileName); + try { + String initialContent = Files.readString(file.toPath()); + return new Document(initialContent); + } catch (IOException e) { + return null; + } + } + + private AntModel createAntModel(String fileName) { + AntModel model = new AntModel(currentDocument, new TestProblemRequestor(), + new TestLocationProvider(getBuildFile(fileName))); + model.reconcile(); + return model; + } + + /** + * {@return the {@link AntModel} for the file name passed when initializing this + * object} + */ + public AntModel getAntModel() { + return antModel; + } + + /** + * {@return the underlying {@link IDocument} for the file name passed when + * initializing this object} + */ + public IDocument getDocument() { + return currentDocument; + } + +}