package pluginbase.config.field; import pluginbase.config.TestBase; import pluginbase.config.examples.*; import pluginbase.config.serializers.CustomSerializer; import pluginbase.config.serializers.CustomSerializer2; import org.junit.Test; import static org.junit.Assert.*; public class FieldMapperTest extends TestBase { @Test public void testRecursiveProtection() { boolean thrown = false; try { FieldMapper.getFieldMap(Recursive.class); } catch (IllegalStateException e) { thrown = e.getMessage().equals("Mapping fields for " + Recursive.class + " would result in infinite recursion due self containment."); } assertTrue(thrown); } @Test public void testBasic() { assertTrue(FieldMapper.getFieldMap(Child.class).hasField("aBoolean")); } @Test public void testParentChild() { FieldMap fieldMap = FieldMapper.getFieldMap(Parent.class); assertTrue(fieldMap.hasField("aChild")); Field childField = fieldMap.getField("aChild"); assertTrue(childField.hasField("aBoolean")); } @Test public void testValueGet() { Child child = new Child(true); Parent parent = new Parent(child); FieldMap fieldMap = FieldMapper.getFieldMap(Parent.class); Field childField = fieldMap.getField("aChild"); Field booleanField = childField.getField("aBoolean"); assertTrue((Boolean) booleanField.getValue(child)); } @Test public void testFieldGetSerializer() { FieldMap fieldMap = FieldMapper.getFieldMap(Comprehensive.class); Field field = fieldMap.getField("custom"); assertNotNull(field); assertEquals(CustomSerializer.class, field.getSerializer().getClass()); field = fieldMap.getField("custom2"); assertNotNull(field); assertEquals(CustomSerializer2.class, field.getSerializer().getClass()); } @Test public void testFieldGetDescription() { FieldMap fieldMap = FieldMapper.getFieldMap(Comprehensive.class); Field field = fieldMap.getField("aInt"); assertNotNull(field); assertEquals(Comprehensive.A_INT_DESCRIPTION, field.getDescription()); } @Test public void testFieldGetComments() { FieldMap fieldMap = FieldMapper.getFieldMap(Comprehensive.class); Field field = fieldMap.getField("aInt"); assertNotNull(field); assertArrayEquals(Comprehensive.A_INT_COMMENTS, field.getComments()); } @Test public void testMapFields() { Comprehensive expected = new Comprehensive(); expected.aInt = 125612; expected.custom.name = "asdhhojao"; expected.simpleList.add(new Simple("asdfaghrhah")); expected.custom2 = new Custom("135r3trgah"); Comprehensive actual = new Comprehensive(); assertFalse(expected.equals(actual)); FieldMapper.mapFields(expected, actual); assertEquals(expected, actual); } }