@@ -276,6 +276,90 @@ void runAssertions() {
276276 .failsToCompile ();
277277 }
278278
279+ @ Test
280+ public void missingSuperclass () {
281+ JavaFileObject javaFileObject = JavaFileObjects .forSourceLines (
282+ "test.TestClass" ,
283+ "package test;" ,
284+ "" ,
285+ "class TestClass extends Missing {}" );
286+ assertAbout (javaSource ())
287+ .that (javaFileObject )
288+ .processedWith (new AssertingProcessor () {
289+ @ Override
290+ void runAssertions () {
291+ TypeElement testClassElement =
292+ processingEnv .getElementUtils ().getTypeElement ("test.TestClass" );
293+ assertThat (SuperficialValidation .validateElement (testClassElement )).isFalse ();
294+ }
295+ })
296+ .failsToCompile ();
297+ }
298+
299+ @ Test
300+ public void missingSuperinterface () {
301+ JavaFileObject javaFileObject = JavaFileObjects .forSourceLines (
302+ "test.TestClass" ,
303+ "package test;" ,
304+ "" ,
305+ "class TestClass implements Missing {}" );
306+ assertAbout (javaSource ())
307+ .that (javaFileObject )
308+ .processedWith (new AssertingProcessor () {
309+ @ Override
310+ void runAssertions () {
311+ TypeElement testClassElement =
312+ processingEnv .getElementUtils ().getTypeElement ("test.TestClass" );
313+ assertThat (SuperficialValidation .validateElement (testClassElement )).isFalse ();
314+ }
315+ })
316+ .failsToCompile ();
317+ }
318+
319+ @ Test
320+ public void missingGrandparentSuperclass () {
321+ JavaFileObject javaFileObject = JavaFileObjects .forSourceLines (
322+ "test.TestClass" ,
323+ "package test;" ,
324+ "" ,
325+ "class Parent extends Missing {}" ,
326+ "" ,
327+ "class TestClass extends Parent {}" );
328+ assertAbout (javaSource ())
329+ .that (javaFileObject )
330+ .processedWith (new AssertingProcessor () {
331+ @ Override
332+ void runAssertions () {
333+ TypeElement testClassElement =
334+ processingEnv .getElementUtils ().getTypeElement ("test.TestClass" );
335+ assertThat (SuperficialValidation .validateElement (testClassElement )).isFalse ();
336+ }
337+ })
338+ .failsToCompile ();
339+ }
340+
341+ @ Test
342+ public void missingGrandparentSuperinterface () {
343+ JavaFileObject javaFileObject = JavaFileObjects .forSourceLines (
344+ "test.TestClass" ,
345+ "package test;" ,
346+ "" ,
347+ "interface Parent extends Missing {}" ,
348+ "" ,
349+ "class TestClass implements Parent {}" );
350+ assertAbout (javaSource ())
351+ .that (javaFileObject )
352+ .processedWith (new AssertingProcessor () {
353+ @ Override
354+ void runAssertions () {
355+ TypeElement testClassElement =
356+ processingEnv .getElementUtils ().getTypeElement ("test.TestClass" );
357+ assertThat (SuperficialValidation .validateElement (testClassElement )).isFalse ();
358+ }
359+ })
360+ .failsToCompile ();
361+ }
362+
279363 private abstract static class AssertingProcessor extends AbstractProcessor {
280364 @ Override
281365 public Set <String > getSupportedAnnotationTypes () {
0 commit comments