/******************************************************************************* * Copyright (c) 2012 VMware, Inc. * 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: * VMware, Inc. - initial API and implementation *******************************************************************************/ package org.springframework.ide.eclipse.quickfix.tests; import junit.framework.TestCase; import org.eclipse.jdt.core.dom.ClassInstanceCreation; import org.eclipse.jdt.core.dom.MethodInvocation; import org.eclipse.jdt.core.dom.SimpleType; import org.eclipse.jdt.core.dom.Type; import org.eclipse.jdt.internal.ui.text.correction.ASTResolving; import org.springframework.ide.eclipse.quickfix.QuickfixUtils; /** * Tests reflections used in quickfix * @author Terry Denney * @author Leo Dos Santos * @author Christian Dupuis */ @SuppressWarnings("restriction") public class ReflectionTests extends TestCase { private void testCorrectConstructorInvocation(String className, String[] argTypes) { ClassInstanceCreation invocation = QuickfixUtils.getMockConstructorInvocation(className, argTypes); Type type = invocation.getType(); assertTrue("Expects invocation type to be a SimpleType", type instanceof SimpleType); SimpleType simpleType = (SimpleType) type; assertEquals("Expects invocation class name = " + className, className, simpleType.getName() .getFullyQualifiedName()); assertEquals("Expects number of arguments = " + argTypes.length, argTypes.length, invocation.arguments().size()); } private void testCorrectMethodInvocation(String methodName, String returnType, String[] argTypes, boolean isStatic) { MethodInvocation invocation = QuickfixUtils.getMockMethodInvocation(methodName, argTypes, returnType, isStatic); assertEquals("Expects method name = " + methodName, methodName, invocation.getName().getIdentifier()); assertEquals("Expects number of arguments = " + argTypes.length, argTypes.length, invocation.arguments().size()); assertEquals("Expects static = " + isStatic, isStatic, ASTResolving.isInStaticContext(invocation)); } public void testGetMockConstructorInvocation() { String className = "com.test.Account"; String[] argTypes = new String[0]; testCorrectConstructorInvocation(className, argTypes); argTypes = new String[] { "Object" }; testCorrectConstructorInvocation(className, argTypes); } public void testGetMockMethodInvocation() { String methodName = "getBalance"; String returnType = "int"; String[] argTypes = new String[0]; testCorrectMethodInvocation(methodName, returnType, argTypes, true); testCorrectMethodInvocation(methodName, returnType, argTypes, false); argTypes = new String[] { "Object" }; testCorrectMethodInvocation(methodName, returnType, argTypes, true); testCorrectMethodInvocation(methodName, returnType, argTypes, false); } }