1 package com.lexicalscope.fluentreflection.endtoend;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import static com.lexicalscope.fluentreflection.FluentReflection.type;
20 import static com.lexicalscope.fluentreflection.ReflectionMatchers.*;
21 import static org.hamcrest.MatcherAssert.assertThat;
22 import static org.hamcrest.Matchers.equalTo;
23
24 import java.util.List;
25
26 import org.junit.Test;
27
28 import com.lexicalscope.fluentreflection.FluentClass;
29
30 public class TestReflectionOnTypeHierarchy {
31 @Test
32 public void topLevelClassImplementsNoInterfaces() {
33 assertThat(type(ExampleClass.class), hasNoInterfaces());
34 }
35
36 @Test
37 public void topLevelClassHasNoSuperclasses() {
38 assertThat(type(ExampleClass.class), hasNoInterfaces());
39 }
40
41 @Test
42 public void topLevelInterfaceHasNoInterfaces() {
43 assertThat(type(ExampleInterface.class), hasNoInterfaces());
44 }
45
46 @Test
47 public void ancestorInterfacesAreFound() {
48 assertThat(type(ExampleSuperclass.class), hasInterface(ExampleSuperinterface.class));
49 }
50
51 @Test
52 public void superClassesReturnedInOrder() {
53 final List<FluentClass<?>> expectedSuperclasses =
54 ListBuilder.<FluentClass<?>>list(type(ExampleSubclass.class)).add(type(ExampleSuperclass.class)).$();
55
56 assertThat(type(ExampleSubsubclass.class).superclasses(), equalTo(expectedSuperclasses));
57 }
58 }