Update of /cvsroot/mocklib/mocklib3/input/javasrc/biz/xsoftware/examples/listener2
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv15922/input/javasrc/biz/xsoftware/examples/listener2
Added Files:
SysUnderTest.java UserListener.java TestExample.java
Log Message:
clean up examples.
--- NEW FILE: TestExample.java ---
/*
* Created on Jun 28, 2004
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package biz.xsoftware.examples.listener2;
import junit.framework.TestCase;
import biz.xsoftware.mock.CalledMethod;
import biz.xsoftware.mock.MockObjectFactory;
import biz.xsoftware.mock.MockObject;
/**
* JUnit Suite of TestCases for demonstrating mocking out listeners to
* test for events under certain circumstances.
*
* @author Dean Hiller
*/
public class TestExample extends TestCase {
private MockObject mockListener;
private SysUnderTest sysUnderTest;
/**
* @showcode
*/
public TestExample(String name) {
super(name);
}
/**
* @showcode
*/
@Override
public void setUp() {
mockListener = MockObjectFactory.createMock(UserListener.class);
sysUnderTest = new SysUnderTest();
}
@Override
public void tearDown() {
}
/**
* Tests when a user is added to the system, we get an event
* and tests when he is deleted, we get an event.
*
* @showcode
* @see SysUnderTest#addLegacyListener
* @see LegacySystemListener#legacyEventOccurred
*/
public void testBasicListener() {
sysUnderTest.addUserListener((UserListener)mockListener);
String user = "abc";
sysUnderTest.addUser(user);
CalledMethod method = mockListener.expect("userAdded");
String actualUser = (String)method.getAllParams()[0];
assertEquals(user, actualUser);
sysUnderTest.deleteUser(user);
String actualUser2 = (String)method.getAllParams()[0];
assertEquals(user, actualUser2);
}
/**
* This test that when I add a user that is already added, we do
* not fire a second event telling client systems the user was
* added again which would be a lie
*/
public void testAddUserTwice() {
sysUnderTest.addUserListener((UserListener)mockListener);
String user = "abc";
sysUnderTest.addUser(user);
CalledMethod method = mockListener.expect("userAdded");
String actualUser = (String)method.getAllParams()[0];
assertEquals(user, actualUser);
try {
sysUnderTest.addUser(user);
fail("Should have thrown IllegalArgumentException and did not");
}catch(IllegalArgumentException e) {
}
mockListener.expect(MockObject.NONE);
}
}
--- NEW FILE: UserListener.java ---
package biz.xsoftware.examples.listener2;
import java.util.EventListener;
public interface UserListener extends EventListener {
public void userAdded(String userName);
public void userDeleted(String userName);
}
--- NEW FILE: SysUnderTest.java ---
/*
* Created on Jul 3, 2004
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package biz.xsoftware.examples.listener2;
import java.util.HashSet;
import java.util.Set;
import javax.swing.event.EventListenerList;
/**
* The SysUnderTest here is an adapter to a legacy system. The SysUnderTest
* might be on a different thread or the same thread. For events from
* a legacy system, the SysUnderTest alot of the time may be on a different
* thread listening on some socket to the legacy system.
*
* @author Dean Hiller
*/
public class SysUnderTest {
private EventListenerList listenerList = new EventListenerList();
private Set<String> names = new HashSet<String>();
public SysUnderTest() {
}
public void addUser(String userName) {
if(names.contains(userName))
throw new IllegalArgumentException("The user="+userName+" is already in the system");
names.add(userName);
fireUserAdded(userName);
}
public void deleteUser(String userName) {
boolean isRemoved = names.remove(userName);
if(!isRemoved)
throw new IllegalArgumentException("The user="+userName+" is not in the system");
fireUserDeleted(userName);
}
public void addUserListener(UserListener l) {
listenerList.add(UserListener.class, l);
}
public void removeUserListener(UserListener l) {
listenerList.remove(UserListener.class, l);
}
protected void fireUserAdded(String userName) {
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying
// those that are interested in this event
for (int i = listeners.length-2; i>=0; i-=2) {
if (listeners[i]==UserListener.class) {
// Lazily create the event:
((UserListener)listeners[i+1]).userAdded(userName);
}
}
}
protected void fireUserDeleted(String userName) {
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying
// those that are interested in this event
for (int i = listeners.length-2; i>=0; i-=2) {
if (listeners[i]==UserListener.class) {
// Lazily create the event:
((UserListener)listeners[i+1]).userDeleted(userName);
}
}
}
}
|