001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018package org.apache.commons.proxy2.interceptor; 019 020import static org.junit.Assert.assertEquals; 021 022import org.apache.commons.proxy2.Interceptor; 023import org.apache.commons.proxy2.Invocation; 024import org.apache.commons.proxy2.provider.ObjectProviderUtils; 025import org.apache.commons.proxy2.util.AbstractTestCase; 026import org.apache.commons.proxy2.util.Echo; 027import org.junit.Test; 028 029public class InterceptorUtilsTest extends AbstractTestCase 030{ 031 @Test 032 public void testConstant() throws Throwable 033 { 034 Interceptor interceptor = InterceptorUtils.constant("Hello!"); 035 Invocation invocation = mockInvocation(Echo.class, "echoBack", String.class).withArguments("World!").build(); 036 assertEquals("Hello!", interceptor.intercept(invocation)); 037 } 038 039 @Test 040 public void testProvider() throws Throwable 041 { 042 Interceptor interceptor = InterceptorUtils.provider(ObjectProviderUtils.constant("Foo!")); 043 Invocation invocation = mockInvocation(Echo.class, "echoBack", String.class).withArguments("World!").build(); 044 assertEquals("Foo!", interceptor.intercept(invocation)); 045 } 046 047 @Test(expected = RuntimeException.class) 048 public void testThrowingExceptionObject() throws Throwable 049 { 050 Interceptor interceptor = InterceptorUtils.throwing(new RuntimeException("Oops!")); 051 Invocation invocation = mockInvocation(Echo.class, "echoBack", String.class).withArguments("World!").build(); 052 interceptor.intercept(invocation); 053 } 054 055 @Test(expected = RuntimeException.class) 056 public void testThrowingProvidedException() throws Throwable 057 { 058 Interceptor interceptor = InterceptorUtils 059 .throwing(ObjectProviderUtils.constant(new RuntimeException("Oops!"))); 060 Invocation invocation = mockInvocation(Echo.class, "echoBack", String.class).withArguments("World!").build(); 061 interceptor.intercept(invocation); 062 } 063 064}