/************************************************************************************** * Copyright (c) Jonas Bon�r, Alexandre Vasseur. All rights reserved. * * http://aspectwerkz.codehaus.org * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the LGPL license * * a copy of which has been included with this distribution in the license.txt file. * **************************************************************************************/ package test; import junit.framework.TestCase; import org.codehaus.aspectwerkz.reflect.MethodComparator; import org.codehaus.aspectwerkz.reflect.MethodComparator; import org.codehaus.aspectwerkz.reflect.ClassInfo; import org.codehaus.aspectwerkz.reflect.MethodInfo; import org.codehaus.aspectwerkz.reflect.impl.java.JavaClassInfo; import java.lang.reflect.Array; import java.lang.reflect.Method; /** * @author <a href="mailto:jboner@codehaus.org">Jonas Bon�r </a> */ public class MethodComparatorTest extends TestCase { public void testCompare() { Method method1 = null; Method method11 = null; Method method2 = null; Method method3 = null; Method method4 = null; Method method5 = null; Method method6 = null; try { method1 = this.getClass().getMethod("__generated$_AW_$method1", new Class[]{}); method11 = this.getClass().getMethod("__generated$_AW_$method1$x", new Class[]{}); method2 = this.getClass().getMethod( "__generated$_AW_$method1", new Class[]{ int.class } ); method3 = this.getClass().getMethod("__generated$_AW_$method2", new Class[]{}); method4 = this.getClass().getMethod( "__generated$_AW_$method2", new Class[]{ int.class } ); method5 = this.getClass().getMethod( "__generated$_AW_$method2", new Class[]{ String.class } ); method6 = this.getClass().getMethod( "__generated$_AW_$method2", new Class[]{ Array.newInstance(String.class, 1).getClass() } ); } catch (Exception e) { throw new RuntimeException("exception unexpected: " + e); } assertTrue( 0 == MethodComparator.getInstance(MethodComparator.PREFIXED_METHOD).compare( method1, method1 ) ); assertTrue( 0 == MethodComparator.getInstance(MethodComparator.PREFIXED_METHOD).compare( method2, method2 ) ); assertTrue( 0 > MethodComparator.getInstance(MethodComparator.PREFIXED_METHOD).compare( method1, method2 ) ); assertTrue( 0 < MethodComparator.getInstance(MethodComparator.PREFIXED_METHOD).compare( method2, method1 ) ); assertTrue( 0 > MethodComparator.getInstance(MethodComparator.PREFIXED_METHOD).compare( method1, method11 ) ); assertTrue( 0 > MethodComparator.getInstance(MethodComparator.PREFIXED_METHOD).compare( method3, method4 ) ); assertTrue( 0 < MethodComparator.getInstance(MethodComparator.PREFIXED_METHOD).compare( method4, method3 ) ); assertTrue( 0 > MethodComparator.getInstance(MethodComparator.PREFIXED_METHOD).compare( method1, method4 ) ); assertTrue( 0 < MethodComparator.getInstance(MethodComparator.PREFIXED_METHOD).compare( method4, method1 ) ); assertTrue( 0 < MethodComparator.getInstance(MethodComparator.PREFIXED_METHOD).compare( method3, method2 ) ); assertTrue( 0 > MethodComparator.getInstance(MethodComparator.PREFIXED_METHOD).compare( method2, method3 ) ); assertTrue( 0 > MethodComparator.getInstance(MethodComparator.PREFIXED_METHOD).compare( method4, method5 ) ); // AW-104 test assertTrue( 0 > MethodComparator.getInstance(MethodComparator.PREFIXED_METHOD).compare( method5, method6 ) ); } public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public static junit.framework.Test suite() { return new junit.framework.TestSuite(MethodComparatorTest.class); } public void __generated$_AW_$method1() { } public void __generated$_AW_$method1$x() { } public void __generated$_AW_$method1(int i) { } public void __generated$_AW_$method2() { } public void __generated$_AW_$method2(int i) { } public void __generated$_AW_$method2(String i) { } public void __generated$_AW_$method2(String[] i) { } public static interface TestInterface { void test(String s);//test1 void test(String[] s);//test2 } public void testMethodComparison() { ClassInfo theTest = JavaClassInfo.getClassInfo(TestInterface.class); MethodInfo test1 = null; MethodInfo test2 = null; for (int i = 0; i < theTest.getMethods().length; i++) { MethodInfo methodInfo = theTest.getMethods()[i]; if (methodInfo.getName().equals("test")) { if (methodInfo.getParameterTypes()[0].getSignature().startsWith("[")) { test2 = methodInfo; } else { test1 = methodInfo; } } } assertTrue( 0 > MethodComparator.getInstance(MethodComparator.METHOD_INFO).compare( test1, test2 )); assertTrue( 0 == MethodComparator.getInstance(MethodComparator.METHOD_INFO).compare( test1, test1 )); } }