package org.beanfabrics.support;
import static junit.framework.Assert.assertEquals;
import java.lang.reflect.Field;
import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.util.List;
import org.junit.Test;
public class SupportUtil_5_Test extends SupportUtilTestBase {
private static interface X {
int x();
}
private static class A {
@SuppressWarnings("unused")
int a;
}
private static class B extends A {
@SuppressWarnings("unused")
int b;
}
private abstract static class C extends B implements X {
@SuppressWarnings("unused")
int c;
}
@Test
public void testSortMembers_AlreadySorted() {
// Given:
Field a = field(A.class, "a");
Field b = field(B.class, "b");
Field c = field(C.class, "c");
Method x = method(X.class, "x");
List<Member> members = listOf(x, a, b, c);
// When:
List<Member> act = SupportUtil.sortMembers(members);
// Then:
assertEquals("x is first", x, act.get(0));
assertEquals("a is second", a, act.get(1));
assertEquals("b is third", b, act.get(2));
assertEquals("c is fourth", c, act.get(3));
}
@Test
public void testSortMembers_WrongOrder() {
// Given:
Field a = field(A.class, "a");
Field b = field(B.class, "b");
Field c = field(C.class, "c");
Method x = method(X.class, "x");
List<Member> members = listOf(c, b, a, x);
// When:
List<Member> act = SupportUtil.sortMembers(members);
// Then:
assertEquals("x is first", x, act.get(0));
assertEquals("a is second", a, act.get(1));
assertEquals("b is third", b, act.get(2));
assertEquals("c is fourth", c, act.get(3));
}
}