package org.incha.core; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; import junit.framework.TestCase; public class JavaProjectModelTest extends TestCase implements PropertyChangeListener { /** * Currently handled property change event. */ private PropertyChangeEvent propertyChangeEvent; /** * Model to test. */ private JavaProjectsModel model; /** * Default constructor. */ public JavaProjectModelTest() { super(); } /** * @param name the test case name. */ public JavaProjectModelTest(final String name) { super(name); } /* (non-Javadoc) * @see junit.framework.TestCase#setUp() */ @Override protected void setUp() throws Exception { model = new JavaProjectsModel(); model.addPropertyChangeListener(this); } public void testaddProject() { final JavaProject p = new JavaProject("prgname"); model.addProject(p); //check source added. assertEquals(1, model.getProjects().size()); //check property changed event has sent assertNotNull(propertyChangeEvent); //check the event name is correct assertEquals(JavaProjectsModel.PROJECTS, propertyChangeEvent.getPropertyName()); //check old value is cSOURCESorrect assertEquals(0, ((List<?>) propertyChangeEvent.getOldValue()).size()); //check new value is correct assertEquals(1, ((List<?>) propertyChangeEvent.getNewValue()).size()); //clear property change event propertyChangeEvent = null; //check can't add duplicate model.addProject(p); assertEquals(1, model.getProjects().size()); assertNull(propertyChangeEvent); } public void testDeleteSource() { final JavaProject f1 = new JavaProject("name1"); final JavaProject f2 = new JavaProject("name2"); model.addProject(f1); model.addProject(f2); //run test model.deleteProject(f2); //check source added. assertEquals(1, model.getProjects().size()); //check property changed event has sent assertNotNull(propertyChangeEvent); //check the event name is correct assertEquals(JavaProjectsModel.PROJECTS, propertyChangeEvent.getPropertyName()); //check old value is correct assertEquals(2, ((List<?>) propertyChangeEvent.getOldValue()).size()); //check new value is correct assertEquals(1, ((List<?>) propertyChangeEvent.getNewValue()).size()); //clear property change event propertyChangeEvent = null; //check can't add duplicate model.deleteProject(f2); assertEquals(1, model.getProjects().size()); assertNull(propertyChangeEvent); } /* (non-Javadoc) * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent) */ @Override public void propertyChange(final PropertyChangeEvent evt) { propertyChangeEvent = evt; } /* (non-Javadoc) * @see junit.framework.TestCase#tearDown() */ @Override protected void tearDown() throws Exception { propertyChangeEvent = null; model.removePropertyChangeListener(this); } }