Files
narya/tests/src/java/com/threerings/presents/server/DestroyedRefTest.java
T
Michael Bayne d4595269d5 Brought things back up to date; pruned imports; made Eclipse suggested
cleanups.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2972 542714f4-19e9-0310-aa3c-eee0fc999fb1
2004-02-25 14:51:26 +00:00

101 lines
2.8 KiB
Java

//
// $Id: DestroyedRefTest.java,v 1.9 2004/02/25 14:51:26 mdb Exp $
package com.threerings.presents.server;
import junit.framework.Test;
import junit.framework.TestCase;
import com.threerings.presents.Log;
import com.threerings.presents.dobj.*;
/**
* Tests that the dobjmgr will not allow a destroyed object to be added to
* an oid list.
*/
public class DestroyedRefTest
extends TestCase
implements Subscriber, EventListener
{
public DestroyedRefTest ()
{
super(DestroyedRefTest.class.getName());
}
public void objectAvailable (DObject object)
{
// add ourselves as an event listener
object.addListener(this);
// keep references to our test objects
if (_objone == null) {
_objone = (TestObject)object;
} else {
_objtwo = (TestObject)object;
// add object one to object two twice in a row to make sure
// repeated adds don't result in the object being listed twice
_objtwo.addToList(_objone.getOid());
Log.info("The following addToList() should be ignored.");
_objtwo.addToList(_objone.getOid());
// now that we have both objects, try to set up the reference.
// first we queue up a destroy event for object two, then we
// try to reference it on object one's oid list
_objtwo.destroy();
_objone.addToList(_objtwo.getOid());
// finally dispatch an event on which we can trigger our exit
_objone.setFoo(1);
}
}
public void requestFailed (int oid, ObjectAccessException cause)
{
fail("Ack. Unable to create object [cause=" + cause + "].");
}
public void eventReceived (DEvent event)
{
int toid = event.getTargetOid();
// when we get the attribute change, we can exit
if (event instanceof ObjectDestroyedEvent) {
Log.info("The upcoming object added event should be rejected.");
} else if (event instanceof ObjectAddedEvent &&
toid == _objtwo.getOid()) {
assertTrue("list should contain only one oid",
_objtwo.list.size() == 1);
} else if (event instanceof AttributeChangedEvent) {
// go bye bye
_omgr.harshShutdown();
} else {
fail("Got unexpected event: " + event);
}
}
public void runTest ()
{
// create two test objects
_omgr.createObject(TestObject.class, this);
_omgr.createObject(TestObject.class, this);
// and run the object manager
_omgr.run();
}
public static Test suite ()
{
return new DestroyedRefTest();
}
protected TestObject _objone;
protected TestObject _objtwo;
protected static PresentsDObjectMgr _omgr = new PresentsDObjectMgr();
}