blob: 18e4b95e87402c6c2d20526f1a0bbfd762b80b40 [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.expression.codeassist;
import junit.framework.TestCase;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.gmf.internal.xpand.model.ExecutionContext;
import org.eclipse.gmf.internal.xpand.model.ExecutionContextImpl;
import org.eclipse.gmf.internal.xpand.model.Scope;
import org.eclipse.gmf.internal.xpand.model.Variable;
import org.eclipse.ocl.expressions.CollectionKind;
public class ExpressionProposalComputerTest extends TestCase {
private ExpressionProposalComputer.ExpressionSimpleAnalyzer expressionAnalyzer;
@Override
protected void setUp() throws Exception {
expressionAnalyzer = new ExpressionProposalComputer.ExpressionSimpleAnalyzer();
}
public final void testComputePrefixAndTargetExpression1() {
final String[] s = expressionAnalyzer.computePrefixAndTargetExpression("test");
assertEquals("test", s[0]);
assertNull(s[1]);
}
public final void testComputePrefixAndTargetExpression2() {
final String[] s = expressionAnalyzer.computePrefixAndTargetExpression("test.th");
assertEquals("th", s[0]);
assertEquals("test", s[1]);
}
public final void testComputePrefixAndTargetExpression3() {
final String[] s = expressionAnalyzer.computePrefixAndTargetExpression("test.the.computer.now");
assertEquals("now", s[0]);
assertEquals("test.the.computer", s[1]);
}
public final void testComputePrefixAndTargetExpression4() {
final String[] s = expressionAnalyzer.computePrefixAndTargetExpression("test(true,\nfalse()).next");
assertEquals("next", s[0]);
// TODO: un-comment on fixing problems with ReverseScanner
// assertEquals("test(true,\nfalse())", s[1]);
}
public final void testComputePrefixAndTargetExpression5() {
final String[] s = expressionAnalyzer.computePrefixAndTargetExpression("bdlfsdfows test. bla({}).");
// TODO: un-comment on fixing problems with ReverseScanner
// assertEquals("", s[0]);
// assertEquals("test. bla({})", s[1]);
}
public final void testComputePrefixAndTargetExpression6() {
final String[] s = expressionAnalyzer.computePrefixAndTargetExpression("test(true, {false, 'hallo',stuff.");
// TODO: un-comment on fixing problems with ReverseScanner
// assertEquals("", s[0]);
// assertEquals("stuff", s[1]);
}
public final void testComputePrefixAndTargetExpression7() {
final String[] s = expressionAnalyzer.computePrefixAndTargetExpression("rfq.*test");
assertEquals("test", s[0]);
assertEquals(null, s[1]);
}
public final void testComputePrefixAndTargetExpression8() {
final String[] s = expressionAnalyzer.computePrefixAndTargetExpression("\\x");
assertEquals("x", s[0]);
assertEquals(null, s[1]);
}
public final void testComputePrefixAndTargetExpression9() {
final String[] s = expressionAnalyzer.computePrefixAndTargetExpression("FOREACH (Set[EPackage])e.all");
assertEquals("all", s[0]);
assertEquals("e", s[1]);
}
public final void testComputePrefixAndTargetExpression10() {
final String[] s = expressionAnalyzer.computePrefixAndTargetExpression("TEST ");
assertEquals("", s[0]);
assertEquals(null, s[1]);
}
public final void off_testSetInState() {
ExecutionContextImpl ctx = new ExecutionContextImpl(new Scope() {});
EClassifier oclString = ctx.getOCLEnvironment().getOCLStandardLibrary().getString();
EClassifier listOfStrings = (EClassifier) ctx.getOCLEnvironment().getTypeResolver().resolveCollectionType(CollectionKind.SEQUENCE_LITERAL, oclString);
ctx = (ExecutionContextImpl) ctx.cloneWithVariable(new Variable("v", listOfStrings, null));
final String s = "v.select(e| true";
// FIXME #computeExecutionContext was no-op
// ctx = (ExecutionContextImpl) ExpressionProposalComputer.computeExecutionContext(s, ctx);
assertEquals(2, ctx.getOCLEnvironment().getVariables().size());
assertEquals(listOfStrings, ctx.getOCLEnvironment().lookup("v").getType());
assertEquals(oclString, ctx.getOCLEnvironment().lookup("e").getType());
}
public final void testSetInState1() {
ExecutionContextImpl ctx = new ExecutionContextImpl(new Scope() {});
EClassifier oclString = ctx.getOCLEnvironment().getOCLStandardLibrary().getString();
EClassifier listOfStrings = (EClassifier) ctx.getOCLEnvironment().getTypeResolver().resolveCollectionType(CollectionKind.SEQUENCE_LITERAL, oclString);
ctx = (ExecutionContextImpl) ctx.cloneWithVariable(new Variable("v", listOfStrings, null));
final String s = "v.select(e| true)";
// FIXME #computeExecutionContext was no-op
// ctx = (ExecutionContextImpl) ExpressionProposalComputer.computeExecutionContext(s, ctx);
assertEquals(1, ctx.getOCLEnvironment().getVariables().size());
assertEquals(listOfStrings, ctx.getOCLEnvironment().lookup("v").getType());
}
public final void off_testSetInState2() {
ExecutionContextImpl ctx = new ExecutionContextImpl(new Scope() {});
EClassifier oclString = ctx.getOCLEnvironment().getOCLStandardLibrary().getString();
EClassifier oclBoolean = ctx.getOCLEnvironment().getOCLStandardLibrary().getBoolean();
EClassifier listOfStrings = (EClassifier) ctx.getOCLEnvironment().getTypeResolver().resolveCollectionType(CollectionKind.SEQUENCE_LITERAL, oclString);
ctx = (ExecutionContextImpl) ctx.cloneWithVariable(new Variable("v", listOfStrings, null));
final String s = "v.select(e| Sequence{true}.collect(e|";
// FIXME #computeExecutionContext was no-op
// ctx = (ExecutionContextImpl) ExpressionProposalComputer.computeExecutionContext(s, ctx);
assertEquals(2, ctx.getOCLEnvironment().getVariables().size());
assertEquals(listOfStrings, ctx.getOCLEnvironment().lookup("v").getType());
assertEquals(oclBoolean, ctx.getOCLEnvironment().lookup("e").getType());
}
public final void off_testSetInState3() {
ExecutionContextImpl ctx = new ExecutionContextImpl(new Scope() {});
EClassifier oclString = ctx.getOCLEnvironment().getOCLStandardLibrary().getString();
EClassifier oclBoolean = ctx.getOCLEnvironment().getOCLStandardLibrary().getBoolean();
EClassifier listOfStrings = (EClassifier) ctx.getOCLEnvironment().getTypeResolver().resolveCollectionType(CollectionKind.SEQUENCE_LITERAL, oclString);
ctx = (ExecutionContextImpl) ctx.cloneWithVariable(new Variable("v", listOfStrings, null));
final String s = "v.select(e| Sequence{true}.collect(b|";
// FIXME #computeExecutionContext was no-op
// ctx = (ExecutionContextImpl) ExpressionProposalComputer.computeExecutionContext(s, ctx);
assertEquals(3, ctx.getOCLEnvironment().getVariables().size());
assertEquals(listOfStrings, ctx.getOCLEnvironment().lookup("v").getType());
assertEquals(oclString, ctx.getOCLEnvironment().lookup("e").getType());
assertEquals(oclBoolean, ctx.getOCLEnvironment().lookup("b").getType());
}
public final void off_testSetInState4() {
ExecutionContextImpl ctx = new ExecutionContextImpl(new Scope() {});
EClassifier oclString = ctx.getOCLEnvironment().getOCLStandardLibrary().getString();
EClassifier oclBoolean = ctx.getOCLEnvironment().getOCLStandardLibrary().getBoolean();
EClassifier listOfStrings = (EClassifier) ctx.getOCLEnvironment().getTypeResolver().resolveCollectionType(CollectionKind.SEQUENCE_LITERAL, oclString);
ctx = (ExecutionContextImpl) ctx.cloneWithVariable(new Variable(ExecutionContext.IMPLICIT_VARIABLE, listOfStrings, null));
final String s = "select(e| Sequence{true}.collect(b|";
// FIXME #computeExecutionContext was no-op
// ctx = (ExecutionContextImpl) ExpressionProposalComputer.computeExecutionContext(s, ctx);
assertEquals(3, ctx.getOCLEnvironment().getVariables().size());
assertEquals(listOfStrings, ctx.getImplicitVariable().getType());
assertEquals(oclString, ctx.getOCLEnvironment().lookup("e").getType());
assertEquals(oclBoolean, ctx.getOCLEnvironment().lookup("b").getType());
}
public final void off_testSetInState5() {
ExecutionContextImpl ctx = new ExecutionContextImpl(new Scope() {});
EClassifier oclString = ctx.getOCLEnvironment().getOCLStandardLibrary().getString();
EClassifier oclBoolean = ctx.getOCLEnvironment().getOCLStandardLibrary().getBoolean();
EClassifier listOfStrings = (EClassifier) ctx.getOCLEnvironment().getTypeResolver().resolveCollectionType(CollectionKind.SEQUENCE_LITERAL, oclString);
ctx = (ExecutionContextImpl) ctx.cloneWithVariable(new Variable(ExecutionContext.IMPLICIT_VARIABLE, listOfStrings, null));
final String s = "let x = 'test' : select(e| Sequence{true}.collect(b|";
// FIXME #computeExecutionContext was no-op
// ctx = (ExecutionContextImpl) ExpressionProposalComputer.computeExecutionContext(s, ctx);
assertEquals(4, ctx.getOCLEnvironment().getVariables().size());
assertEquals(listOfStrings, ctx.getImplicitVariable().getType());
assertEquals(oclString, ctx.getOCLEnvironment().lookup("e").getType());
assertEquals(oclBoolean, ctx.getOCLEnvironment().lookup("b").getType());
assertEquals(oclString, ctx.getOCLEnvironment().lookup("x").getType());
}
}