class TestOffers():#unittest.TestCase): def setUp(self): self.server = TestbedServer() self.sock1 = self.server.connection(1) self.p1 = self.server.map_login('Apple') if not self.p1: self.sock1.sendlines('Apple', 'password') self.p1 = self.server.map_login('Apple') if not self.p1: self.sock1.sendlines('new', 'Apple', 'password', '1', '1') self.p1 = self.server.map_login('Apple') self.sock2 = self.server.connection(2) self.p2 = self.server.map_login('Orange') if not self.p2: self.sock2.sendlines('Orange', 'password') self.p2 = self.server.map_login('Orange') if not self.p2: self.sock2.sendlines('new', 'Orange', 'password', '1', '2') self.p2 = self.server.map_login('Orange') self.sock3 = self.server.connection(3) self.p3 = self.server.map_login('Banana') if not self.p3: self.sock3.sendlines('Banana', 'password') self.p3 = self.server.map_login('Banana') if not self.p3: self.sock3.sendlines('new', 'Banana', 'password', '2', '2') self.p3 = self.server.map_login('Banana') def test_give_blank_as_give(self): self.sock1.sendline('give') self.assertIn('Give what?', self.sock1.script) def test_give_blank_as_offer(self): #TODO: This is not desired behavior, but the operation is correct as-is self.sock1.sendline('offer') self.assertIn('Give what?', self.sock1.script) def test_give_invalid_direct_no_recipient_as_give(self): self.sock1.sendline('give clue') self.assertIn('Give to whom?', self.sock1.script) def test_give_invalid_direct_no_recipient_as_offer(self): #TODO: This is not desired behavior, but the operation is correct as-is self.sock1.sendline('offer clue') self.assertIn('Give to whom?', self.sock1.script) def test_give_invalid_direct_valid_recipient(self): self.sock1.sendline('give clue orange') self.assertIn("You don't have that.", self.sock1.script) def test_give_no_recipient_as_give(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('give protractor') self.assertIn('Give to whom?', self.sock1.script) self.sock1.sendlines('e', 'drop protractor', 'w') def test_give_no_recipient_as_offer(self): #TODO: This is not desired behavior, but the operation is correct as-is self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('offer protractor') self.assertIn('Give to whom?', self.sock1.script) self.sock1.sendlines('e', 'drop protractor', 'w') def test_give_self_recipient(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('give protractor self') self.assertIn('You already have it.', self.sock1.script) self.sock1.sendlines('e', 'drop protractor', 'w') def test_give_invalid_recipient(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('give protractor reggie') self.assertIn("They're not here.", self.sock1.script) self.sock1.sendlines('e', 'drop protractor', 'w') def test_give_to_invalid_recipient(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('give protractor to reggie') self.assertIn("They're not here.", self.sock1.script) self.sock1.sendlines('e', 'drop protractor', 'w') def test_give_single_offer_full_expiry(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('give protractor orange') self.assertIn('You offer an Exacto-brand protractor to Orange.', self.sock1.script) self.assertIn('Apple offers an Exacto-brand protractor to you.', self.sock2.script) self.assertIn('Apple offers an Exacto-brand protractor to Orange.', self.sock3.script) self.sock1.sendline('give protractor orange') self.assertIn('You have already offered that to Orange.', self.sock1.script) self.server.zip_tasks() self.server.run_tasks() self.assertIn('You have yet to accept or refuse the offer of an Exacto-brand protractor by Apple.', self.sock2.script) self.server.zip_tasks() self.server.run_tasks() self.assertIn('The offer of an Exacto-brand protractor from Apple can no longer be accepted.', self.sock2.script) self.assertIn('Your offer of an Exacto-brand protractor to Orange has been abandoned.', self.sock1.script) self.sock2.sendline('accept') self.assertIn('You have not been offered anything recently.', self.sock2.script) self.sock1.sendlines('e', 'drop protractor', 'w') self.assertIn('You drop an Exacto-brand protractor.', self.sock1.script) def test_give_single_offer_partial_expiry_refuse(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('offer protractor orange') self.server.zip_tasks() self.server.run_tasks() self.assertIn('You have yet to accept or refuse the offer of an Exacto-brand protractor by Apple.', self.sock2.script) self.sock2.sendline('refuse') self.assertIn('Orange refuses an Exacto-brand protractor from you.', self.sock1.script) self.assertIn('You refuse an Exacto-brand protractor from Apple.', self.sock2.script) self.assertIn('Orange refuses an Exacto-brand protractor from Apple.', self.sock3.script) self.sock2.sendline('reject') self.assertIn('You have not been offered anything recently.', self.sock2.script) self.sock1.sendlines('e', 'drop protractor', 'w') self.assertIn('You drop an Exacto-brand protractor.', self.sock1.script) def test_give_single_offer_partial_expiry_accept(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('offer protractor orange') self.server.zip_tasks() self.server.run_tasks() self.assertIn('You have yet to accept or refuse the offer of an Exacto-brand protractor by Apple.', self.sock2.script) self.sock2.sendline('accept') self.assertIn('Orange accepts an Exacto-brand protractor from you.', self.sock1.script) self.assertIn('You accept an Exacto-brand protractor from Apple.', self.sock2.script) self.assertIn('Orange accepts an Exacto-brand protractor from Apple.', self.sock3.script) self.sock2.sendline('reject') self.assertIn('You have not been offered anything recently.', self.sock2.script) self.sock1.sendlines('e', 'drop protractor', 'w') self.assertNotIn('You drop an Exacto-brand protractor.', self.sock1.script) self.sock2.sendlines('e', 'drop protractor', 'w') self.assertIn('You drop an Exacto-brand protractor.', self.sock2.script) def test_give_single_offer_immediate_refuse(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('offer protractor orange') self.sock2.sendline('refuse') self.assertIn('Orange refuses an Exacto-brand protractor from you.', self.sock1.script) self.assertIn('You refuse an Exacto-brand protractor from Apple.', self.sock2.script) self.assertIn('Orange refuses an Exacto-brand protractor from Apple.', self.sock3.script) self.sock2.sendline('reject') self.assertIn('You have not been offered anything recently.', self.sock2.script) self.sock1.sendlines('e', 'drop protractor', 'w') self.assertIn('You drop an Exacto-brand protractor.', self.sock1.script) def test_give_single_offer_immediate_accept(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('offer protractor orange') self.sock2.sendline('accept') self.assertIn('Orange accepts an Exacto-brand protractor from you.', self.sock1.script) self.assertIn('You accept an Exacto-brand protractor from Apple.', self.sock2.script) self.assertIn('Orange accepts an Exacto-brand protractor from Apple.', self.sock3.script) self.sock2.sendline('reject') self.assertIn('You have not been offered anything recently.', self.sock2.script) self.sock1.sendlines('e', 'drop protractor', 'w') self.assertNotIn('You drop an Exacto-brand protractor.', self.sock1.script) self.sock2.sendlines('e', 'drop protractor', 'w') self.assertIn('You drop an Exacto-brand protractor.', self.sock2.script) def test_give_multipoint(self): self.sock1.sendlines('e', 'get protractor', 'w', 'offer exacto banana', 'offer exacto orange') self.assertIn('Apple offers an Exacto-brand protractor to you.', self.sock2.script) self.assertIn('Apple offers an Exacto-brand protractor to you.', self.sock3.script) self.sock2.sendline('accept') self.assertIn('Orange accepts an Exacto-brand protractor from you.', self.sock1.script) self.assertIn('You accept an Exacto-brand protractor from Apple.', self.sock2.script) self.assertIn('Orange accepts an Exacto-brand protractor from Apple.', self.sock3.script) self.sock3.sendline('accept') self.assertIn('can no longer be accepted.', self.sock3.script) self.sock3.sendline('accept') self.assertIn('You have not been offered anything recently.', self.sock3.script) self.sock2.sendlines('e', 'drop protractor', 'w') self.assertIn('You drop an Exacto-brand protractor.', self.sock2.script) def test_accept_no_offers(self): self.sock1.sendline('accept') self.assertIn('You have not been offered anything recently.', self.sock1.script) def tearDown(self): print '-------- Apple (socket 1)' print self.sock1.script print '-------- Orange (socket 2)' print self.sock2.script print '-------- Banana (socket 3)' print self.sock3.script self.server.flush_pool()
class TestOffers(): #unittest.TestCase): def setUp(self): self.server = TestbedServer() self.sock1 = self.server.connection(1) self.p1 = self.server.map_login('Apple') if not self.p1: self.sock1.sendlines('Apple', 'password') self.p1 = self.server.map_login('Apple') if not self.p1: self.sock1.sendlines('new', 'Apple', 'password', '1', '1') self.p1 = self.server.map_login('Apple') self.sock2 = self.server.connection(2) self.p2 = self.server.map_login('Orange') if not self.p2: self.sock2.sendlines('Orange', 'password') self.p2 = self.server.map_login('Orange') if not self.p2: self.sock2.sendlines('new', 'Orange', 'password', '1', '2') self.p2 = self.server.map_login('Orange') self.sock3 = self.server.connection(3) self.p3 = self.server.map_login('Banana') if not self.p3: self.sock3.sendlines('Banana', 'password') self.p3 = self.server.map_login('Banana') if not self.p3: self.sock3.sendlines('new', 'Banana', 'password', '2', '2') self.p3 = self.server.map_login('Banana') def test_give_blank_as_give(self): self.sock1.sendline('give') self.assertIn('Give what?', self.sock1.script) def test_give_blank_as_offer(self): #TODO: This is not desired behavior, but the operation is correct as-is self.sock1.sendline('offer') self.assertIn('Give what?', self.sock1.script) def test_give_invalid_direct_no_recipient_as_give(self): self.sock1.sendline('give clue') self.assertIn('Give to whom?', self.sock1.script) def test_give_invalid_direct_no_recipient_as_offer(self): #TODO: This is not desired behavior, but the operation is correct as-is self.sock1.sendline('offer clue') self.assertIn('Give to whom?', self.sock1.script) def test_give_invalid_direct_valid_recipient(self): self.sock1.sendline('give clue orange') self.assertIn("You don't have that.", self.sock1.script) def test_give_no_recipient_as_give(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('give protractor') self.assertIn('Give to whom?', self.sock1.script) self.sock1.sendlines('e', 'drop protractor', 'w') def test_give_no_recipient_as_offer(self): #TODO: This is not desired behavior, but the operation is correct as-is self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('offer protractor') self.assertIn('Give to whom?', self.sock1.script) self.sock1.sendlines('e', 'drop protractor', 'w') def test_give_self_recipient(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('give protractor self') self.assertIn('You already have it.', self.sock1.script) self.sock1.sendlines('e', 'drop protractor', 'w') def test_give_invalid_recipient(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('give protractor reggie') self.assertIn("They're not here.", self.sock1.script) self.sock1.sendlines('e', 'drop protractor', 'w') def test_give_to_invalid_recipient(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('give protractor to reggie') self.assertIn("They're not here.", self.sock1.script) self.sock1.sendlines('e', 'drop protractor', 'w') def test_give_single_offer_full_expiry(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('give protractor orange') self.assertIn('You offer an Exacto-brand protractor to Orange.', self.sock1.script) self.assertIn('Apple offers an Exacto-brand protractor to you.', self.sock2.script) self.assertIn('Apple offers an Exacto-brand protractor to Orange.', self.sock3.script) self.sock1.sendline('give protractor orange') self.assertIn('You have already offered that to Orange.', self.sock1.script) self.server.zip_tasks() self.server.run_tasks() self.assertIn( 'You have yet to accept or refuse the offer of an Exacto-brand protractor by Apple.', self.sock2.script) self.server.zip_tasks() self.server.run_tasks() self.assertIn( 'The offer of an Exacto-brand protractor from Apple can no longer be accepted.', self.sock2.script) self.assertIn( 'Your offer of an Exacto-brand protractor to Orange has been abandoned.', self.sock1.script) self.sock2.sendline('accept') self.assertIn('You have not been offered anything recently.', self.sock2.script) self.sock1.sendlines('e', 'drop protractor', 'w') self.assertIn('You drop an Exacto-brand protractor.', self.sock1.script) def test_give_single_offer_partial_expiry_refuse(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('offer protractor orange') self.server.zip_tasks() self.server.run_tasks() self.assertIn( 'You have yet to accept or refuse the offer of an Exacto-brand protractor by Apple.', self.sock2.script) self.sock2.sendline('refuse') self.assertIn('Orange refuses an Exacto-brand protractor from you.', self.sock1.script) self.assertIn('You refuse an Exacto-brand protractor from Apple.', self.sock2.script) self.assertIn('Orange refuses an Exacto-brand protractor from Apple.', self.sock3.script) self.sock2.sendline('reject') self.assertIn('You have not been offered anything recently.', self.sock2.script) self.sock1.sendlines('e', 'drop protractor', 'w') self.assertIn('You drop an Exacto-brand protractor.', self.sock1.script) def test_give_single_offer_partial_expiry_accept(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('offer protractor orange') self.server.zip_tasks() self.server.run_tasks() self.assertIn( 'You have yet to accept or refuse the offer of an Exacto-brand protractor by Apple.', self.sock2.script) self.sock2.sendline('accept') self.assertIn('Orange accepts an Exacto-brand protractor from you.', self.sock1.script) self.assertIn('You accept an Exacto-brand protractor from Apple.', self.sock2.script) self.assertIn('Orange accepts an Exacto-brand protractor from Apple.', self.sock3.script) self.sock2.sendline('reject') self.assertIn('You have not been offered anything recently.', self.sock2.script) self.sock1.sendlines('e', 'drop protractor', 'w') self.assertNotIn('You drop an Exacto-brand protractor.', self.sock1.script) self.sock2.sendlines('e', 'drop protractor', 'w') self.assertIn('You drop an Exacto-brand protractor.', self.sock2.script) def test_give_single_offer_immediate_refuse(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('offer protractor orange') self.sock2.sendline('refuse') self.assertIn('Orange refuses an Exacto-brand protractor from you.', self.sock1.script) self.assertIn('You refuse an Exacto-brand protractor from Apple.', self.sock2.script) self.assertIn('Orange refuses an Exacto-brand protractor from Apple.', self.sock3.script) self.sock2.sendline('reject') self.assertIn('You have not been offered anything recently.', self.sock2.script) self.sock1.sendlines('e', 'drop protractor', 'w') self.assertIn('You drop an Exacto-brand protractor.', self.sock1.script) def test_give_single_offer_immediate_accept(self): self.sock1.sendlines('e', 'get protractor', 'w') self.sock1.sendline('offer protractor orange') self.sock2.sendline('accept') self.assertIn('Orange accepts an Exacto-brand protractor from you.', self.sock1.script) self.assertIn('You accept an Exacto-brand protractor from Apple.', self.sock2.script) self.assertIn('Orange accepts an Exacto-brand protractor from Apple.', self.sock3.script) self.sock2.sendline('reject') self.assertIn('You have not been offered anything recently.', self.sock2.script) self.sock1.sendlines('e', 'drop protractor', 'w') self.assertNotIn('You drop an Exacto-brand protractor.', self.sock1.script) self.sock2.sendlines('e', 'drop protractor', 'w') self.assertIn('You drop an Exacto-brand protractor.', self.sock2.script) def test_give_multipoint(self): self.sock1.sendlines('e', 'get protractor', 'w', 'offer exacto banana', 'offer exacto orange') self.assertIn('Apple offers an Exacto-brand protractor to you.', self.sock2.script) self.assertIn('Apple offers an Exacto-brand protractor to you.', self.sock3.script) self.sock2.sendline('accept') self.assertIn('Orange accepts an Exacto-brand protractor from you.', self.sock1.script) self.assertIn('You accept an Exacto-brand protractor from Apple.', self.sock2.script) self.assertIn('Orange accepts an Exacto-brand protractor from Apple.', self.sock3.script) self.sock3.sendline('accept') self.assertIn('can no longer be accepted.', self.sock3.script) self.sock3.sendline('accept') self.assertIn('You have not been offered anything recently.', self.sock3.script) self.sock2.sendlines('e', 'drop protractor', 'w') self.assertIn('You drop an Exacto-brand protractor.', self.sock2.script) def test_accept_no_offers(self): self.sock1.sendline('accept') self.assertIn('You have not been offered anything recently.', self.sock1.script) def tearDown(self): print '-------- Apple (socket 1)' print self.sock1.script print '-------- Orange (socket 2)' print self.sock2.script print '-------- Banana (socket 3)' print self.sock3.script self.server.flush_pool()