1 package com.google.code.beanmatchers; 2 3 import static com.google.code.beanmatchers.BeanOperations.properties; 4 import static java.util.Arrays.asList; 5 6 import java.util.List; 7 import org.hamcrest.Description; 8 9 public class HasToStringDescribingPropertiesExcludingMatcher<T> 10 extends AbstractBeanToStringMatcher<T> { 11 12 private final List<String> excludedProperties; 13 14 public HasToStringDescribingPropertiesExcludingMatcher( 15 TypeBasedValueGenerator valueGenerator, String... excludedProperties) { 16 super(valueGenerator); 17 this.excludedProperties = asList(excludedProperties); 18 } 19 20 @Override 21 protected boolean matchesSafely(Class beanType, Description mismatchDescription) { 22 List<String> properties = properties(beanType); 23 properties.removeAll(excludedProperties); 24 return super.toStringDescribesProperties(beanType, properties, mismatchDescription); 25 } 26 27 @Override 28 public void describeTo(Description description) { 29 if (excludedProperties.isEmpty()) { 30 description.appendText("bean with toString() describing class name and all properties"); 31 } else { 32 description.appendText( 33 "bean with toString() describing class name and all properties excluding "); 34 description.appendValue(excludedProperties); 35 } 36 } 37 }