11package com .tngtech .archunit .core .domain ;
22
3+ import java .io .File ;
4+
35import org .junit .Test ;
46
57import static com .tngtech .archunit .core .domain .TestUtils .importMethod ;
@@ -9,27 +11,52 @@ public class JavaMethodTest {
911
1012 @ Test
1113 public void isOverriding_returns_true_for_implemented_interface_method () {
12- assertThat (importMethod (SomeClass .class , "doSomething" ).isOverriding ()).isTrue ();
14+ assertThat (importMethod (SomeClass .class , "doSomething" ).isOverriding ())
15+ .as ("method is detected as overriding" ).isTrue ();
1316 }
1417
1518 @ Test
1619 public void isOverriding_returns_false_for_interface_method () {
17- assertThat (importMethod (SomeInterface .class , "doSomething" ).isOverriding ()).isFalse ();
20+ assertThat (importMethod (SomeInterface .class , "doSomething" ).isOverriding ())
21+ .as ("method is detected as overriding" ).isFalse ();
1822 }
1923
2024 @ Test
2125 public void isOverriding_returns_true_for_overriding_method_of_java_lang_Object () {
22- assertThat (importMethod (SomeClass .class , "toString" ).isOverriding ()).isTrue ();
26+ assertThat (importMethod (SomeClass .class , "toString" ).isOverriding ())
27+ .as ("method is detected as overriding" ).isTrue ();
2328 }
2429
2530 @ Test
2631 public void isOverriding_returns_false_for_non_overriding_method () {
27- assertThat (importMethod (SomeClass .class , "doSomethingElse" ).isOverriding ()).isFalse ();
32+ assertThat (importMethod (SomeClass .class , "doSomethingElse" ).isOverriding ())
33+ .as ("method is detected as overriding" ).isFalse ();
2834 }
2935
3036 @ Test
3137 public void isOverriding_returns_false_for_non_overriding_overloaded_method () {
32- assertThat (importMethod (SomeClass .class , "doSomething" , Object .class ).isOverriding ()).isFalse ();
38+ assertThat (importMethod (SomeClass .class , "doSomething" , Object .class ).isOverriding ())
39+ .as ("method is detected as overriding" ).isFalse ();
40+ }
41+
42+ @ Test
43+ public void isOverriding_returns_true_for_concrete_implementation_of_generic_interface_method () {
44+ assertThat (importMethod (SomeClassImplementingGenericsConcrete .class , "genericParam" , Object .class ).isOverriding ())
45+ .as ("method is detected as overriding" ).isTrue ();
46+ assertThat (importMethod (SomeClassImplementingGenericsConcrete .class , "genericParam" , String .class ).isOverriding ())
47+ .as ("method is detected as overriding" ).isTrue ();
48+ assertThat (importMethod (SomeClassImplementingGenericsConcrete .class , "genericReturnType" ).isOverriding ())
49+ .as ("method is detected as overriding" ).isTrue ();
50+ }
51+
52+ @ Test
53+ public void isOverriding_returns_true_for_generic_implementation_of_generic_interface_method () {
54+ assertThat (importMethod (SomeClassImplementingGenericsGeneric .class , "genericParam" , Object .class ).isOverriding ())
55+ .as ("method is detected as overriding" ).isTrue ();
56+ assertThat (importMethod (SomeClassImplementingGenericsConcrete .class , "genericParam" , String .class ).isOverriding ())
57+ .as ("method is detected as overriding" ).isTrue ();
58+ assertThat (importMethod (SomeClassImplementingGenericsGeneric .class , "genericReturnType" ).isOverriding ())
59+ .as ("method is detected as overriding" ).isTrue ();
3360 }
3461
3562 @ SuppressWarnings ("unused" )
@@ -56,4 +83,36 @@ public String toString() {
5683 return super .toString ();
5784 }
5885 }
86+
87+ @ SuppressWarnings ("unused" )
88+ private interface SomeGenericInterface <T , U > {
89+
90+ void genericParam (T param );
91+
92+ U genericReturnType ();
93+ }
94+
95+ private static class SomeClassImplementingGenericsConcrete implements SomeGenericInterface <String , File > {
96+
97+ @ Override
98+ public void genericParam (String param ) {
99+ }
100+
101+ @ Override
102+ public File genericReturnType () {
103+ return null ;
104+ }
105+ }
106+
107+ private static class SomeClassImplementingGenericsGeneric <X extends String , Y extends File > implements SomeGenericInterface <X , Y > {
108+
109+ @ Override
110+ public void genericParam (X param ) {
111+ }
112+
113+ @ Override
114+ public Y genericReturnType () {
115+ return null ;
116+ }
117+ }
59118}
0 commit comments