package joist.sourcegen; import joist.util.Join; import org.junit.Assert; import org.junit.Test; public class GInnerClassTest { @Test public void testOneInnerClass() { GClass gc = new GClass("Foo"); GClass bar = gc.getInnerClass("Bar"); bar.getField("id").type(Integer.class); Assert.assertEquals(Join.lines(// "public class Foo {", "", " public static class Bar {", " private Integer id;", " }", "", "}", ""), gc.toCode()); } @Test public void testOneNonStaticInnerClass() { GClass gc = new GClass("Foo"); GClass bar = gc.getInnerClass("Bar").notStatic(); bar.getField("id").type(Integer.class); Assert.assertEquals(Join.lines(// "public class Foo {", "", " public class Bar {", " private Integer id;", " }", "", "}", ""), gc.toCode()); } @Test public void testOneTwoInnerClasses() { GClass gc = new GClass("Foo"); GClass bar = gc.getInnerClass("Bar"); bar.getField("id").type(int.class); GClass zaz = gc.getInnerClass("Zaz"); zaz.getField("id").type(int.class); Assert.assertEquals(Join.lines( "public class Foo {", "", " public static class Bar {", " private int id;", " }", "", " public static class Zaz {", " private int id;", " }", "", "}", ""), gc.toCode()); } @Test public void testOneInnerClassWithImports() { GClass gc = new GClass("Foo"); GClass bar = gc.getInnerClass("Bar"); bar.addImports("other.package.Zaz"); bar.getField("id").type(Integer.class); Assert.assertEquals(Join.lines(// "import other.package.Zaz;", "", "public class Foo {", "", " public static class Bar {", " private Integer id;", " }", "", "}", ""), gc.toCode()); } @Test public void testOneInnerClassWithImportsInSamePackage() { GClass gc = new GClass("foo.Foo"); GClass bar = gc.getInnerClass("Bar"); bar.addImports("foo.Zaz"); bar.getField("id").type(Integer.class); Assert.assertEquals(Join.lines(// "package foo;", "", "public class Foo {", "", " public static class Bar {", " private Integer id;", " }", "", "}", ""), gc.toCode()); } }