package com.blazebit.reflection;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class ExpressionUtilsTest {
@Test
public void testExpressionCaching() {
assertTrue(ExpressionUtils.getExpression(Car.class, "name") == ExpressionUtils
.getExpression(Car.class, "name"));
assertTrue(ExpressionUtils.getExpression(Car.class, "name",
String.class) == ExpressionUtils.getExpression(Car.class,
"name", String.class));
}
@Test
public void testGetExpression() {
assertNotNull(ExpressionUtils.getExpression(Car.class, "name"));
}
@Test
public void testGetExpressionWithValueClass() {
assertNotNull(ExpressionUtils.getExpression(Car.class, "name",
String.class));
}
/***********************
* Set value *
***********************/
@Test
public void testSetValue() {
Car o = new Car(null);
ExpressionUtils.setValue(o, "name", "Test");
assertEquals(o.getName(), "Test");
}
@Test
public void testSetValueWithSourceClass() {
Car o = new Car(null);
ExpressionUtils.setValue(Car.class, o, "name", "Test");
assertEquals(o.getName(), "Test");
}
/***********************
* Normal value access *
***********************/
@Test
public void testGetValueHolder() {
Car o;
o = new Car(null);
assertEquals(o.getName(),
ExpressionUtils.getValueHolder(Car.class, o, "name").getValue());
o = new Car("Test");
assertEquals(o.getName(),
ExpressionUtils.getValueHolder(Car.class, o, "name").getValue());
}
@Test
public void testGetValueHolderWithValueClass() {
Car o;
o = new Car(null);
assertEquals(
o.getName(),
ExpressionUtils.getValueHolder(Car.class, o, "name",
String.class).getValue());
o = new Car("Test");
assertEquals(
o.getName(),
ExpressionUtils.getValueHolder(Car.class, o, "name",
String.class).getValue());
}
@Test
public void testGetValueWithSourceClass() {
Car o;
o = new Car(null);
assertEquals(o.getName(),
ExpressionUtils.getValue(Car.class, o, "name"));
o = new Car("Test");
assertEquals(o.getName(),
ExpressionUtils.getValue(Car.class, o, "name"));
}
@Test
public void testGetValueWithSourceClassAndValueClass() {
Car o;
o = new Car(null);
assertEquals(o.getName(),
ExpressionUtils.getValue(Car.class, o, "name", String.class));
o = new Car("Test");
assertEquals(o.getName(),
ExpressionUtils.getValue(Car.class, o, "name", String.class));
}
@Test
public void testGetValue() {
Car o;
o = new Car(null);
assertEquals(o.getName(), ExpressionUtils.getValue(o, "name"));
o = new Car("Test");
assertEquals(o.getName(), ExpressionUtils.getValue(o, "name"));
}
@Test
public void testGetValueWithValueClass() {
Car o;
o = new Car(null);
assertEquals(o.getName(),
ExpressionUtils.getValue(o, "name", String.class));
o = new Car("Test");
assertEquals(o.getName(),
ExpressionUtils.getValue(o, "name", String.class));
}
/*****************************
* Null safe value access *
*****************************/
@Test
public void testGetNullSafeValueHolder() {
Car o;
o = new Car(null);
assertEquals(null,
ExpressionUtils.getValueHolder(Car.class, o, "vendor.name")
.getNullSafeValue());
o = new Car("Test", "Test");
assertEquals(o.getVendor().getName(),
ExpressionUtils.getValueHolder(Car.class, o, "vendor.name")
.getNullSafeValue());
}
@Test
public void testGetNullSafeValueHolderWithValueClass() {
Car o;
o = new Car(null);
assertEquals(
null,
ExpressionUtils.getValueHolder(Car.class, o, "vendor.name",
String.class).getNullSafeValue());
o = new Car("Test", "Test");
assertEquals(
o.getVendor().getName(),
ExpressionUtils.getValueHolder(Car.class, o, "vendor.name",
String.class).getNullSafeValue());
}
@Test
public void testGetNullSafeValueWithSourceClass() {
Car o;
o = new Car(null);
assertEquals(null,
ExpressionUtils.getNullSafeValue(Car.class, o, "vendor.name"));
o = new Car("Test", "Test");
assertEquals(o.getVendor().getName(),
ExpressionUtils.getNullSafeValue(Car.class, o, "vendor.name"));
}
@Test
public void testGetNullSafeValueWithSourceClassAndValueClass() {
Car o;
o = new Car(null);
assertEquals(null, ExpressionUtils.getNullSafeValue(Car.class, o,
"vendor.name", String.class));
o = new Car("Test", "Test");
assertEquals(o.getVendor().getName(), ExpressionUtils.getNullSafeValue(
Car.class, o, "vendor.name", String.class));
}
@Test
public void testGetNullSafeValue() {
Car o;
o = new Car(null);
assertEquals(null, ExpressionUtils.getNullSafeValue(o, "vendor.name"));
o = new Car("Test", "Test");
assertEquals(o.getVendor().getName(),
ExpressionUtils.getNullSafeValue(o, "vendor.name"));
}
@Test
public void testGetNullSafeValueWithValueClass() {
Car o;
o = new Car(null);
assertEquals(null, ExpressionUtils.getNullSafeValue(o, "vendor.name",
String.class));
o = new Car("Test", "Test");
assertEquals(o.getVendor().getName(), ExpressionUtils.getNullSafeValue(
o, "vendor.name", String.class));
}
public class Vendor {
String name;
public Vendor(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Car {
String name;
Vendor vendor;
public Car() {
}
public Car(String name) {
this.name = name;
}
public Car(String name, String vendorName) {
this.name = name;
this.vendor = new Vendor(vendorName);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Vendor getVendor() {
return vendor;
}
public void setVendor(Vendor vendor) {
this.vendor = vendor;
}
}
}