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 org.hamcrest.Matchers;
25 import org.junit.Test;
26
27 import com.lexicalscope.fluentreflection.FluentMethod;
28
29 public class TestReflectionOnInterface {
30 @Test public void classUnderReflectionReturnsClassUnderReflection() {
31 assertThat(
32 type(ExampleInterface.class).classUnderReflection(),
33 equalTo(ExampleInterface.class));
34 }
35
36 @Test public void methodsCanBeSelectedByPrefix() {
37 assertThat(
38 type(ExampleInterface.class).methods(hasNameStartingWith("get")),
39 Matchers.<FluentMethod>hasItem(hasName("getPropertyOne")));
40 }
41
42 @Test public void methodsCanBeSelectedBySuffix() {
43 assertThat(
44 type(ExampleInterface.class).methods(hasNameEndingWith("One")),
45 Matchers.<FluentMethod>hasItem(hasName("getPropertyOne")));
46 }
47
48 @Test public void methodsCanBeSelectedByRegularExpression() {
49 assertThat(
50 type(ExampleInterface.class).methods(hasNameMatching(".*Property.*")),
51 Matchers.<FluentMethod>hasItem(hasName("getPropertyOne")));
52 }
53
54 @Test public void methodsWithNoArgumentsCanBeSelected() {
55 assertThat(
56 type(ExampleInterface.class).methods(
57 hasArguments()),
58 Matchers.<FluentMethod>hasItem(hasName("getPropertyOne")));
59 }
60
61 @Test public void methodCanBeSelectedByArgument() {
62 assertThat(
63 type(ExampleInterface.class).methods(hasArguments(String.class)),
64 Matchers.<FluentMethod>hasItem(hasName("setPropertyOne")));
65 }
66 }