/* * Copyright 2004-2015 the Seasar Foundation and the Others. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.seasar.framework.aop.impl; import junit.framework.TestCase; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.seasar.framework.util.ClassUtil; /** * @author higa * */ public class PointcutImplTest extends TestCase { /** * @throws Exception */ public void testGetMethodNames() throws Exception { PointcutImpl pointcut = new PointcutImpl(Hello2Impl.class); String[] methodNames = pointcut.getMethodNames(); assertEquals("1", 2, methodNames.length); for (int i = 0; i < methodNames.length; ++i) { System.out.println(methodNames[i]); } } /** * @throws Exception */ public void testGetMethodNames2() throws Exception { PointcutImpl pointcut = new PointcutImpl(Hello2.class); String[] methodNames = pointcut.getMethodNames(); assertEquals("1", 2, methodNames.length); for (int i = 0; i < methodNames.length; ++i) { System.out.println(methodNames[i]); } } /** * @throws Exception */ public void testGetMethodNames3() throws Exception { PointcutImpl pointcut = new PointcutImpl(Hello2Impl2.class); String[] methodNames = pointcut.getMethodNames(); assertEquals("1", 2, methodNames.length); for (int i = 0; i < methodNames.length; ++i) { System.out.println(methodNames[i]); } } /** * @throws Exception */ public void testGetMethodNames4() throws Exception { PointcutImpl pointcut = new PointcutImpl(Hello3.class); String[] methodNames = pointcut.getMethodNames(); assertEquals(1, methodNames.length); assertEquals("greeting", methodNames[0]); } /** * @throws Exception */ public void testRegex() throws Exception { PointcutImpl pointcut = new PointcutImpl(new String[] { "greeting.*" }); assertTrue("1", pointcut.isApplied(ClassUtil.getMethod( Hello2Impl2.class, "greeting", null))); assertTrue("2", pointcut.isApplied(ClassUtil.getMethod( Hello2Impl2.class, "greeting2", null))); assertTrue("3", pointcut.isApplied(ClassUtil.getMethod( Hello2Impl2.class, "greeting2", new Class[] { String.class }))); assertFalse("4", pointcut.isApplied(ClassUtil.getMethod( Hello2Impl2.class, "without", null))); } /** * @throws Exception */ public void testMethod() throws Exception { PointcutImpl pointcut = new PointcutImpl(ClassUtil.getMethod( Hello2Impl2.class, "greeting2", null)); assertFalse("1", pointcut.isApplied(ClassUtil.getMethod( Hello2Impl2.class, "greeting", null))); assertTrue("2", pointcut.isApplied(ClassUtil.getMethod( Hello2Impl2.class, "greeting2", null))); assertFalse("3", pointcut.isApplied(ClassUtil.getMethod( Hello2Impl2.class, "greeting2", new Class[] { String.class }))); assertFalse("4", pointcut.isApplied(ClassUtil.getMethod( Hello2Impl2.class, "without", null))); } /* * @see TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); } /* * @see TestCase#tearDown() */ protected void tearDown() throws Exception { super.tearDown(); } /** * @author higa * */ public interface Hello { /** * @return */ public String greeting(); } /** * @author higa * */ public static class HelloImpl implements Hello { public String greeting() { return "Hello"; } } /** * @author higa * */ public class HelloInterceptor implements MethodInterceptor { public Object invoke(MethodInvocation invocation) throws Throwable { return "Hello"; } } /** * @author higa * */ public interface Hello2 extends Hello { /** * @return */ public String greeting2(); } /** * @author higa * */ public static class Hello2Impl extends HelloImpl implements Hello2 { public String greeting2() { return "Hello2"; } } /** * @author higa * */ public static class Hello2Impl2 implements Hello2 { public String greeting() { return "Hello"; } public String greeting2() { return "Hello2"; } /** * @param s * @return */ public String greeting2(String s) { return s; } /** * @return */ public String without() { return "Without"; } } /** * @author higa * */ public static class Hello3 { /** * @return */ public String greeting() { return "Hello"; } /** * @return */ public final String greeting2() { return "Hello"; } } }