コード例 #1
0
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()
コード例 #2
0
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()