Ejemplo n.º 1
0
    def test_shiny_area_format(self):
        """Make sure the read/write formatters for ShinyAreaFormat work correctly.
        """
        from shinymud.lib.sport_plugins.formatters.area_write_shiny_format import format as writeshiny
        from shinymud.lib.sport_plugins.formatters.area_read_shiny_format import format as readshiny
        area = self._create_area()
        area_txt = writeshiny(area)
        self.world.log.debug(area_txt)
        self.world.destroy_area(area.name, 'test')
        self.assertFalse(self.world.area_exists('foo'))
        readshiny(self.world, area_txt)

        self.assertTrue(self.world.area_exists('foo'))
        nufoo = self.world.get_area('foo')

        # Test to make sure all scripts are good
        self.assertEqual(len(nufoo.scripts.keys()), 1)
        s1 = nufoo.get_script('1')
        self.assertEqual('say ...', s1.body)
        self.assertEqual('bar', s1.name)

        # Test to make sure all items are good
        i1 = nufoo.get_item('1')
        self.assertEqual('chair', i1.name)
        self.assertTrue(i1.has_type('furniture'))
        self.assertEqual(i1.item_types['furniture'].capacity, 1)

        # Make sure the npcs come back good
        n1 = nufoo.get_npc('1')
        self.assertEqual('Link', n1.name)
        self.assertEqual(
            'This little elf-man has some hearts tattooed on his arm.',
            n1.description)
        nevent = n1.events['hears'][0]
        self.assertEqual(nevent.event_trigger, 'hears')
        self.assertTrue(nevent.script is s1)
        self.assertEqual(nevent.condition, 'Gannon')

        # Go through the rooms...
        r1 = nufoo.get_room('1')
        r2 = nufoo.get_room('2')
        self.assertEqual('Room 1', r1.name)
        self.assertEqual('Cool room.', r1.description)
        self.assertTrue(r1.exits['north'].to_room is r2)
        self.assertTrue(r2.exits['south'].to_room is r1)
        self.assertTrue(r1.spawns['1'].spawn_object is i1)
        self.assertTrue(r2.spawns['1'].spawn_object is n1)

        # Make sure the spawns were reset properly
        self.assertEqual(len(r1.items), 1)
        self.assertEqual(len(r2.npcs), 1)
Ejemplo n.º 2
0
 def test_shiny_area_format(self):
     """Make sure the read/write formatters for ShinyAreaFormat work correctly.
     """
     from shinymud.lib.sport_plugins.formatters.area_write_shiny_format import format as writeshiny
     from shinymud.lib.sport_plugins.formatters.area_read_shiny_format import format as readshiny
     area = self._create_area()
     area_txt = writeshiny(area)
     self.world.log.debug(area_txt)
     self.world.destroy_area(area.name, 'test')
     self.assertFalse(self.world.area_exists('foo'))
     readshiny(self.world, area_txt)
     
     self.assertTrue(self.world.area_exists('foo'))
     nufoo = self.world.get_area('foo')
     
     # Test to make sure all scripts are good
     self.assertEqual(len(nufoo.scripts.keys()), 1)
     s1 = nufoo.get_script('1')
     self.assertEqual('say ...', s1.body)
     self.assertEqual('bar', s1.name)
     
     # Test to make sure all items are good
     i1 = nufoo.get_item('1')
     self.assertEqual('chair', i1.name)
     self.assertTrue(i1.has_type('furniture'))
     self.assertEqual(i1.item_types['furniture'].capacity, 1)
     
     # Make sure the npcs come back good
     n1 = nufoo.get_npc('1')
     self.assertEqual('Link', n1.name)
     self.assertEqual('This little elf-man has some hearts tattooed on his arm.', n1.description)
     nevent = n1.events['hears'][0]
     self.assertEqual(nevent.event_trigger, 'hears')
     self.assertTrue(nevent.script is s1)
     self.assertEqual(nevent.condition, 'Gannon')
     
     # Go through the rooms...
     r1 = nufoo.get_room('1')
     r2 = nufoo.get_room('2')
     self.assertEqual('Room 1', r1.name)
     self.assertEqual('Cool room.', r1.description)
     self.assertTrue(r1.exits['north'].to_room is r2)
     self.assertTrue(r2.exits['south'].to_room is r1)
     self.assertTrue(r1.spawns['1'].spawn_object is i1)
     self.assertTrue(r2.spawns['1'].spawn_object is n1)
     
     # Make sure the spawns were reset properly
     self.assertEqual(len(r1.items), 1)
     self.assertEqual(len(r2.npcs), 1)
