1   package com.lexicalscope.fluentreflection.endtoend;
2   
3   /*
4    * Copyright 2011 Tim Wood
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License. 
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  }