/*
* Copyright 2012 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.assertSame;
import static org.junit.Assert.assertTrue;
import java.io.InputStream;
import org.jboss.forge.roaster.Roaster;
import org.jboss.forge.roaster.model.EnumConstant;
import org.jboss.forge.roaster.model.Visibility;
import org.jboss.forge.roaster.model.source.FieldSource;
import org.jboss.forge.roaster.model.source.JavaEnumSource;
import org.jboss.forge.roaster.model.source.MethodSource;
import org.junit.Before;
import org.junit.Test;
/**
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
public class JavaEnumTest
{
private JavaEnumSource javaEnum;
@Before
public void reset()
{
InputStream stream = JavaEnumTest.class.getResourceAsStream("/org/jboss/forge/grammar/java/MockEnum.java");
javaEnum = Roaster.parse(JavaEnumSource.class, stream);
}
@Test
public void testCanParseEnum() throws Exception
{
assertEquals("MockEnum", javaEnum.getName());
}
@Test
@SuppressWarnings("rawtypes")
public void testAddEnumConstant()
{
int i = javaEnum.getEnumConstants().size();
EnumConstant enumConstant = javaEnum.addEnumConstant().setName("BLAH");
assertEquals(i + 1, javaEnum.getEnumConstants().size());
assertEquals("BLAH", enumConstant.getName());
}
@Test
@SuppressWarnings("rawtypes")
public void testAddEnumConstantFromDeclaration()
{
int i = javaEnum.getEnumConstants().size();
EnumConstant enumConstant = javaEnum.addEnumConstant("BLAH");
assertEquals(i + 1, javaEnum.getEnumConstants().size());
assertEquals("BLAH", enumConstant.getName());
}
@Test
public void testAddEnumField()
{
int i = javaEnum.getFields().size();
FieldSource<JavaEnumSource> fld = javaEnum.addField().setName("fld").setType(Integer.TYPE)
.setVisibility(Visibility.PRIVATE);
assertEquals(i + 1, javaEnum.getFields().size());
assertEquals("fld", fld.getName());
assertEquals(Integer.TYPE.getName(), fld.getType().getName());
assertSame(Visibility.PRIVATE, fld.getVisibility());
}
@Test
public void testAddEnumMethod()
{
int i = javaEnum.getMethods().size();
MethodSource<JavaEnumSource> method = javaEnum.addMethod().setName("something").setReturnType(Void.TYPE)
.setVisibility(Visibility.PUBLIC);
assertEquals(i + 1, javaEnum.getMethods().size());
assertEquals("something", method.getName());
assertTrue(method.getParameters().isEmpty());
assertSame(Visibility.PUBLIC, method.getVisibility());
}
@Test
public void testStatic()
{
javaEnum.setStatic(true);
assertTrue(javaEnum.isStatic());
javaEnum.setStatic(false);
assertFalse(javaEnum.isStatic());
}
}