package net.sf.eclipsefp.haskell.core.internal.util;
import junit.framework.TestCase;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.contentassist.CompletionProposal;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
public class CompletionProposalTestCase extends TestCase {
public static ICompletionProposal createProposal(final String replaced, final String replacement, final int offset) {
final int qlen = replaced.length();
return new CompletionProposal(replacement, offset - qlen, qlen,
replacement.length());
}
public static void assertContains(final ICompletionProposal expected, final ICompletionProposal[] props) {
String expectedContent = applyToEmptyDocument(expected);
for(ICompletionProposal prop: props) {
String actualContent = applyToEmptyDocument(prop);
if (expectedContent.equals(actualContent)) {
return;
}
}
fail("Proposal not found");
}
private static String applyToEmptyDocument(final ICompletionProposal expected) {
IDocument expectedDoc = createDocument(expected.getSelection(null).x);
expected.apply(expectedDoc);
String expectedContent = expectedDoc.get();
return expectedContent;
}
private static IDocument createDocument(final int size) {
StringBuffer buf = new StringBuffer();
for(int i = 0; i < size; ++i) {
buf.append(' ');
}
return new Document(buf.toString());
}
}