/* * Copyright (C) 2010 eXo Platform SAS. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.wikbook.codesource; import junit.framework.TestCase; /** * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> * @version $Revision$ */ public class CodeSourceTestCase extends TestCase { /** . */ private TypeSource fooSource; /** . */ private TypeSource barSource; /** . */ private TypeSource juuSource; /** . */ private TypeSource innerSource; @Override protected void setUp() throws Exception { CodeSourceBuilder builder = new CodeSourceBuilder(); fooSource = builder.buildClass(Foo.class); barSource = builder.buildClass(Bar.class); juuSource = builder.buildClass(Juu.class); innerSource = builder.buildClass(Outter.Inner.class); } public void testEnumClip() { assertEquals("public enum Juu\n" + "{\n" + "}", juuSource.getClip()); } public void testAnnotationClip() { assertEquals("public @interface Bar\n" + "{\n" + "\n" + " String param1();\n" + "\n" + " String param2() default \"\";\n" + " \n" + "}", barSource.getClip()); } public void testAnnotationMember() { MemberSource ms1 = barSource.findMember("param1"); assertEquals(" String param1();", ms1.getClip()); MemberSource ms2 = barSource.findMember("param2"); assertEquals(" String param2() default \"\";", ms2.getClip()); } public void testFieldClip() { NamedMemberSource fieldSource = (NamedMemberSource)fooSource.findMember("juu"); assertNotNull(fieldSource); assertEquals(" private String juu = null;", fieldSource.getClip()); assertEquals(" /**\n" + " * The juu String.\n" + " */", fieldSource.getJavaDoc()); } public void testMethodClip() { SignedMemberSource methodSource = (SignedMemberSource)fooSource.findMember("bar"); assertNotNull(methodSource); assertEquals(" public void bar()\n" + " {\n" + " }", methodSource.getClip()); assertEquals(" /**\n" + " * Bar method.\n" + " */", methodSource.getJavaDoc()); } public void testConstructorClip() { SignedMemberSource methodSource = (SignedMemberSource)fooSource.findMember("Foo"); assertNotNull(methodSource); assertEquals(" public Foo()\n" + " {\n" + " }", methodSource.getClip()); assertEquals(" /**\n" + " * Empty constructor.\n" + " */", methodSource.getJavaDoc()); } public void testClassClip() { assertEquals("public class Foo\n" + "{\n" + "\n" + " /**\n" + " * The juu String.\n" + " */\n" + " private String juu = null;\n" + "\n" + " /**\n" + " * Empty constructor.\n" + " */\n" + " public Foo()\n" + " {\n" + " }\n" + "\n" + " public void bar(String s)\n" + " {\n" + " }\n" + "\n" + " /**\n" + " * Bar method.\n" + " */\n" + " public void bar()\n" + " {\n" + " }\n" + "\n" + " public void bar(byte[] bytes)\n" + " {\n" + " }\n" + "\n" + "}", fooSource.getClip()); assertEquals("/**\n" + " * @author <a href=\"mailto:julien.viet@exoplatform.com\">Julien Viet</a>\n" + " * @version $Revision$\n" + " */", fooSource.getJavaDoc()); } public void testMethodLookup1() { SignedMemberSource methodSource = (SignedMemberSource)fooSource.findMember("bar"); assertNotNull(methodSource); assertEquals("bar", methodSource.getName()); assertEquals(new Signature(), methodSource.getSignature()); } public void testMethodLookup2() { SignedMemberSource methodSource = (SignedMemberSource)fooSource.findMember("bar()"); assertNotNull(methodSource); assertEquals("bar", methodSource.getName()); assertEquals(new Signature(), methodSource.getSignature()); } public void testMethodLookup3() { SignedMemberSource methodSource = (SignedMemberSource)fooSource.findMember("bar(byte[])"); assertNotNull(methodSource); assertEquals("bar", methodSource.getName()); assertEquals(new Signature("byte[]"), methodSource.getSignature()); } public void testMethodLookup4() { SignedMemberSource methodSource = (SignedMemberSource)fooSource.findMember("bar(java.lang.String)"); assertNotNull(methodSource); assertEquals("bar", methodSource.getName()); assertEquals(new Signature("java.lang.String"), methodSource.getSignature()); } public void testMethodConstructorLookup1() { SignedMemberSource methodSource = (SignedMemberSource)fooSource.findMember("Foo()"); assertNotNull(methodSource); assertEquals("Foo", methodSource.getName()); assertEquals(new Signature(), methodSource.getSignature()); } public void testNoSource() { CodeSourceBuilder builder = new CodeSourceBuilder(); TypeSource source = builder.buildClass("DoesNotExists"); assertNull(source); } public void testNoClass() { CodeSourceBuilder builder = new CodeSourceBuilder(); try { builder.buildClass("org.wikbook.codesource.Uncompiled"); fail(); } catch (CodeSourceException expected) { } } public void testInnerClass() { assertEquals("org.wikbook.codesource.Outter.Inner", innerSource.getName()); } public void testResolveFQN() { CodeSourceBuilder builder = new CodeSourceBuilder(); TypeSource source = builder.buildClass(Outter.class.getName() + ".Inner"); assertNotNull(source); assertEquals(Outter.class.getName() + ".Inner", source.getName()); } public void testResolveBug() { CodeSourceBuilder builder = new CodeSourceBuilder(); TypeSource source = builder.buildClass(Response.class.getName()); assertNotNull(source); } }