package org.eclipse.recommenders.completion.rcp.it; import static org.hamcrest.CoreMatchers.equalTo; import static org.mockito.Mockito.*; import java.util.Collections; import java.util.List; import javax.inject.Provider; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor; import org.eclipse.jdt.ui.text.java.JavaContentAssistInvocationContext; import org.eclipse.jface.text.contentassist.ICompletionProposal; import org.eclipse.recommenders.completion.rcp.CompletionContextFunctions; import org.eclipse.recommenders.completion.rcp.processable.IntelligentCompletionProposalComputer; import org.eclipse.recommenders.internal.completion.rcp.CompletionRcpPreferences; import org.eclipse.recommenders.internal.rcp.CachingAstProvider; import org.eclipse.recommenders.rcp.SharedImages; import org.eclipse.ui.IEditorPart; import org.junit.Assert; import org.junit.Test; @SuppressWarnings("restriction") public class IntelligentProposalComputerTest { private List<ICompletionProposal> NO_PROPOSALS = Collections.<ICompletionProposal>emptyList(); public IntelligentCompletionProposalComputer createSUT() { return createSUT(new Provider<IEditorPart>() { @Override public IEditorPart get() { return (IEditorPart) new CompilationUnitEditor(); } }); } public IntelligentCompletionProposalComputer createSUT(Provider<IEditorPart> editorProvider) { CompletionRcpPreferences preferences = new CompletionRcpPreferences(); preferences.setEnabledSessionProcessorString(""); return new IntelligentCompletionProposalComputer(preferences, new CachingAstProvider(), new SharedImages(), CompletionContextFunctions.defaultFunctions(), editorProvider); } @Test public void testNullProject() { // setup ICompilationUnit cu = mock(ICompilationUnit.class); JavaContentAssistInvocationContext ctx = new JavaContentAssistInvocationContext(cu); // exercise IntelligentCompletionProposalComputer sut = createSUT(); sut.sessionStarted(); List<ICompletionProposal> proposals = sut.computeCompletionProposals(ctx, null); // verify Assert.assertThat(proposals, equalTo(NO_PROPOSALS)); } @Test public void testProjectExistsFalse() { // setup ICompilationUnit cu = mock(ICompilationUnit.class); IJavaProject project = mock(IJavaProject.class); when(cu.getJavaProject()).thenReturn(project); JavaContentAssistInvocationContext ctx = new JavaContentAssistInvocationContext(cu); // exercise IntelligentCompletionProposalComputer sut = createSUT(); sut.sessionStarted(); List<ICompletionProposal> proposals = sut.computeCompletionProposals(ctx, null); // verify Assert.assertThat(proposals, equalTo(NO_PROPOSALS)); } @Test public void testSubClassOfCompilationUnitEditor() { // setup ICompilationUnit cu = mock(ICompilationUnit.class); IJavaProject project = mock(IJavaProject.class); when(cu.getJavaProject()).thenReturn(project); when(project.exists()).thenReturn(true); JavaContentAssistInvocationContext ctx = new JavaContentAssistInvocationContext(cu); Provider<IEditorPart> retriever = new Provider<IEditorPart>() { @Override public IEditorPart get() { CompilationUnitEditor nonJavaEditor = new CompilationUnitEditor() { }; return (IEditorPart) nonJavaEditor; } }; // exercise IntelligentCompletionProposalComputer sut = createSUT(retriever); sut.sessionStarted(); List<ICompletionProposal> proposals = sut.computeCompletionProposals(ctx, null); // verify Assert.assertThat(proposals, equalTo(NO_PROPOSALS)); } }