/** * Copyright 2006-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.mybatis.generator.api.dom.java; import org.junit.Test; import static org.junit.Assert.*; public class InnerClassTest { private static final String LF = System.getProperty("line.separator"); @Test public void testConstructor() { InnerClass clazz = new InnerClass("com.foo.UserClass"); assertNotNull(clazz); assertNull(clazz.getSuperClass()); assertNotNull(clazz.getType()); assertEquals("com.foo.UserClass", clazz.getType().getFullyQualifiedName()); assertNotNull(clazz.getFields()); assertEquals(0, clazz.getFields().size()); assertNotNull(clazz.getInnerClasses()); assertEquals(0, clazz.getInnerClasses().size()); assertNotNull(clazz.getInnerEnums()); assertEquals(0, clazz.getInnerEnums().size()); assertNotNull(clazz.getTypeParameters()); assertEquals(0, clazz.getTypeParameters().size()); assertNotNull(clazz.getSuperInterfaceTypes()); assertEquals(0, clazz.getSuperInterfaceTypes().size()); assertNotNull(clazz.getMethods()); assertEquals(0, clazz.getMethods().size()); assertNotNull(clazz.getInitializationBlocks()); assertEquals(0, clazz.getInitializationBlocks().size()); assertFalse(clazz.isAbstract()); } @Test public void testAddFields() { InnerClass clazz = new InnerClass("com.foo.UserClass"); assertEquals(0, clazz.getFields().size()); clazz.addField(new Field("test", FullyQualifiedJavaType.getStringInstance())); assertEquals(1, clazz.getFields().size()); clazz.addField(new Field("test2", FullyQualifiedJavaType.getStringInstance())); assertEquals(2, clazz.getFields().size()); } @Test public void testSetSuperClass() { InnerClass clazz = new InnerClass("com.foo.UserClass"); assertNull(clazz.getSuperClass()); clazz.setSuperClass("com.hoge.SuperClass"); assertNotNull(clazz.getSuperClass()); assertEquals("com.hoge.SuperClass", clazz.getSuperClass().getFullyQualifiedName()); } @Test public void testAddInnerClasses() { InnerClass clazz = new InnerClass("com.foo.UserClass"); assertEquals(0, clazz.getInnerClasses().size()); clazz.addInnerClass(new InnerClass("InnerUserClass")); assertEquals(1, clazz.getInnerClasses().size()); clazz.addInnerClass(new InnerClass("InnerUserClass2")); assertEquals(2, clazz.getInnerClasses().size()); } @Test public void testAddInnerEnum() { InnerClass clazz = new InnerClass("com.foo.UserClass"); assertEquals(0, clazz.getInnerEnums().size()); clazz.addInnerEnum(new InnerEnum(new FullyQualifiedJavaType("TestEnum"))); assertEquals(1, clazz.getInnerEnums().size()); clazz.addInnerEnum(new InnerEnum(new FullyQualifiedJavaType("TestEnum2"))); assertEquals(2, clazz.getInnerEnums().size()); } @Test public void testAddTypeParameter() { InnerClass clazz = new InnerClass("com.foo.UserClass"); assertEquals(0, clazz.getTypeParameters().size()); clazz.addTypeParameter(new TypeParameter("T")); assertEquals(1, clazz.getTypeParameters().size()); clazz.addTypeParameter(new TypeParameter("U")); assertEquals(2, clazz.getTypeParameters().size()); } @Test public void testAddInitializationBlock() { InnerClass clazz = new InnerClass("com.foo.UserClass"); assertEquals(0, clazz.getInitializationBlocks().size()); clazz.addInitializationBlock(new InitializationBlock(false)); assertEquals(1, clazz.getInitializationBlocks().size()); clazz.addInitializationBlock(new InitializationBlock(true)); assertEquals(2, clazz.getInitializationBlocks().size()); } @Test public void testAddSuperInterface() { InnerClass clazz = new InnerClass("com.foo.UserClass"); assertEquals(0, clazz.getSuperInterfaceTypes().size()); clazz.addSuperInterface(new FullyQualifiedJavaType("com.hoge.UserInterface")); assertEquals(1, clazz.getSuperInterfaceTypes().size()); clazz.addSuperInterface(new FullyQualifiedJavaType("com.hoge.UserInterface2")); assertEquals(2, clazz.getSuperInterfaceTypes().size()); } @Test public void testAddMethod() { InnerClass clazz = new InnerClass("com.foo.UserClass"); assertEquals(0, clazz.getMethods().size()); clazz.addMethod(new Method("method1")); assertEquals(1, clazz.getMethods().size()); clazz.addMethod(new Method("method2")); assertEquals(2, clazz.getMethods().size()); } @Test public void testSetAbstract() { InnerClass clazz = new InnerClass("com.foo.UserClass"); assertFalse(clazz.isAbstract()); clazz.setAbstract(true); assertTrue(clazz.isAbstract()); } @Test public void testGetFormattedContent() { InnerClass clazz = new InnerClass("com.foo.UserClass"); clazz.addField(new Field("test", FullyQualifiedJavaType.getStringInstance())); clazz.setSuperClass("com.hoge.SuperClass"); clazz.addInnerClass(new InnerClass("InnerUserClass")); clazz.addInnerEnum(new InnerEnum(new FullyQualifiedJavaType("TestEnum"))); clazz.addTypeParameter(new TypeParameter("T")); clazz.addTypeParameter(new TypeParameter("U")); clazz.addInitializationBlock(new InitializationBlock(false)); clazz.addSuperInterface(new FullyQualifiedJavaType("com.hoge.UserInterface")); clazz.addMethod(new Method("method1")); clazz.setAbstract(true); String excepted = "abstract class UserClass<T, U> extends SuperClass implements UserInterface {" + LF + " String test;" + LF + "" + LF + " {" + LF + " }" + LF + "" + LF + " abstract void method1();" + LF + "" + LF + " class InnerUserClass {" + LF + " }" + LF + "" + LF + " enum TestEnum {" + LF + " }" + LF + "}"; assertEquals(excepted, clazz.getFormattedContent(0, null)); } }