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)
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'])
def test_give_command(self): from shinymud.models.area import Area from shinymud.data import config from shinymud.models.player import Player from shinymud.commands.commands import Give area = Area.create({'name':'blarg'}) room = area.new_room() bob = Player(('bob', 'bar')) bob.mode = None bob.playerize({'name':'bob', 'password':'******'}) alice = Player(('alice', 'bar')) alice.mode = None alice.playerize({'name':'alice', 'password':'******'}) self.world.player_add(bob) self.world.player_add(alice) room.add_char(bob) room.add_char(alice) alice.location = room bob.location = room proto_npc = area.new_npc() npc = proto_npc.load() room.add_char(npc) item = area.new_item() item.build_set_keywords('bauble', bob) item.build_set_name('a bauble', bob) bob.item_add(item.load()) self.assertEqual(len(bob.inventory), 1) Give(bob, 'bauble to alice', 'give').run() self.assertEqual(len(bob.inventory), 0) self.assertEqual(len(alice.inventory), 1) to_alice = 'Bob gives you a bauble.' self.assertTrue(to_alice in alice.outq) to_bob = 'You give a bauble to Alice.' self.assertTrue(to_bob in bob.outq) Give(alice, 'bauble to shiny', 'give').run() self.assertEqual(len(alice.inventory), 0) self.assertEqual(len(npc.inventory), 1) to_alice = 'You give a bauble to %s.' % npc.name alice.world.log.debug(alice.outq) self.assertTrue(to_alice in alice.outq) to_shiny = 'Alice gives you a bauble.' self.assertTrue(to_shiny in npc.actionq) #Test Money bob.currency = 100 com = config.CURRENCY + ' to alice' #Test give one currency unit self.assertEqual(alice.currency, 0) Give(bob, com, 'give').run() self.assertEqual(bob.currency, 99) self.assertEqual(alice.currency, 1) #test give multiple currencies com = '99' + config.CURRENCY + ' to alice' Give(bob, com, 'give').run() self.assertEqual(bob.currency, 0) self.assertEqual(alice.currency, 100) #test give more than bob has com = '1000' + config.CURRENCY + ' to alice' Give(bob, com, 'give').run() self.assertEqual(bob.currency, 0) self.assertEqual(alice.currency, 100)
def test_give_command(self): from shinymud.models.area import Area from shinymud.data import config from shinymud.models.player import Player from shinymud.commands.commands import Give area = Area.create({'name': 'blarg'}) room = area.new_room() bob = Player(('bob', 'bar')) bob.mode = None bob.playerize({'name': 'bob', 'password': '******'}) alice = Player(('alice', 'bar')) alice.mode = None alice.playerize({'name': 'alice', 'password': '******'}) self.world.player_add(bob) self.world.player_add(alice) room.add_char(bob) room.add_char(alice) alice.location = room bob.location = room proto_npc = area.new_npc() npc = proto_npc.load() room.add_char(npc) item = area.new_item() item.build_set_keywords('bauble', bob) item.build_set_name('a bauble', bob) bob.item_add(item.load()) self.assertEqual(len(bob.inventory), 1) Give(bob, 'bauble to alice', 'give').run() self.assertEqual(len(bob.inventory), 0) self.assertEqual(len(alice.inventory), 1) to_alice = 'Bob gives you a bauble.' self.assertTrue(to_alice in alice.outq) to_bob = 'You give a bauble to Alice.' self.assertTrue(to_bob in bob.outq) Give(alice, 'bauble to shiny', 'give').run() self.assertEqual(len(alice.inventory), 0) self.assertEqual(len(npc.inventory), 1) to_alice = 'You give a bauble to %s.' % npc.name alice.world.log.debug(alice.outq) self.assertTrue(to_alice in alice.outq) to_shiny = 'Alice gives you a bauble.' self.assertTrue(to_shiny in npc.actionq) #Test Money bob.currency = 100 com = config.CURRENCY + ' to alice' #Test give one currency unit self.assertEqual(alice.currency, 0) Give(bob, com, 'give').run() self.assertEqual(bob.currency, 99) self.assertEqual(alice.currency, 1) #test give multiple currencies com = '99' + config.CURRENCY + ' to alice' Give(bob, com, 'give').run() self.assertEqual(bob.currency, 0) self.assertEqual(alice.currency, 100) #test give more than bob has com = '1000' + config.CURRENCY + ' to alice' Give(bob, com, 'give').run() self.assertEqual(bob.currency, 0) self.assertEqual(alice.currency, 100)