Пример #1
0
    def setUp(self):
        self.room = Room("Just outside a dark cave.", "")
        self.actor = TargettableObject("a decapitated knight",
                                       set(['shiny', 'dead']),
                                       self.room)
        self.roomtarget = TargettableObject("a killer rabbit",
                                            set(['bunny', 'fluffy', "rabbit",
                                                 'murderous', "killer"]),
                                            self.room)
        self.invtarget = NamedObject("a surprised-looking decapitated head",
                                     "Boris", set(["head", "dead"]),
                                     self.actor.inventory)
        self.otherroom = Room("Just inside a dark cave.", "")
        self.exit = TargettableExitObject(self.room, self.otherroom,
                                          "the mouth of a cave", 
                                          set(["cave", "mouth"]))

        self.room.add(self.actor)
        self.room.add(self.roomtarget)
        self.room.add(self.invtarget)
        self.room.add(self.exit)

        self.setup_for_object(self.actor)

        self.info = MockInfo(self.actor)
Пример #2
0
 def __init__(self, room):
     super(MUDObject, self).__init__(room)
     self.room = room
     self.delegates = set()
     self.inventory = Room("A dummy inventory.", "This is a dummy "
                           "inventory, to make the checking code a little "
                           "bit simpler.")
Пример #3
0
 def __init__(self, sdesc, name, adjs, room):
     if NamedObject.exists(name):
         raise NamealreadyUsedError()
     super(NamedObject, self).__init__(sdesc, adjs, room)
     self.inventory = Room("%s's inventory" % name,
                           "You should not be here.")
     NamedObject._name_registry[name.lower()] = self
     self.name = name
     self.adjs = adjs | set([name.lower()])
Пример #4
0
grailmud (in the file named LICENSE); if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
"""

import os
from durus.file_storage import FileStorage
from durus.connection import Connection
from grailmud.rooms import Room
from grailmud.objects import MUDObject, NamedObject
from grailmud.npcs.chatty import ChattyDelegate
from grailmud.ticks import Ticker

startroom = Room('An unremarkable moor.',
                 'This moor is extremely bare. Overly so, perhaps. There '
                 'is a definite air of blandness about its grey horizon '
                 'and overcast sky. The ground is anonymous and blank; '
                 'grey dust litters the floor, and that is about all which '
                 'can be said about it. Even the air seems to be steeped in'
                 ' mediocrity - a lukewarm temperature, with no discernable'
                 ' exciting scents.')

eliza = NamedObject('a bespectacled old lady', 'Eliza',
                    set(['old', 'lady', 'woman']), startroom)
eliza.addDelegate(ChattyDelegate(eliza))
startroom.add(eliza)

if os.access("mudlib.durus", os.F_OK):
    os.remove("mudlib.durus")

try:
    connection = Connection(FileStorage("mudlib.durus"))
Пример #5
0
def test_adding():
    r = Room('A blank room', 'Nothing to see here, move along.')
    obj = MUDObject(None)
    r.add(obj)
    assert obj in r.contents
Пример #6
0
def test_adding():
    r = Room('A blank room', 'Nothing to see here, move along.')
    obj = MUDObject(None)
    r.add(obj)
    assert obj in r.contents
Пример #7
0
class TestEventSending(SetupHelper):

    def setUp(self):
        self.room = Room("Just outside a dark cave.", "")
        self.actor = TargettableObject("a decapitated knight",
                                       set(['shiny', 'dead']),
                                       self.room)
        self.roomtarget = TargettableObject("a killer rabbit",
                                            set(['bunny', 'fluffy', "rabbit",
                                                 'murderous', "killer"]),
                                            self.room)
        self.invtarget = NamedObject("a surprised-looking decapitated head",
                                     "Boris", set(["head", "dead"]),
                                     self.actor.inventory)
        self.otherroom = Room("Just inside a dark cave.", "")
        self.exit = TargettableExitObject(self.room, self.otherroom,
                                          "the mouth of a cave", 
                                          set(["cave", "mouth"]))

        self.room.add(self.actor)
        self.room.add(self.roomtarget)
        self.room.add(self.invtarget)
        self.room.add(self.exit)

        self.setup_for_object(self.actor)

        self.info = MockInfo(self.actor)

    def tearDown(self):
        self.room.remove_from_instances()
        self.actor.remove_from_instances()
        self.roomtarget.remove_from_instances()
        self.invtarget.remove_from_instances()
        NamedObject._name_registry.clear()
        self.exit.remove_from_instances()

    def test_look_at_room_TargettableObject(self):
        lookAt(self.actor, self.roomtarget)

        assert self.actor.delegate.received == [LookAtEvent(self.roomtarget)]

    def test_look_at_inventory_TargettableObject(self):
        lookAt(self.actor, self.invtarget)

        assert self.actor.delegate.received == [LookAtEvent(self.invtarget)]
        
    def test_look_at_nowhere(self):
        lookAt(self.actor, MUDObject(None))

        assert self.actor.delegate.received == [UnfoundObjectEvent()]

    def test_look_at_room(self):
        lookRoom(self.actor)

        assert self.actor.delegate.received == [LookRoomEvent(self.room)]

    def test_look_at_exit(self):
        lookAt(self.actor, self.exit)

        assert self.actor.delegate.received == [LookRoomEvent(self.otherroom)]

    def test_look_at_parsing_no_at(self):
        lookDistributor(self.actor, 'boris', self.info)

        print self.actor.delegate.received
        assert self.actor.delegate.received == [LookAtEvent(self.invtarget)]

    def test_look_at_parsing(self):
        lookDistributor(self.actor, "at killer rabbit", self.info)

        print self.actor.delegate.received
        assert self.actor.delegate.received == [LookAtEvent(self.roomtarget)]

    def test_look_at_parsing_failure(self):
        lookDistributor(self.actor, "at foobar", self.info)

        assert self.actor.delegate.received == [UnfoundObjectEvent()]

    def test_look_parsing(self):
        lookDistributor(self.actor, "", self.info)

        print self.actor.delegate.received
        assert self.actor.delegate.received == [LookRoomEvent(self.room)]