diff options
Diffstat (limited to 'org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/IncrementalAsyncContentAssistTests.java')
-rw-r--r-- | org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/IncrementalAsyncContentAssistTests.java | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/IncrementalAsyncContentAssistTests.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/IncrementalAsyncContentAssistTests.java new file mode 100644 index 00000000000..ef79f05b4e4 --- /dev/null +++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/IncrementalAsyncContentAssistTests.java @@ -0,0 +1,124 @@ +/******************************************************************************* + * Copyright (c) 2020 Julian Honnen + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Julian Honnen - initial API and implementation + *******************************************************************************/ +package org.eclipse.jface.text.tests.contentassist; + +import static java.util.stream.Collectors.toList; +import static org.junit.Assert.assertEquals; + +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Shell; + +import org.eclipse.jface.text.Document; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.contentassist.ContentAssistant; +import org.eclipse.jface.text.contentassist.ICompletionProposal; +import org.eclipse.jface.text.source.SourceViewer; +import org.eclipse.jface.text.tests.util.DisplayHelper; + +public class IncrementalAsyncContentAssistTests { + + private Shell shell; + + private SourceViewer viewer; + + private ContentAssistant ca; + + @Before + public void setup() { + tearDown(); + + shell= new Shell(); + shell.setSize(300, 300); + shell.open(); + + viewer= new SourceViewer(shell, null, SWT.NONE); + Document document= new Document(); + viewer.setDocument(document); + ca= new ContentAssistant(true); + + Comparator<ICompletionProposal> comparator= Comparator.comparing(p -> p.getDisplayString()); + ca.setSorter(comparator::compare); + } + + @After + public void tearDown() { + if (shell != null) { + ca.uninstall(); + if (!shell.isDisposed()) { + shell.dispose(); + } + shell= null; + } + } + + @Test + public void testIncrementalComplete() throws Exception { + ca.addContentAssistProcessor(new FilteringAsyncContentAssistTests.ImmediateContentAssistProcessor("testC", "testB", "testA"), IDocument.DEFAULT_CONTENT_TYPE); + + viewer.getDocument().set("t"); + + ca.install(viewer); + viewer.setSelectedRange(1, 0); + + ca.completePrefix(); + + DisplayHelper.sleep(shell.getDisplay(), 300); + + List<String> filteredProposals= FilteringAsyncContentAssistTests.getFilteredProposals(ca).stream() // + .map(p -> p.getDisplayString()) // + .collect(toList()); + assertEquals(Arrays.asList("testA", "testB", "testC"), filteredProposals); + } + + @Test + public void testIncrementalComplete_async() throws Exception { + long delay= 200; + ca.addContentAssistProcessor(new FilteringAsyncContentAssistTests.DelayedContentAssistProcessor(Arrays.asList("testC", "testB", "testA"), delay, false), IDocument.DEFAULT_CONTENT_TYPE); + + viewer.getDocument().set("t"); + + ca.install(viewer); + viewer.setSelectedRange(1, 0); + + ca.completePrefix(); + + DisplayHelper.sleep(shell.getDisplay(), delay + 100); + + List<String> filteredProposals= FilteringAsyncContentAssistTests.getFilteredProposals(ca).stream() // + .map(p -> p.getDisplayString()) // + .collect(toList()); + assertEquals(Arrays.asList("testA", "testB", "testC"), filteredProposals); + } + + @Test + public void testIncrementalCompleteOfSingleProposal() throws Exception { + ca.enableAutoInsert(true); + ca.addContentAssistProcessor(new FilteringAsyncContentAssistTests.ImmediateContentAssistProcessor("testA"), IDocument.DEFAULT_CONTENT_TYPE); + + ca.install(viewer); + viewer.setSelectedRange(0, 0); + + ca.completePrefix(); + + DisplayHelper.sleep(shell.getDisplay(), 300); + + assertEquals("testA", viewer.getDocument().get()); + } + +} |