package org.eclipse.recommenders.internal.completion.rcp; import java.util.Collection; import java.util.LinkedList; import org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal; import org.eclipse.jface.text.Document; import org.eclipse.recommenders.internal.completion.rcp.tips.DiscoveryCompletionProposal; import org.eclipse.recommenders.rcp.SharedImages; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import com.google.common.collect.Lists; /** * Test that the <em>special</em> proposals like {@link EnableCompletionProposal} do not cause a NullPointerException * when in the following situation: * * <pre> * "some string".unknown<kbd><Ctrl+Space></kbd> * </pre> * * @see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=425005">Bug 425005</a> * @see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=425994">Bug 425994</a> */ @RunWith(Parameterized.class) @SuppressWarnings("restriction") public class Bug425994Test { private final AbstractJavaCompletionProposal sut; public Bug425994Test(AbstractJavaCompletionProposal proposal) { this.sut = proposal; } @Parameters(name = "{index}: {0}") public static Collection<Object[]> proposals() { SharedImages images = new SharedImages(); LinkedList<Object[]> proposals = Lists.newLinkedList(); proposals.add(new Object[] { new DiscoveryCompletionProposal(images) }); proposals.add(new Object[] { new EmptyCompletionProposal(0) }); proposals.add(new Object[] { new EnabledCompletionProposal(images, 0) }); return proposals; } @Test public void testNoNullPointerException() { Document doc = new Document("document"); sut.getPrefixCompletionText(doc, 0); } }