View Javadoc
1   package org.pojomatic.internal.factory;
2   
3   import static org.testng.Assert.*;
4   
5   import org.testng.annotations.Test;
6   
7   import java.lang.reflect.Field;
8   
9   import org.pojomatic.annotations.Property;
10  
11  public class PojoFactoryTest {
12    @Test
13    public void testFactory() throws Exception {
14      PojoFactory pojoFactory = new PojoFactory(new PojoDescriptor(new PropertyDescriptor(int.class)));
15      Object pojo = pojoFactory.create().with("x", 4).pojo();
16      Field field = pojo.getClass().getDeclaredField("x");
17      field.setAccessible(true);
18      assertEquals(field.get(pojo), (Object) 4);
19      assertTrue(field.isAnnotationPresent(Property.class));
20  
21      assertEquals(pojoFactory.pojomator().doHashCode(pojo), 31 + 4);
22    }
23  
24    @Test
25    public void testParent() throws Exception {
26      PojoDescriptor parent = new PojoDescriptor(new PropertyDescriptor(String.class));
27      PojoClassFactory pojoClassFactory = new PojoClassFactory();
28      pojoClassFactory.generateClass(parent);
29      PojoFactory pojoFactory = new PojoFactory(
30        pojoClassFactory,
31        new PojoDescriptor(
32          "foo",
33          "bar",
34          Access.PUBLIC,
35          parent,
36          new PropertyDescriptor(int.class)));
37      Object pojo = pojoFactory.create().with("x", 4).withParent("x", "foo").pojo();
38      assertEquals(pojoFactory.pojomator().doToString(pojo), "bar{x: {foo}, x: {4}}");
39    }
40  }