/** * */ package org.minnal.autopojo.resolver; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import java.beans.PropertyDescriptor; import java.util.Map; import org.minnal.autopojo.AttributeMetaData; import org.minnal.autopojo.CollectionModel; import org.minnal.autopojo.Configuration; import org.minnal.autopojo.GenerationStrategy; import org.minnal.autopojo.SimpleObject; import org.minnal.autopojo.util.PropertyUtil; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** * @author ganeshs * */ public class MapResolverTest { private MapResolver resolver; private Configuration configuration; @BeforeMethod public void setup() { configuration = new Configuration(); resolver = new MapResolver(); resolver.init(new GenerationStrategy(configuration), configuration); } @Test public void shouldGenerateNonGenericMap() { generateAndCheckMap("nonGenericMap", Object.class, Object.class); } @Test public void shouldGenerateGenericStringObjectMap() { generateAndCheckMap("genericStringObjectMap", String.class, SimpleObject.class); } @Test public void shouldGenerateGenericObjectObjectMap() { generateAndCheckMap("genericObjectObjectMap", SimpleObject.class, SimpleObject.class); } @Test public void shouldGenerateSpecifiedNoOfElements() { configuration.setNoOfElementsInCollection(10); resolver = new MapResolver(); resolver.init(new GenerationStrategy(configuration), configuration); generateAndCheckMap("nonGenericMap", Object.class, Object.class, 10); } private void generateAndCheckMap(String propertyName, Class<?> keyClass, Class<?> valueClass) { generateAndCheckMap(propertyName, keyClass, valueClass, configuration.getNoOfElementsInCollection()); } private void generateAndCheckMap(String propertyName, Class<?> keyClass, Class<?> valueClass, int count) { CollectionModel model = new CollectionModel(); PropertyDescriptor descriptor = PropertyUtil.getDescriptor(CollectionModel.class, propertyName); resolver.resolve(model, new AttributeMetaData(descriptor), 5); Map<?, ?> map = null; try { map = (Map<?, ?>) descriptor.getReadMethod().invoke(model); } catch (Exception e) { throw new RuntimeException(e); } assertEquals(map.size(), count); assertTrue(map.entrySet().iterator().next().getKey().getClass().equals(keyClass)); assertTrue(map.entrySet().iterator().next().getValue().getClass().equals(valueClass)); } }