/*******************************************************************************
* Copyright (c) 2006-2013
* Software Technology Group, Dresden University of Technology
* DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026
*
* 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:
* Software Technology Group - TU Dresden, Germany;
* DevBoost GmbH - Berlin, Germany
* - initial API and implementation
******************************************************************************/
package org.emftext.language.java.test.resolving;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.List;
import org.emftext.language.java.members.ClassMethod;
import org.emftext.language.java.members.Field;
import org.emftext.language.java.members.Member;
import org.emftext.language.java.statements.Block;
import org.emftext.language.java.statements.ExpressionStatement;
import org.emftext.language.java.statements.LocalVariableStatement;
import org.emftext.language.java.statements.Statement;
import org.emftext.language.java.variables.LocalVariable;
import org.junit.Test;
public class VariableReferenceResolverTest extends AbstractResolverTestCase {
@Test
public void testReferencing() throws Exception {
String typename = "VariableReferencing";
org.emftext.language.java.classifiers.Class clazz = assertParsesToClass(typename);
assertNotNull(clazz);
List<Member> members = clazz.getMembers();
assertEquals(2, members.size());
Field field = assertIsField(members.get(0), "var");
ClassMethod method = assertIsMethod(members.get(1), "method");
List<? extends Statement> statements = method.getStatements();
assertEquals(6, statements.size());
Statement statement1 = statements.get(0);
assertType(statement1, ExpressionStatement.class);
assertIsReferenceToField(statement1, field);
Statement statement2 = statements.get(1);
assertType(statement2, LocalVariableStatement.class);
LocalVariable localVar = ((LocalVariableStatement) statement2).getVariable();
Statement statement3 = statements.get(2);
assertIsReferenceToLocalVariable(statement3, localVar);
Statement statement4 = statements.get(3);
assertType(statement4, Block.class);
}
}