/* * Copyright 2012-2013 Red Hat, Inc. and/or its affiliates. * * Licensed under the Eclipse Public License version 1.0, available at * http://www.eclipse.org/legal/epl-v10.html */ package org.jboss.forge.test.roaster.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.io.InputStream; import java.util.List; import org.jboss.forge.roaster.Roaster; import org.jboss.forge.roaster.model.source.JavaClassSource; import org.jboss.forge.roaster.model.source.JavaEnumSource; import org.jboss.forge.roaster.model.source.MemberSource; import org.jboss.forge.roaster.model.source.MethodSource; import org.jboss.forge.roaster.model.source.ParameterSource; import org.junit.Before; import org.junit.Test; /** * @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a> */ public class JavaEnumMethodTest { private JavaEnumSource javaEnum; private MethodSource<JavaEnumSource> method; @Before public void reset() { InputStream stream = JavaEnumMethodTest.class.getResourceAsStream("/org/jboss/forge/grammar/java/MockEnum.java"); javaEnum = Roaster.parse(JavaEnumSource.class, stream); javaEnum.addMethod("public URL rewriteURL(String pattern, String replacement) { return null; }"); method = javaEnum.getMethods().get(javaEnum.getMethods().size() - 1); } @Test public void testSetName() throws Exception { assertEquals("rewriteURL", method.getName()); method.setName("doSomething"); assertEquals("doSomething", method.getName()); } @Test public void testSetReturnType() throws Exception { assertEquals("java.net.URL", method.getReturnType().getQualifiedName()); method.setReturnType(Class.class); assertEquals("Class", method.getReturnType().getName()); assertFalse(method.isReturnTypeVoid()); } @Test public void testSetReturnTypeVoid() throws Exception { assertEquals("java.net.URL", method.getReturnType().getQualifiedName()); method.setReturnTypeVoid(); assertTrue(method.isReturnTypeVoid()); } @Test public void testSetConstructor() throws Exception { assertFalse(method.isConstructor()); method.setConstructor(true); assertTrue(method.isConstructor()); assertEquals(javaEnum.getName(), method.getName()); } @Test public void testSetAbstract() throws Exception { method.setAbstract(true); assertTrue(method.isAbstract()); } @Test public void testSetParameters() throws Exception { method.setParameters("final int foo, final String bar"); List<ParameterSource<JavaEnumSource>> parameters = method.getParameters(); assertEquals(2, parameters.size()); assertEquals("foo", parameters.get(0).getName()); assertEquals("bar", parameters.get(1).getName()); } @Test public void testGetParameterType() throws Exception { method.setParameters("final int foo, final String bar"); List<ParameterSource<JavaEnumSource>> parameters = method.getParameters(); assertEquals(2, parameters.size()); assertEquals("int", parameters.get(0).getType().getName()); assertEquals("String", parameters.get(1).getType().getName()); assertFalse(javaEnum.hasMethodSignature(method.getName())); } @Test public void testHasMethodZeroParametersIgnoresMethodWithParameters() throws Exception { assertTrue(javaEnum.hasMethodSignature(method)); assertFalse(javaEnum.hasMethodSignature(method.getName())); } @Test public void testHasMethodZeroParameters() throws Exception { javaEnum.addMethod("public void doSomething(){/*done*/}"); assertTrue(javaEnum.hasMethodSignature("doSomething")); } @Test public void testGetMembers() throws Exception { JavaClassSource javaClass = Roaster.create(JavaClassSource.class).addMethod("public void doSomething();") .getOrigin() .addField("private int id;").getOrigin(); List<MemberSource<JavaClassSource, ?>> members = javaClass.getMembers(); assertEquals(2, members.size()); } }