package org.simpleflatmapper.reflect.test.meta;
import org.junit.Test;
import org.simpleflatmapper.reflect.ReflectionService;
import org.simpleflatmapper.reflect.meta.ClassMeta;
import org.simpleflatmapper.reflect.meta.DefaultPropertyNameMatcher;
import org.simpleflatmapper.reflect.meta.PropertyMeta;
import org.simpleflatmapper.reflect.setter.NullSetter;
import org.simpleflatmapper.util.ConstantPredicate;
import org.simpleflatmapper.util.Predicate;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class ConstructorPropertyMetaTest {
private Predicate<PropertyMeta<?, ?>> isValidPropertyMeta = ConstantPredicate.truePredicate();
ClassMeta<CObject> classMeta = ReflectionService.newInstance().getClassMeta(CObject.class);
CObject cObject = new CObject("v1", "v2");
@Test
public void testSetterIsNullSetter() throws Exception {
PropertyMeta<CObject, Object> property = classMeta.newPropertyFinder(isValidPropertyMeta).findProperty(new DefaultPropertyNameMatcher("p1", 0, false, false));
assertTrue(property.getSetter() instanceof NullSetter);
}
@Test
public void testGetValueIfGetterAvailable() throws Exception {
PropertyMeta<CObject, Object> property = classMeta.newPropertyFinder(isValidPropertyMeta).findProperty(new DefaultPropertyNameMatcher("p1", 0, false, false));
assertEquals("v1", property.getGetter().get(cObject));
}
@Test
public void testToString() {
PropertyMeta<CObject, Object> property = classMeta.newPropertyFinder(isValidPropertyMeta).findProperty(new DefaultPropertyNameMatcher("p1", 0, false, false));
assertTrue(property.toString().startsWith("ConstructorPropertyMeta"));
}
public static class CObject {
private final String p1;
private final String p2;
public CObject(String p1, String p2) {
this.p1 = p1;
this.p2 = p2;
}
public String getP1() {
return p1;
}
}
}