001package org.jadira.scanner.classpath.types; 002 003import static org.junit.Assert.assertEquals; 004import static org.junit.Assert.assertTrue; 005 006import java.util.List; 007 008import org.jadira.scanner.classpath.ClasspathResolver; 009import org.jadira.scanner.classpath.visitor.CollectingVisitor; 010import org.jadira.scanner.core.exception.ClasspathAccessException; 011import org.junit.Test; 012 013public class JInterfaceTest { 014 015 @Test 016 public void getSuperInterfaces() throws ClasspathAccessException { 017 018 ClasspathResolver helper = new ClasspathResolver(); 019 JInterface intf = JInterface.getJInterface("java.awt.event.AWTEventListener", helper); 020 List<JInterface> superIntf = intf.getSuperInterfaces(); 021 assertEquals(1, superIntf.size()); 022 assertEquals(java.util.EventListener.class, superIntf.get(0).getActualClass()); 023 } 024 025 @Test 026 public void getMethods() { 027 028 ClasspathResolver helper = new ClasspathResolver(); 029 JInterface intf = JInterface.getJInterface("java.awt.event.AWTEventListener", helper); 030 List<JInterface> superIntf = intf.getSuperInterfaces(); 031 assertEquals(1, superIntf.size()); 032 assertEquals(0, superIntf.get(0).getMethods().size()); 033 034 assertEquals(1, intf.getMethods().size()); 035 assertEquals("eventDispatched", intf.getMethods().get(0).getName()); 036 assertEquals(1, intf.getMethods().get(0).getParameters().size()); 037 assertEquals("0", intf.getMethods().get(0).getParameters().get(0).getName()); 038 assertEquals(0, intf.getMethods().get(0).getParameters().get(0).getIndex()); 039 assertEquals("java.awt.AWTEvent", intf.getMethods().get(0).getParameters().get(0).getType().getName()); 040 } 041 042 @Test 043 public void getActualInterface() { 044 045 ClasspathResolver helper = new ClasspathResolver(); 046 JInterface intf = JInterface.getJInterface("java.awt.event.AWTEventListener", helper); 047 assertEquals(java.awt.event.AWTEventListener.class, intf.getActualClass()); 048 assertEquals(java.awt.event.AWTEventListener.class, intf.getActualInterface()); 049 } 050 051 @SuppressWarnings("deprecation") 052 @Test 053 public void getAnnotations() { 054 055 ClasspathResolver helper = new ClasspathResolver(); 056 JInterface intf = JInterface.getJInterface("java.rmi.registry.RegistryHandler", helper); 057 assertEquals(java.rmi.registry.RegistryHandler.class, intf.getActualClass()); 058 assertEquals(java.rmi.registry.RegistryHandler.class, intf.getActualInterface()); 059 assertEquals(1, intf.getAnnotations().size()); 060 JAnnotation<?> ann = intf.getAnnotations().iterator().next(); 061 assertTrue(ann.getActualAnnotation() instanceof Deprecated); 062 } 063 064 @Test 065 public void getPackage() { 066 067 ClasspathResolver helper = new ClasspathResolver(); 068 JInterface intf = JInterface.getJInterface("java.awt.event.AWTEventListener", helper); 069 assertEquals("java.awt.event", intf.getPackage().getName()); 070 assertEquals(Package.getPackage("java.awt.event"), intf.getPackage().getActualPackage()); 071 } 072 073 @Test 074 public void getActualClass() { 075 076 ClasspathResolver helper = new ClasspathResolver(); 077 JInterface intf = JInterface.getJInterface("java.awt.event.AWTEventListener", helper); 078 assertEquals(java.awt.event.AWTEventListener.class, intf.getActualClass()); 079 } 080 081// public Set<JInterface> getSubInterfaces() 082// public Set<JClass> getImplementingClasses() 083// public Set<JEnum> getImplementingEnums() 084 085 @Test 086 public void acceptVisitor() { 087 088 ClasspathResolver helper = new ClasspathResolver(); 089 JInterface intf = JInterface.getJInterface("java.awt.event.AWTEventListener", helper); 090 091 CollectingVisitor visitor = new CollectingVisitor(); 092 intf.acceptVisitor(visitor); 093 094 assertEquals(4, visitor.getVisitedElements().size()); 095 } 096 097 @Test 098 public void getEnclosingElement() { 099 ClasspathResolver helper = new ClasspathResolver(); 100 JInterface intf = JInterface.getJInterface("java.awt.event.AWTEventListener", helper); 101 assertEquals("java.awt.event", intf.getPackage().getName()); 102 assertEquals("java.awt.event", intf.getEnclosingElement().getName()); 103 } 104}