def test_process_primary_motion(self): # Uncompleted stringer self.string_handler = StringHandler(0) self.processor = Processor(self.string_handler, ProtocolHandler(), ExpectationHandler()) self.assertEqual(["Extend Blocker"], self.processor.process("Primary Motion")) # Completed stringer self.string_handler.stringed_disks = [0] * 8 self.assertEqual(["Ignore"], self.processor.process("Primary Motion"))
def test_process_exception(self): self.processor = Processor(StringHandler(0), ProtocolHandler(), ExpectationHandler()) self.assertEqual(["Enter Error Mode"], self.processor.process("Tertiary Motion")) self.assertEqual(["Enter Error Mode"], self.processor.process("Secondary Black")) self.assertEqual(["Enter Error Mode"], self.processor.process("Secondary White")) self.assertEqual(["Enter Error Mode"], self.processor.process("Secondary Motion")) self.assertEqual(["Enter Error Mode"], self.processor.process("Confirm Blocker Retracted")) self.assertEqual(["Enter Error Mode"], self.processor.process("Confirm Pusher Pushed")) self.assertEqual(["Enter Error Mode"], self.processor.process("Primary Black")) self.assertEqual(["Enter Error Mode"], self.processor.process("Primary White")) self.assertEqual(["Enter Error Mode"], self.processor.process("Confirm Blocker Extended"))
def test_process_ping(self): # No expired outputs self.expectations = ExpectationHandler() self.processor = Processor(StringHandler(0), ProtocolHandler(), self.expectations) self.expectations.add("in", 5, "TEST MESSAGE") for _ in range(4): self.assertEqual(["Pong"], self.processor.process("Ping")) # Expired outputs self.assertEqual(["Enter Error Mode"], self.processor.process("Ping")) self.assertEqual(["Pong"], self.processor.process("Ping")) self.expectations.add("new", 0, "TEST MESSAGE") self.assertEqual(["Enter Error Mode"], self.processor.process("Ping"))
def test_process_primary_black(self): # Unwanted color self.expectations = ExpectationHandler() self.processor = Processor(StringHandler(0), ProtocolHandler(), self.expectations) self.expectations.add("Primary Color Detected", 10, "TEST MESSAGE") self.assertEqual(["Retract Blocker"], self.processor.process("Primary Black")) # No permission from protocol self.protocol = DummyProtocolHandler(False) self.processor = Processor(StringHandler(1), self.protocol, self.expectations) self.expectations.add("Primary Color Detected", 10, "TEST MESSAGE") self.assertEqual(["Retract Blocker"], self.processor.process("Primary Black")) # Wanted and permission self.protocol = DummyProtocolHandler(True) self.processor = Processor(StringHandler(1), self.protocol, self.expectations) self.expectations.add("Primary Color Detected", 10, "TEST MESSAGE") self.assertEqual(["Push Pusher"], self.processor.process("Primary Black"))
def choose_protocol_handler(): while True: try: mode = str( input( "Do you want to connect to the protocol or use a dummy? [p/d] " )) if mode == "p": return ProtocolHandler() elif mode == "d": return DummyProtocolHandler(True) else: print("Incorrect input: enter 'p' or 'd'.") continue except ValueError: print("Incorrect input: enter 'p' or 'd'.")
class TestInit(TestCase): def test_login_exception(self): self.assertRaises(HTTPError, ProtocolHandler().login, "group11", "x") self.assertRaises(HTTPError, ProtocolHandler().login, "x", "0G1EH2HF28") self.assertRaises(HTTPError, ProtocolHandler().login, "x", "x") def test_can_pickup(self): self.protocol = ProtocolHandler() self.assertIsInstance(self.protocol.can_pickup(), bool) def test_inform_pickup(self): self.protocol = ProtocolHandler() self.assertIsInstance(self.protocol.inform_pickup(), bool) def test_inform_color(self): self.protocol = ProtocolHandler() self.protocol.inform_color(1) # Black self.protocol.inform_color(0) # White def test_inform_alive(self): self.protocol = ProtocolHandler() self.protocol.inform_alive()
def test_process_error_string_disk(self): self.processor = Processor(StringHandler(0), ProtocolHandler(), ExpectationHandler()) self.assertEqual(["Enter Error Mode"], self.processor.process("Error String Disk"))
def test_process_blocker_extended(self): self.expectations = ExpectationHandler() self.processor = Processor(StringHandler(0), ProtocolHandler(), self.expectations) self.expectations.add("Confirm Blocker Extended", 10, "TEST MESSAGE") self.assertEqual(["Scan Primary Color"], self.processor.process("Confirm Blocker Extended"))
def test_inform_color(self): self.protocol = ProtocolHandler() self.protocol.inform_color(1) # Black self.protocol.inform_color(0) # White
def test_inform_alive(self): self.protocol = ProtocolHandler() self.protocol.inform_alive()
def test_process_unknown(self): self.processor = Processor(StringHandler(69), ProtocolHandler(), ExpectationHandler()) self.assertEqual(["Enter Error Mode"], self.processor.process("Test")) self.assertEqual(["Enter Error Mode"], self.processor.process("Gibberish"))
def test_process_message_buffer_full(self): self.processor = Processor(StringHandler(0), ProtocolHandler(), ExpectationHandler()) self.assertEqual(["Enter Error Mode"], self.processor.process("Message Buffer Full"))
def test_inform_pickup(self): self.protocol = ProtocolHandler() self.assertIsInstance(self.protocol.inform_pickup(), bool)
def test_process_secondary_motion(self): self.expectations = ExpectationHandler() self.processor = Processor(StringHandler(0), ProtocolHandler(), self.expectations) self.expectations.add("Secondary Motion", 10, "TEST MESSAGE") self.assertEqual(["Scan Secondary Color"], self.processor.process("Secondary Motion"))
def test_process_pusher_pushed(self): self.expectations = ExpectationHandler() self.processor = Processor(StringHandler(0), ProtocolHandler(), self.expectations) self.expectations.add("Confirm Pusher Pushed", 10, "TEST MESSAGE") self.assertEqual(["Retract Blocker"], self.processor.process("Confirm Pusher Pushed"))
def test_process_secondary_neither(self): self.processor = Processor(StringHandler(0), ProtocolHandler(), ExpectationHandler()) self.assertEqual(["Enter Error Mode"], self.processor.process("Secondary Neither"))
def test_process_disk_stringed(self): self.expectations = ExpectationHandler() self.processor = Processor(StringHandler(0), ProtocolHandler(), self.expectations) self.expectations.add("Tertiary Motion", 10, "TEST MESSAGE") self.assertEqual(["Ignore"], self.processor.process("Tertiary Motion"))
def test_login_exception(self): self.assertRaises(HTTPError, ProtocolHandler().login, "group11", "x") self.assertRaises(HTTPError, ProtocolHandler().login, "x", "0G1EH2HF28") self.assertRaises(HTTPError, ProtocolHandler().login, "x", "x")
def test_process_blocker_retracted(self): self.expectations = ExpectationHandler() self.processor = Processor(StringHandler(0), ProtocolHandler(), self.expectations) self.expectations.add("Confirm Blocker Retracted", 10, "TEST MESSAGE") self.assertEqual(["Ignore"], self.processor.process("Confirm Blocker Retracted"))
def test_process_unexpected_error(self): self.processor = Processor(StringHandler(0), ProtocolHandler(), ExpectationHandler()) self.assertEqual(["Enter Error Mode"], self.processor.process("Unexpected Error Occurred"))
def test_process_secondary_black(self): self.expectations = ExpectationHandler() self.processor = Processor(StringHandler(0), ProtocolHandler(), self.expectations) self.expectations.add("Secondary Black Detected", 10, "TEST MESSAGE") self.assertEqual(["Push Stringer"], self.processor.process("Secondary Black"))
def test_process_unknown_command(self): self.processor = Processor(StringHandler(0), ProtocolHandler(), ExpectationHandler()) self.assertEqual(["Enter Error Mode"], self.processor.process("Unknown Command Sent"))