package matchers.component;
import org.mockito.ArgumentMatcher;
import java.beans.PropertyChangeEvent;
public class PropertyChangeUtils {
private PropertyChangeUtils() {
}
public static PropertyChangeValues hasValues(String message, Object oldValue, Object newValue) {
return new PropertyChangeValues(message, oldValue, newValue);
}
public static class PropertyChangeValues extends ArgumentMatcher<PropertyChangeEvent> {
private final String message;
private final Object oldValue;
private final Object newValue;
public PropertyChangeValues(String message, Object oldValue, Object newValue) {
this.message = message;
this.oldValue = oldValue;
this.newValue = newValue;
}
@Override
public boolean matches(Object argument) {
PropertyChangeEvent event = (PropertyChangeEvent) argument;
if ((newValue == null && event.getNewValue() != null) || (oldValue == null && event.getOldValue() != null)) {
return false;
}
if ((newValue == null && event.getNewValue() == null) || (oldValue == null && event.getOldValue() == null)) {
return event.getPropertyName().equals(message);
}
return (event.getNewValue().equals(newValue) && event.getPropertyName().equals(message)
&& event.getOldValue().equals(oldValue));
}
}
}