package rtt.core.tests.junit.utils;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.lang.reflect.Member;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Set;
import rtt.annotations.processing.ValueMember;
public class TestAnnotationUtils {
public static void countMembers(Set<ValueMember<?>> members,
int compareCount, int infoCount) {
assertNotNull("Members was null.", members);
assertFalse("Members was empty.", members.size() == 0);
int realInfoCount = 0;
for (ValueMember<?> valueMember : members) {
if (valueMember.isInformational()) {
realInfoCount++;
}
}
assertEquals(infoCount, realInfoCount);
assertEquals(compareCount, members.size() - infoCount);
}
public static void checkOrder(Set<ValueMember<?>> valueMembers, String... signatures) {
assertEquals(signatures.length, valueMembers.size());
int index = 0;
Iterator<ValueMember<?>> iterator = valueMembers.iterator();
while (iterator.hasNext()) {
assertEquals(signatures[index], iterator.next().getSignature());
index++;
}
}
public static void executeMembers(Set<ValueMember<?>> members, Class<?> classType) {
try {
Object object = classType.newInstance();
for (ValueMember<?> member : members) {
member.getResult(object);
}
} catch (Exception e) {
fail(e.getMessage());
}
}
public static void checkMember(
Set<ValueMember<?>> members,
Class<?> fromClass,
String... memberNames) {
Arrays.sort(memberNames);
boolean checkNames = memberNames.length > 0;
if (checkNames) {
for (String memberName : memberNames) {
boolean memberFound = false;
for (ValueMember<?> valueMember : members) {
if (valueMember.getMember().getName().equals(memberName)) {
Member member = valueMember.getMember();
if (member.getDeclaringClass().equals(fromClass)) {
memberFound = true;
break;
}
}
}
if (!memberFound) {
String fromClassName = fromClass.getSimpleName();
fail("The member '" + memberName + "' from '" + fromClassName + "' could not be found.");
}
}
} else {
for (ValueMember<?> valueMember : members) {
Member member = valueMember.getMember();
if (!member.getDeclaringClass().equals(fromClass)) {
String fromClassName = fromClass.getSimpleName();
String declaringClassName = member.getDeclaringClass().getSimpleName();
String memberName = member.getClass().getSimpleName() + " " + member.getName();
fail("The member '" + memberName + "' was declared by " + declaringClassName + " and not by " + fromClassName);
}
}
}
}
}