package com.sequenceiq.cloudbreak.converter;
import static org.junit.Assert.assertFalse;
import java.lang.reflect.Field;
import java.util.List;
import com.google.common.collect.ObjectArrays;
import com.sequenceiq.cloudbreak.TestException;
public class AbstractConverterTest {
public void assertAllFieldsNotNull(Object obj) {
Field[] fields = obtainFields(obj);
for (Field field : fields) {
assertFieldNotNull(obj, field);
}
}
public void assertAllFieldsNotNull(Object obj, List<String> skippedFields) {
Field[] fields = obtainFields(obj);
for (Field field : fields) {
if (!skippedFields.contains(field.getName())) {
assertFieldNotNull(obj, field);
}
}
}
private void assertFieldNotNull(Object obj, Field field) {
try {
field.setAccessible(true);
assertFalse("Field '" + field.getName() + "' is null.", field.get(obj) == null);
} catch (IllegalAccessException | IllegalArgumentException e) {
throw new TestException(e.getMessage());
}
}
private Field[] obtainFields(Object obj) {
Field[] fields = obj.getClass().getDeclaredFields();
Field[] parentFields = obj.getClass().getSuperclass().getDeclaredFields();
return ObjectArrays.concat(fields, parentFields, Field.class);
}
}