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}