Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * This software is licensed under the Apache License, Version 2.0
   * (the "License") agreement; 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.force66.beantester.tests;
 
 import java.util.Set;
 
Tests all bean accessors and mutators.

Author(s):
D. Ashmore
 
 public class AccessorMutatorTest extends BaseBeanTest {
 	
 	
 	public AccessorMutatorTest(ValueGeneratorFactory factorySet<StringfieldExclusions) {
 		Validate.notNull(fieldExclusions"Null fieldExclusionSet not allowed.");
 		Validate.notNull(factory"Null ValueGeneratorFactory not allowed.");
 		 = factory;
 		 = fieldExclusions;
 	}
 
 	public boolean testBeanClass(Class<?> klassObject[] constructorArgs) {
 		this.setFailureReason(null);
 		Object bean = InstantiationUtils.safeNewInstance(klassconstructorArgs);
 		for (PropertyDescriptor descriptor: PropertyUtils.getPropertyDescriptors(bean)) {
             if ( !.contains(descriptor.getName())) {
                 try {testProperty(beandescriptor);}
                 catch (TestFailureException e) {
                 	this.setFailureReason(e.getMessage());
                 	return false;
                 }
             }
         }
 		
 		return true;
 	}
 	
 	protected void testProperty(Object beanPropertyDescriptor descriptor)  {
         
         try {
             performNullTest(beandescriptor);
             for (Object valuegenerateValues(descriptor.getPropertyType())) {
                 performValueTest(beandescriptorvalue);
             }
         }
         catch (TestFailureException are) {
             throw are;
         }
         catch (BeanTesterException are) {
             throw are.addContextValue("bean type"bean.getClass().getName())
                 .addContextValue("field"descriptor.getName());
         }
         catch (Exception e) {
             throw new BeanTesterException(e)
             .addContextValue("bean type"bean.getClass().getName())
             .addContextValue("field"descriptor.getName());
         }
     }
     
 	protected void performValueTest(Object bean,
             PropertyDescriptor descriptorObject valuethrows IllegalAccessException,
             InvocationTargetException {
     	
     	if (!new ValuePropertyTest().testProperty(beandescriptorvalue)) {
     		throw new TestFailureException("Property test failed a value test; we set the property to a test value and expected the property value to be equal afterward")
     			.addContextValue("fieldName"descriptor.getName())
     			.addContextValue("class"bean.getClass().getName())
     			.addContextValue("test value"value);
     	}
 
     }
 
     protected void performNullTest(Object bean,
             PropertyDescriptor descriptorthrows IllegalAccessException,
             InvocationTargetException {
    	if (!new ValuePropertyTest().testProperty(beandescriptornull)) {
    		throw new TestFailureException("Property test failed null test; we set the property to null and expected the property value to be null afterward")
    			.addContextValue("fieldName"descriptor.getName())
    			.addContextValue("class"bean.getClass().getName())
    			.addContextValue("test value"null);
    	}
         
    }
    
    protected Object[] generateValues(Class<?> type) {
    	ValueGenerator<?> generator = .forClass(type);
    	if (generator != null) {
    		return generator.makeValues();
    	}
        
        return new Object[0];
    }
    
    static class TestFailureException extends ContextedRuntimeException {
    	public TestFailureException(String message) {
    		super(message);
    	}
    }
    
New to GrepCode? Check out our FAQ X