Ejemplo n.º 3
0
    def test_shiny_player_format(self):
        from shinymud.lib.sport_plugins.formatters.player_write_shiny_format import format as writeshiny
        from shinymud.lib.sport_plugins.formatters.player_read_shiny_format import format as readshiny
        from shinymud.models.player import Player
        #create a playa
        sven = Player(('foo', 'bar'))
        sven.playerize({'name': 'sven', 'password': '******'})
        sven.permissions = 17
        sven.description = "I'm pretty adorable."
        sven.title = 'Super Sven'
        sven.save()
        area = self._create_area()
        sven.item_add(area.get_item('1').load())

        txt = writeshiny(sven)
        self.world.log.debug(txt)

        sven.destruct()
        # Sven should have been taken out of the database...
        row = self.world.db.select('* from player where name=?', ['sven'])
        self.assertFalse(row)
        row = self.world.db.select('* from game_item where owner=?',
                                   [sven.dbid])
        self.assertFalse(row)

        result = readshiny(self.world, txt)
        self.world.log.debug(result)
        self.assertEqual(result,
                         'Character "Sven" has been successfully imported.')

        # Sven should now be in the database, but not online
        row = self.world.db.select('* from player where name=?', ['sven'])[0]
        self.assertTrue(row)
        self.assertFalse(self.world.get_player('sven'))

        isven = Player(('foo', 'bar'))
        isven.playerize(row)

        row = self.world.db.select('* from game_item where owner=?',
                                   [isven.dbid])
        self.assertTrue(row)

        # Make sure that all attributes we set got imported correctly
        self.assertEqual(sven.password, isven.password)
        self.assertEqual(sven.description, isven.description)
        self.assertEqual(sven.name, isven.name)
        self.assertEqual(sven.title, isven.title)
        self.assertEqual(sven.permissions, isven.permissions)

        # Make sure that the inventory was correctly loaded
        self.assertEqual(len(sven.inventory), len(isven.inventory))
        item = isven.inventory[0]
        self.world.log.debug(item.create_save_dict())
        self.world.log.debug(item.item_types)
        self.assertFalse(sven.inventory[0] is isven.inventory[0])
        self.assertEqual(item.name, 'chair')
        self.assertTrue(item.has_type('furniture'))
        self.assertEqual(item.item_types['furniture'].capacity, 5)
Ejemplo n.º 4
0
    def test_shiny_player_format_containers(self):
        """Make sure shiny player format still works when player has containers
        in their inventory.
        """
        from shinymud.lib.sport_plugins.formatters.player_write_shiny_format import format as writeshiny
        from shinymud.lib.sport_plugins.formatters.player_read_shiny_format import format as readshiny
        from shinymud.lib.connection_handlers.shiny_connections import ShinyConnection
        from shinymud.models.player import Player
        sven = Player(('foo', 'bar'))
        sven.playerize({'name': 'sven', 'password': '******'})
        sven.save()
        area = self._create_area()
        item1 = area.new_item()
        item1.build_set_keywords('item1')
        item1.build_add_type('container')
        game1 = item1.load()

        item2 = area.new_item()
        item2.build_set_keywords('item2')
        item2.build_add_type('container')
        game2 = item2.load()
        self.assertTrue(game1.item_types['container'].item_add(game2))

        item3 = area.new_item()
        item3.build_set_keywords('item3')
        game3 = item3.load()
        self.assertTrue(game2.item_types['container'].item_add(game3))

        sven.item_add(game1)

        txt = writeshiny(sven)
        self.world.log.debug(txt)

        sven.destruct()

        row = self.world.db.select('* from player where name=?', ['sven'])
        self.assertFalse(row)
        row = self.world.db.select('* from game_item where owner=?',
                                   [sven.dbid])
        self.assertFalse(row)

        result = readshiny(self.world, txt)
        self.world.log.debug(result)
        self.assertEqual(result,
                         'Character "Sven" has been successfully imported.')
        row = self.world.db.select('* from player where name=?', ['sven'])[0]
        isven = Player(('foo', 'bar'))
        isven.playerize(row)

        self.assertEqual(len(isven.inventory), 1)
        s1 = isven.inventory[0]
        self.assertEqual(s1.keywords, ['item1'])
        s2 = s1.item_types['container'].get_item_by_kw('item2')
        self.assertEqual(s2.keywords, ['item2'])
        s3 = s2.item_types['container'].get_item_by_kw('item3')
        self.assertEqual(s3.keywords, ['item3'])
