package org.incha.core;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.util.List;
import junit.framework.TestCase;
public class BuildPathTest extends TestCase implements PropertyChangeListener {
/**
* Currently handled property change event.
*/
private PropertyChangeEvent propertyChangeEvent;
/**
* Build path to test.
*/
private BuildPath buildPath;
/**
* Default constructor.
*/
public BuildPathTest() {
super();
}
/**
* @param name the test case name.
*/
public BuildPathTest(final String name) {
super(name);
}
/* (non-Javadoc)
* @see junit.framework.TestCase#setUp()
*/
@Override
protected void setUp() throws Exception {
buildPath = new JavaProject("JUnit").getBuildPath();
buildPath.addPropertyChangeListener(this);
}
public void testAddSource() {
final File f = new File("/a/b/c/d");
buildPath.addSource(f);
//check source added.
assertEquals(1, buildPath.getSources().size());
//check property changed event has sent
assertNotNull(propertyChangeEvent);
//check the event name is correct
assertEquals(BuildPath.SOURCES, propertyChangeEvent.getPropertyName());
//check old value is correct
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
buildPath.addSource(f);
assertEquals(1, buildPath.getSources().size());
assertNull(propertyChangeEvent);
}
public void testDeleteSource() {
final File f1 = new File("/a/b/c/d");
final File f2 = new File("/a/b/c/e");
buildPath.addSource(f1);
buildPath.addSource(f2);
//run test
buildPath.deleteSource(f2);
//check source added.
assertEquals(1, buildPath.getSources().size());
//check property changed event has sent
assertNotNull(propertyChangeEvent);
//check the event name is correct
assertEquals(BuildPath.SOURCES, 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
buildPath.deleteSource(f2);
assertEquals(1, buildPath.getSources().size());
assertNull(propertyChangeEvent);
}
public void testAddClassPathEntry() {
final File f = new File("/a/b/c/d");
buildPath.addClassPath(f);
//check class path entry added.
assertEquals(1, buildPath.getClassPath().size());
//check property changed event has sent
assertNotNull(propertyChangeEvent);
//check the event name is correct
assertEquals(BuildPath.CLASSPATH, propertyChangeEvent.getPropertyName());
//check old value is correct
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
buildPath.addClassPath(f);
assertEquals(1, buildPath.getClassPath().size());
assertNull(propertyChangeEvent);
}
public void testDeleteClassPathEntry() {
final File f1 = new File("/a/b/c/d");
final File f2 = new File("/a/b/c/e");
buildPath.addClassPath(f1);
buildPath.addClassPath(f2);
//run test
buildPath.deleteClassPath(f2);
//check class path entry added.
assertEquals(1, buildPath.getClassPath().size());
//check property changed event has sent
assertNotNull(propertyChangeEvent);
//check the event name is correct
assertEquals(BuildPath.CLASSPATH, 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
buildPath.deleteClassPath(f2);
assertEquals(1, buildPath.getClassPath().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;
buildPath.removePropertyChangeListener(this);
}
}