d4595269d5
cleanups. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2972 542714f4-19e9-0310-aa3c-eee0fc999fb1
101 lines
2.8 KiB
Java
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();
|
|
}
|