@Test public void testGetFields() { final ClassStructureBuilder<?> classBuilder = ClassBuilder .define("Child", Parent.class) .publicScope() .body() .privateField("childPrivate", int.class).finish() .packageField("childPackage", int.class).finish() .protectedField("childProtected", int.class).finish() .publicField("childPublic", int.class).finish(); final MetaClass child = classBuilder.getClassDefinition(); final ArrayList<String> fields = new ArrayList<String>(); for (MetaField field : child.getFields()) { fields.add(field.getDeclaringClass().getCanonicalName() + "." + field.getName()); } final List<String> expectedFields = Lists.newLinkedList(); expectedFields.add(child.getCanonicalName() + "." + "childPublic"); expectedFields.add(Parent.class.getCanonicalName() + "." + "parentPublic"); Collections.sort(fields); Collections.sort(expectedFields); assertEquals(expectedFields.toString(), fields.toString()); }
@Test public void testGetDeclaredFields() { final ClassStructureBuilder<?> classBuilder = ClassBuilder .define("Child", Parent.class) .publicScope() .body() .privateField("childPrivate", int.class).finish() .packageField("childPackage", int.class).finish() .protectedField("childProtected", int.class).finish() .publicField("childPublic", int.class).finish(); final MetaClass child = classBuilder.getClassDefinition(); final ArrayList<String> fields = new ArrayList<String>(); for (MetaField field : child.getDeclaredFields()) { fields.add(field.getDeclaringClass().getCanonicalName() + "." + field.getName()); } final List<String> expectedFields = Lists.newLinkedList(); expectedFields.add(child.getCanonicalName() + "." + "childPrivate"); expectedFields.add(child.getCanonicalName() + "." + "childPackage"); expectedFields.add(child.getCanonicalName() + "." + "childProtected"); expectedFields.add(child.getCanonicalName() + "." + "childPublic"); Collections.sort(fields); Collections.sort(expectedFields); assertEquals(expectedFields.toString(), fields.toString()); } }
@Test public void testDefineClassWithFieldsOfAllScopes() { final String cls = ClassBuilder .define("org.foo.Foo") .publicScope() .body() .publicField("publicField", int.class) .finish() .protectedField("protectedField", int.class) .finish() .packageField("packagePrivateField", int.class) .finish() .privateField("privateField", int.class) .finish() .toJavaString(); assertEquals("failed to generate class with fields of all scopes", CLASS_WITH_FIELDS_OF_ALL_SCOPES, cls); }
.publicField("outerName", String.class) .finish() .publicMethod(void.class, "setOuterName", Parameter.of(String.class, "outerName"))