/* * Created on Mar 6, 2006 * * 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. * * Copyright @2006 the original author or authors. */ package org.springmodules.cache.config; import junit.framework.Assert; import org.springframework.beans.MutablePropertyValues; import org.springframework.beans.PropertyValue; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.ConstructorArgumentValues; import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.util.StringUtils; /** * <p> * Assert methods related to schema-based configuration of Spring IoC * containers. * </p> * * @author Alex Ruiz */ public abstract class ConfigAssert { public static void assertBeanDefinitionHasConstructorArgument( Object expectedArgument, ConstructorArgumentValues argumentValues, int index, Class argumentType) { String message = "<Constructor argument with index [" + index + "]"; ValueHolder argumentValue = argumentValues.getArgumentValue(index, argumentType); assertEquals(message, expectedArgument, argumentValue.getValue()); } /** * Asserts that the given bean definition contains a property value equal to * the given one. * * @param beanDefinition * the given bean definition * @param expectedPropertyValue * the expected property value */ public static void assertBeanDefinitionHasProperty( BeanDefinition beanDefinition, PropertyValue expectedPropertyValue) { assertPropertyIsPresent(beanDefinition.getPropertyValues(), expectedPropertyValue); } /** * Asserts that the given bean definition wraps a bean of the given class. * * @param beanDefinition * the given bean definition * @param expectedClass * the expected class of the wrapped bean */ public static void assertBeanDefinitionWrapsClass( AbstractBeanDefinition beanDefinition, Class expectedClass) { Assert.assertEquals("<Bean definition class>", expectedClass, beanDefinition.getBeanClass()); } /** * Asserts that both <code>{@link RuntimeBeanReference}</code> have the same * target bean name. * * @param message * message to be displayed if this assertion is <code>false</code> * @param expected * the runtime bean reference containing the expected target bean * name * @param actual * the runtime bean reference containing the actual target bean name */ public static void assertEqualBeanNames(String message, RuntimeBeanReference expected, RuntimeBeanReference actual) { Assert.assertEquals(message, expected.getBeanName(), actual.getBeanName()); } /** * Asserts the given set of property values contains the expected property * value. * * @param propertyValues * the given set of property values * @param expectedPropertyValue * the expected property value */ public static void assertPropertyIsPresent( MutablePropertyValues propertyValues, PropertyValue expectedPropertyValue) { String propertyName = expectedPropertyValue.getName(); PropertyValue actualPropertyValue = propertyValues .getPropertyValue(propertyName); Assert.assertNotNull("Property " + StringUtils.quote(propertyName) + " not found", actualPropertyValue); Object expectedValue = expectedPropertyValue.getValue(); Object actualValue = actualPropertyValue.getValue(); String message = "<Property " + StringUtils.quote(propertyName) + ">"; assertEquals(message, expectedValue, actualValue); } private static void assertEquals(String message, Object expected, Object actual) { if (expected instanceof RuntimeBeanReference) { assertEqualBeanNames(message, (RuntimeBeanReference) expected, (RuntimeBeanReference) actual); } else { Assert.assertEquals(message, expected, actual); } } }