package com.arondor.common.reflection.gwt.server;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
import com.arondor.common.reflection.gwt.server.samples.TestClass;
import com.arondor.common.reflection.gwt.server.samples.TestClassTer;
import com.arondor.common.reflection.gwt.server.samples.TestEnum;
import com.arondor.common.reflection.gwt.server.samples.TestInterface;
import com.arondor.common.reflection.model.java.AccessibleClass;
import com.arondor.common.reflection.model.java.AccessibleField;
public class TestDefaultGWTReflectionService
{
private static final Logger LOG = Logger.getLogger(TestDefaultGWTReflectionService.class);
private DefaultGWTReflectionService gwtReflectionService;
@Before
public void init()
{
gwtReflectionService = new DefaultGWTReflectionService();
}
@Test
public void testImplementingClasses()
{
Collection<AccessibleClass> result = gwtReflectionService.getImplementingAccessibleClasses(TestInterface.class
.getName());
assertEquals(2, result.size());
assertTrue(result.contains(gwtReflectionService.getAccessibleClass(TestClass.class.getName())));
assertTrue(result.contains(gwtReflectionService.getAccessibleClass(TestClassTer.class.getName())));
Collection<AccessibleClass> allResults = gwtReflectionService
.getImplementingAccessibleClasses(java.lang.Object.class.getName());
LOG.info("All classes parsed : " + allResults.size());
}
@Test
public void testAccessibleField()
{
AccessibleClass testClass = gwtReflectionService.getAccessibleClass(TestClass.class.getName());
Map<String, AccessibleField> fieldMap = testClass.getAccessibleFields();
assertNotNull(fieldMap);
// assertEquals(5, fieldMap.size());
AccessibleField stringField = fieldMap.get("aStringProperty");
assertNotNull(stringField);
assertEquals("This is a string property and it is mandatory", stringField.getDescription());
assertTrue(stringField.isMandatory());
assertTrue(fieldMap.containsKey("aLongProperty"));
assertTrue(fieldMap.containsKey("subClass"));
assertTrue(fieldMap.containsKey("aBooleanProperty"));
assertTrue(fieldMap.containsKey("anEnumProperty"));
assertTrue(fieldMap.get("anEnumProperty").isEnumProperty());
//
Map<String, List<String>> enumMap = testClass.getAccessibleEnums();
assertNotNull(enumMap);
assertEquals(1, enumMap.size());
List<String> testEnumValues = enumMap.get(TestEnum.class.getName());
assertEquals(2, testEnumValues.size());
assertTrue(testEnumValues.contains(TestEnum.VALUE1.name()));
assertTrue(testEnumValues.contains(TestEnum.VALUE2.name()));
}
}