Since TestClient is used outside of Narya, it gets to live in with the rest of
the real source code. That's where reusable classes live. Amazing! Also cleaned up some build.xml bits and nixed the Retroweaver stuff. I thought we might have still been using that, but then I saw the hardcoded path to /usr/local/jdk1.4 and knew that it couldn't be so. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6285 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -0,0 +1,189 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// Narya library - tools for developing networked games
|
||||
// Copyright (C) 2002-2010 Three Rings Design, Inc., All Rights Reserved
|
||||
// http://www.threerings.net/code/narya/
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it
|
||||
// under the terms of the GNU Lesser General Public License as published
|
||||
// by the Free Software Foundation; either version 2.1 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
package com.threerings.crowd.client;
|
||||
|
||||
import com.samskivert.util.BasicRunQueue;
|
||||
import com.samskivert.util.Config;
|
||||
|
||||
import com.threerings.util.MessageManager;
|
||||
import com.threerings.util.Name;
|
||||
|
||||
import com.threerings.presents.client.Client;
|
||||
import com.threerings.presents.client.ClientObserver;
|
||||
import com.threerings.presents.dobj.DObjectManager;
|
||||
import com.threerings.presents.net.UsernamePasswordCreds;
|
||||
|
||||
import com.threerings.crowd.chat.client.ChatDirector;
|
||||
import com.threerings.crowd.util.CrowdContext;
|
||||
|
||||
import static com.threerings.crowd.Log.log;
|
||||
|
||||
/**
|
||||
* A client that is useful when doing unit testing.
|
||||
*/
|
||||
public class TestClient
|
||||
implements ClientObserver
|
||||
{
|
||||
public TestClient (String username)
|
||||
{
|
||||
// create our context
|
||||
_ctx = createContext();
|
||||
|
||||
// create the handles on our various services
|
||||
_client = new Client(new UsernamePasswordCreds(new Name(username), "test"), _rqueue);
|
||||
_locdir = new LocationDirector(_ctx);
|
||||
_occdir = new OccupantDirector(_ctx);
|
||||
_msgmgr = new MessageManager("rsrc");
|
||||
_chatdir = new ChatDirector(_ctx, "global");
|
||||
|
||||
// we want to know about logon/logoff
|
||||
_client.addClientObserver(this);
|
||||
|
||||
// for test purposes, hardcode the server info
|
||||
_client.setServer("localhost", Client.DEFAULT_SERVER_PORTS);
|
||||
}
|
||||
|
||||
public void run ()
|
||||
{
|
||||
// log on
|
||||
_client.logon();
|
||||
|
||||
// loop over our queue, running the runnables
|
||||
_rqueue.run();
|
||||
}
|
||||
|
||||
public void clientWillLogon (Client client)
|
||||
{
|
||||
}
|
||||
|
||||
public void clientDidLogon (Client client)
|
||||
{
|
||||
log.info("Client did logon [client=" + client + "].");
|
||||
|
||||
// request to move to a place
|
||||
_ctx.getLocationDirector().moveTo(15);
|
||||
}
|
||||
|
||||
public void clientObjectDidChange (Client client)
|
||||
{
|
||||
log.info("Client object did change [client=" + client + "].");
|
||||
}
|
||||
|
||||
public void clientFailedToLogon (Client client, Exception cause)
|
||||
{
|
||||
log.info("Client failed to logon [client=" + client +
|
||||
", cause=" + cause + "].");
|
||||
}
|
||||
|
||||
public void clientConnectionFailed (Client client, Exception cause)
|
||||
{
|
||||
log.info("Client connection failed [client=" + client +
|
||||
", cause=" + cause + "].");
|
||||
}
|
||||
|
||||
public boolean clientWillLogoff (Client client)
|
||||
{
|
||||
log.info("Client will logoff [client=" + client + "].");
|
||||
return true;
|
||||
}
|
||||
|
||||
public void clientDidLogoff (Client client)
|
||||
{
|
||||
log.info("Client did logoff [client=" + client + "].");
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
public void clientDidClear (Client client)
|
||||
{
|
||||
}
|
||||
|
||||
protected CrowdContext createContext ()
|
||||
{
|
||||
return new CrowdContextImpl();
|
||||
}
|
||||
|
||||
public static void main (String[] args)
|
||||
{
|
||||
// create our test client
|
||||
TestClient tclient = new TestClient("test");
|
||||
// start it running
|
||||
tclient.run();
|
||||
}
|
||||
|
||||
protected class CrowdContextImpl implements CrowdContext
|
||||
{
|
||||
public Config getConfig ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public Client getClient ()
|
||||
{
|
||||
return _client;
|
||||
}
|
||||
|
||||
public DObjectManager getDObjectManager ()
|
||||
{
|
||||
return _client.getDObjectManager();
|
||||
}
|
||||
|
||||
public LocationDirector getLocationDirector ()
|
||||
{
|
||||
return _locdir;
|
||||
}
|
||||
|
||||
public OccupantDirector getOccupantDirector ()
|
||||
{
|
||||
return _occdir;
|
||||
}
|
||||
|
||||
public ChatDirector getChatDirector ()
|
||||
{
|
||||
return _chatdir;
|
||||
}
|
||||
|
||||
public MessageManager getMessageManager ()
|
||||
{
|
||||
return _msgmgr;
|
||||
}
|
||||
|
||||
public void setPlaceView (PlaceView view)
|
||||
{
|
||||
// nothing to do because we don't create views
|
||||
}
|
||||
|
||||
public void clearPlaceView (PlaceView view)
|
||||
{
|
||||
// nothing to do because we don't create views
|
||||
}
|
||||
}
|
||||
|
||||
protected Client _client;
|
||||
protected CrowdContext _ctx;
|
||||
|
||||
protected LocationDirector _locdir;
|
||||
protected OccupantDirector _occdir;
|
||||
protected MessageManager _msgmgr;
|
||||
protected ChatDirector _chatdir;
|
||||
|
||||
protected BasicRunQueue _rqueue = new BasicRunQueue();
|
||||
}
|
||||
Reference in New Issue
Block a user