Ejemplo n.º 5
0
 def test_shiny_player_format(self):
     from shinymud.lib.sport_plugins.formatters.player_write_shiny_format import format as writeshiny
     from shinymud.lib.sport_plugins.formatters.player_read_shiny_format import format as readshiny
     from shinymud.models.player import Player
     #create a playa
     sven = Player(('foo', 'bar'))
     sven.playerize({'name': 'sven', 'password': '******'})
     sven.permissions = 17
     sven.description = "I'm pretty adorable."
     sven.title = 'Super Sven'
     sven.save()
     area = self._create_area()
     sven.item_add(area.get_item('1').load())
     
     txt = writeshiny(sven)
     self.world.log.debug(txt)
     
     sven.destruct()
     # Sven should have been taken out of the database...
     row = self.world.db.select('* from player where name=?', ['sven'])
     self.assertFalse(row)
     row = self.world.db.select('* from game_item where owner=?', [sven.dbid])
     self.assertFalse(row)
     
     result = readshiny(self.world, txt)
     self.world.log.debug(result)
     self.assertEqual(result, 'Character "Sven" has been successfully imported.')
     
     # Sven should now be in the database, but not online
     row = self.world.db.select('* from player where name=?', ['sven'])[0]
     self.assertTrue(row)
     self.assertFalse(self.world.get_player('sven'))
     
     isven = Player(('foo', 'bar'))
     isven.playerize(row)
     
     row = self.world.db.select('* from game_item where owner=?', [isven.dbid])
     self.assertTrue(row)
     
     # Make sure that all attributes we set got imported correctly
     self.assertEqual(sven.password, isven.password)
     self.assertEqual(sven.description, isven.description)
     self.assertEqual(sven.name, isven.name)
     self.assertEqual(sven.title, isven.title)
     self.assertEqual(sven.permissions, isven.permissions)
     
     # Make sure that the inventory was correctly loaded
     self.assertEqual(len(sven.inventory), len(isven.inventory))
     item = isven.inventory[0]
     self.world.log.debug(item.create_save_dict())
     self.world.log.debug(item.item_types)
     self.assertFalse(sven.inventory[0] is isven.inventory[0])
     self.assertEqual(item.name, 'chair')
     self.assertTrue(item.has_type('furniture'))
     self.assertEqual(item.item_types['furniture'].capacity, 5)
Ejemplo n.º 6
0
 def test_shiny_player_format_containers(self):
     """Make sure shiny player format still works when player has containers
     in their inventory.
     """
     from shinymud.lib.sport_plugins.formatters.player_write_shiny_format import format as writeshiny
     from shinymud.lib.sport_plugins.formatters.player_read_shiny_format import format as readshiny
     from shinymud.lib.connection_handlers.shiny_connections import ShinyConnection
     from shinymud.models.player import Player
     sven = Player(('foo', 'bar'))
     sven.playerize({'name': 'sven', 'password': '******'})
     sven.save()
     area = self._create_area()
     item1 = area.new_item()
     item1.build_set_keywords('item1')
     item1.build_add_type('container')
     game1 = item1.load()
     
     item2 = area.new_item()
     item2.build_set_keywords('item2')
     item2.build_add_type('container')
     game2 = item2.load()
     self.assertTrue(game1.item_types['container'].item_add(game2))
     
     item3 = area.new_item()
     item3.build_set_keywords('item3')
     game3 = item3.load()
     self.assertTrue(game2.item_types['container'].item_add(game3))
     
     sven.item_add(game1)
     
     txt = writeshiny(sven)
     self.world.log.debug(txt)
     
     sven.destruct()
     
     row = self.world.db.select('* from player where name=?', ['sven'])
     self.assertFalse(row)
     row = self.world.db.select('* from game_item where owner=?', [sven.dbid])
     self.assertFalse(row)
     
     result = readshiny(self.world, txt)
     self.world.log.debug(result)
     self.assertEqual(result, 'Character "Sven" has been successfully imported.')
     row = self.world.db.select('* from player where name=?', ['sven'])[0]
     isven = Player(('foo', 'bar'))
     isven.playerize(row)
     
     self.assertEqual(len(isven.inventory), 1)
     s1 = isven.inventory[0]
     self.assertEqual(s1.keywords, ['item1'])
     s2 = s1.item_types['container'].get_item_by_kw('item2')
     self.assertEqual(s2.keywords, ['item2'])
     s3 = s2.item_types['container'].get_item_by_kw('item3')
     self.assertEqual(s3.keywords, ['item3'])