/******************************************************************************* * Copyright (c) 2005, 2007 committers of openArchitectureWare 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: * committers of openArchitectureWare - initial API and implementation *******************************************************************************/ package org.eclipse.xtend.expression.codeassist; import junit.framework.TestCase; import org.eclipse.internal.xtend.expression.codeassist.ExpressionProposalComputer; import org.eclipse.xtend.expression.ExecutionContext; import org.eclipse.xtend.expression.ExecutionContextImpl; import org.eclipse.xtend.expression.Variable; public class ExpressionProposalComputerTest extends TestCase { @Override protected void setUp() throws Exception { super.setUp(); } public final void testComputePrefixAndTargetExpression1() { final String[] s = ExpressionProposalComputer.computePrefixAndTargetExpression("test"); assertEquals("test", s[0]); assertNull(s[1]); } public final void testComputePrefixAndTargetExpression2() { final String[] s = ExpressionProposalComputer.computePrefixAndTargetExpression("test.th"); assertEquals("th", s[0]); assertEquals("test", s[1]); } public final void testComputePrefixAndTargetExpression3() { final String[] s = ExpressionProposalComputer.computePrefixAndTargetExpression("test.the.computer.now"); assertEquals("now", s[0]); assertEquals("test.the.computer", s[1]); } public final void testComputePrefixAndTargetExpression4() { final String[] s = ExpressionProposalComputer.computePrefixAndTargetExpression("test(true,\nfalse()).next"); assertEquals("next", s[0]); assertEquals("test(true,\nfalse())", s[1]); } public final void testComputePrefixAndTargetExpression5() { final String[] s = ExpressionProposalComputer.computePrefixAndTargetExpression("bdlfsdfows test. bla({})."); assertEquals("", s[0]); assertEquals("test. bla({})", s[1]); } public final void testComputePrefixAndTargetExpression6() { final String[] s = ExpressionProposalComputer .computePrefixAndTargetExpression("test(true, {false, 'hallo',stuff."); assertEquals("", s[0]); assertEquals("stuff", s[1]); } public final void testComputePrefixAndTargetExpression7() { final String[] s = ExpressionProposalComputer.computePrefixAndTargetExpression("rfq.*test"); assertEquals("test", s[0]); assertEquals(null, s[1]); } public final void testComputePrefixAndTargetExpression8() { final String[] s = ExpressionProposalComputer.computePrefixAndTargetExpression("\\x"); assertEquals("x", s[0]); assertEquals(null, s[1]); } public final void testComputePrefixAndTargetExpression9() { final String[] s = ExpressionProposalComputer.computePrefixAndTargetExpression("FOREACH (Set[EPackage])e.all"); assertEquals("all", s[0]); assertEquals("e", s[1]); } public final void testComputePrefixAndTargetExpression10() { final String[] s = ExpressionProposalComputer.computePrefixAndTargetExpression("TEST "); assertEquals("", s[0]); assertEquals(null, s[1]); } public final void testSetInState() { ExecutionContextImpl ctx = new ExecutionContextImpl(); ctx = (ExecutionContextImpl) ctx.cloneWithVariable(new Variable("v", ctx.getListType(ctx.getStringType()))); final String s = "v.select(e| true"; ctx = (ExecutionContextImpl) ExpressionProposalComputer.computeExecutionContext(s, ctx); assertEquals(2, ctx.getVisibleVariables().size()); assertEquals(ctx.getListType(ctx.getStringType()), ctx.getVariable("v").getValue()); assertEquals(ctx.getStringType(), ctx.getVariable("e").getValue()); } public final void testSetInState1() { ExecutionContextImpl ctx = new ExecutionContextImpl(); ctx = (ExecutionContextImpl) ctx.cloneWithVariable(new Variable("v", ctx.getListType(ctx.getStringType()))); final String s = "v.select(e| true)"; ctx = (ExecutionContextImpl) ExpressionProposalComputer.computeExecutionContext(s, ctx); assertEquals(1, ctx.getVisibleVariables().size()); assertEquals(ctx.getListType(ctx.getStringType()), ctx.getVariable("v").getValue()); } public final void testSetInState2() { ExecutionContextImpl ctx = new ExecutionContextImpl(); ctx = (ExecutionContextImpl) ctx.cloneWithVariable(new Variable("v", ctx.getListType(ctx.getStringType()))); final String s = "v.select(e| ((List[Boolean]){true}).collect(e|"; ctx = (ExecutionContextImpl) ExpressionProposalComputer.computeExecutionContext(s, ctx); assertEquals(2, ctx.getVisibleVariables().size()); assertEquals(ctx.getListType(ctx.getStringType()), ctx.getVariable("v").getValue()); assertEquals(ctx.getBooleanType(), ctx.getVariable("e").getValue()); } public final void testSetInState3() { ExecutionContextImpl ctx = new ExecutionContextImpl(); ctx = (ExecutionContextImpl) ctx.cloneWithVariable(new Variable("v", ctx.getListType(ctx.getStringType()))); final String s = "v.select(e| ((List[Boolean]){true}).collect(b|"; ctx = (ExecutionContextImpl) ExpressionProposalComputer.computeExecutionContext(s, ctx); assertEquals(3, ctx.getVisibleVariables().size()); assertEquals(ctx.getListType(ctx.getStringType()), ctx.getVariable("v").getValue()); assertEquals(ctx.getStringType(), ctx.getVariable("e").getValue()); assertEquals(ctx.getBooleanType(), ctx.getVariable("b").getValue()); } public final void testSetInState4() { ExecutionContextImpl ctx = new ExecutionContextImpl(); ctx = (ExecutionContextImpl) ctx.cloneWithVariable(new Variable(ExecutionContext.IMPLICIT_VARIABLE, ctx .getListType(ctx.getStringType()))); final String s = "select(e| ((List[Boolean]){true}).collect(b|"; ctx = (ExecutionContextImpl) ExpressionProposalComputer.computeExecutionContext(s, ctx); assertEquals(3, ctx.getVisibleVariables().size()); assertEquals(ctx.getListType(ctx.getStringType()), ctx.getVariable(ExecutionContext.IMPLICIT_VARIABLE) .getValue()); assertEquals(ctx.getStringType(), ctx.getVariable("e").getValue()); assertEquals(ctx.getBooleanType(), ctx.getVariable("b").getValue()); } public final void testSetInState5() { ExecutionContextImpl ctx = new ExecutionContextImpl(); ctx = (ExecutionContextImpl) ctx.cloneWithVariable(new Variable(ExecutionContext.IMPLICIT_VARIABLE, ctx .getListType(ctx.getStringType()))); final String s = "let x = 'test' : select(e| ((List[Boolean]){true}).collect(b|"; ctx = (ExecutionContextImpl) ExpressionProposalComputer.computeExecutionContext(s, ctx); assertEquals(4, ctx.getVisibleVariables().size()); assertEquals(ctx.getListType(ctx.getStringType()), ctx.getVariable(ExecutionContext.IMPLICIT_VARIABLE) .getValue()); assertEquals(ctx.getStringType(), ctx.getVariable("e").getValue()); assertEquals(ctx.getBooleanType(), ctx.getVariable("b").getValue()); assertEquals(ctx.getStringType(), ctx.getVariable("x").getValue()); } }