blob: 9c47efee1d172a131f041c61837c6a797a4b9e96 [file] [log] [blame]
/*
* Copyright (c) 2005, 2009 Sven Efftinge and others.
* 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Sven Efftinge - Initial API and implementation
* Alexander Shatalin (Borland) - initial API and implementation
*/
package org.eclipse.gmf.internal.xpand.codeassist;
import java.util.List;
import junit.framework.TestCase;
import org.eclipse.gmf.internal.xpand.editor.Activator;
import org.eclipse.gmf.internal.xpand.editor.EditorImages;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.swt.graphics.Image;
public class StatementProposalComputerTest extends TestCase {
private ProposalFactoryImpl f;
private StatementProposalComputer kpc;
@Override
protected void setUp() throws Exception {
if (Activator.getDefault() == null) {
new Activator();
}
f = new ProposalFactoryImpl(100, 0, new EditorImages() {
@Override
protected Image imageFromPath(String path) {
return null;
}
});
kpc = new StatementProposalComputer(f);
super.setUp();
}
public final void testComputeProposals1() {
final String txt = tag("DEFINE test FOR this") + " ";
final List<ICompletionProposal> p = kpc.computeProposals(txt, null);
assertTrue(p.get(0).getDisplayString().startsWith(XpandTokens.ENDDEFINE));
assertFalse(contains(p, XpandTokens.ELSE));
assertFalse(contains(p, XpandTokens.ELSEIF));
assertTrue(contains(p, XpandTokens.FILE));
assertTrue(contains(p, XpandTokens.PROTECT));
assertTrue(contains(p, XpandTokens.IF));
assertTrue(contains(p, XpandTokens.LET));
assertTrue(contains(p, XpandTokens.FOREACH));
assertTrue(contains(p, XpandTokens.EXPAND));
}
public final void testComputeProposals2() {
final String txt = tag("DEFINE test FOR this") + " " + tag("FILE test") + tag("IF x");
final List<ICompletionProposal> p = kpc.computeProposals(txt, null);
assertTrue(p.get(0).getDisplayString().startsWith(XpandTokens.ENDIF));
assertTrue(contains(p, XpandTokens.ELSE));
assertTrue(contains(p, XpandTokens.ELSEIF));
assertFalse(contains(p, XpandTokens.FILE));
assertTrue(contains(p, XpandTokens.PROTECT));
assertTrue(contains(p, XpandTokens.IF));
assertTrue(contains(p, XpandTokens.LET));
assertTrue(contains(p, XpandTokens.FOREACH));
assertTrue(contains(p, XpandTokens.EXPAND));
}
public final void testComputeProposals3() {
final String txt = tag("DEFINE test FOR this") + " " + tag("FILE test") + tag("IF x") + tag("ENDIF")
+ tag("ENDFILE") + tag("PROTECT CSTART x CEND y ENABLED");
final List<ICompletionProposal> p = kpc.computeProposals(txt, null);
assertTrue(p.get(0).getDisplayString().startsWith(XpandTokens.ENDPROTECT));
assertFalse(contains(p, XpandTokens.ELSE));
assertFalse(contains(p, XpandTokens.ELSEIF));
assertTrue(contains(p, XpandTokens.FILE));
assertFalse(contains(p, XpandTokens.PROTECT));
assertTrue(contains(p, XpandTokens.IF));
assertTrue(contains(p, XpandTokens.LET));
assertTrue(contains(p, XpandTokens.FOREACH));
assertTrue(contains(p, XpandTokens.EXPAND));
}
public final void testComputeProposals4() {
final String txt = tag("IMPORT xyz") + " ";
final List<ICompletionProposal> p = kpc.computeProposals(txt, null);
assertFalse(contains(p, XpandTokens.DEFINE));
assertFalse(contains(p, XpandTokens.AROUND));
assertEquals(4, p.size());
}
private static boolean contains(final List<ICompletionProposal> proposals, final String keyword) {
for (ICompletionProposal element : proposals) {
if (element.getDisplayString().startsWith(keyword))
return true;
}
return false;
}
private static String tag(final String txt) {
return XpandTokens.LT + txt + XpandTokens.RT;
}
}