/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.model.spi;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import org.easymock.Capture;
import org.easymock.CaptureType;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
/**
* Test cases for {@link PropertiesChangeSupport}.
*
* @author Doreen Seider
*/
public class PropertiesChangeSupportTest {
private final String propertyName = "prop.key";
private final String oldValue = "oldValue";
private final String newValue = "newValue";
private PropertyChangeListener listener;
private PropertiesChangeSupport propChangeSupport = new PropertiesChangeSupportStub();
private Capture<PropertyChangeEvent> capture;
/**
* Set up mock objects.
*/
@Before
public void setUpMockObjects() {
listener = EasyMock.createStrictMock(PropertyChangeListener.class);
capture = new Capture<PropertyChangeEvent>(CaptureType.ALL);
listener.propertyChange(EasyMock.capture(capture));
EasyMock.replay(listener);
}
/**
* Tests if properties are fired correctly.
*/
@Test
public void testFirePropertyChange() {
propChangeSupport.addPropertyChangeListener(listener);
propChangeSupport.firePropertyChange(propertyName);
assertEquals(1, capture.getValues().size());
PropertyChangeEvent event = capture.getValues().get(0);
assertEquals(propertyName, event.getPropertyName());
assertNull(propertyName, event.getNewValue());
assertNull(propertyName, event.getOldValue());
EasyMock.verify(listener);
}
/**
* Tests if properties are fired correctly.
*/
@Test
public void testFirePropertyChangeOnlyNewValue() {
propChangeSupport.addPropertyChangeListener(listener);
propChangeSupport.firePropertyChange(propertyName, newValue);
assertEquals(1, capture.getValues().size());
PropertyChangeEvent event = capture.getValues().get(0);
assertEquals(propertyName, event.getPropertyName());
assertEquals(newValue, event.getNewValue());
assertNull(propertyName, event.getOldValue());
EasyMock.verify(listener);
}
/**
* Tests if properties are fired correctly.
*/
@Test
public void testFirePropertyChangeOldAndNewValue() {
propChangeSupport.addPropertyChangeListener(listener);
propChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
assertEquals(1, capture.getValues().size());
PropertyChangeEvent event = capture.getValues().get(0);
assertEquals(propertyName, event.getPropertyName());
assertEquals(newValue, event.getNewValue());
assertEquals(oldValue, event.getOldValue());
EasyMock.verify(listener);
}
/**
* Stub without any additional to test abstract class.
*
* @author Doreen Seider
*/
private class PropertiesChangeSupportStub extends PropertiesChangeSupport { }
}