def test_drop_to(self): sys = UnitSystem() location = (0, 0) ops = sys.create_output_paper_stack(location) sheet = Sheet() sheet.plots[Color.Red] = 42 sys.drop_to_unit_at(sheet, location, (0, 1)) self.assertIn(sheet, ops.received_sheets)
def test_hand_to_recieving_facing_away(self): with (self.assertRaises(NoUnitAtLocationError)): sys = UnitSystem() c1 = sys.create_conveyor((0, 0)) c2 = sys.create_conveyor((1, 0)) c1.direction = Direction.North c2.direction = Direction.North c1.sheet = Sheet() c1.put()
def test_hand_to_giving_facing_away(self): with (self.assertRaises(ConveyorFacingAwayError)): sys = UnitSystem() c1 = sys.create_conveyor((0, 0)) c2 = sys.create_conveyor((1, 0)) c1.direction = Direction.East c2.direction = Direction.North c1.sheet = Sheet() c1.put()
def test_take_from(self): sys = UnitSystem() location = (0, 0) plt = sys.create_plotter(location, Color.Red) sheet = Sheet() plt.sheet = sheet plt.plot() time.sleep(plt.plot_duration_seconds * 1.5) self.assertIn(Color.Red, sheet.plots.keys()) sheet2 = sys.take_from_unit_at(location, (0, 1)) self.assertEqual(sheet, sheet2)
def test_setup_1(self): # check nothing crashes sys = UnitSystem() supervisor = SupervisorActor.start() InputActor.start(sys.create_input_paper_stack((0, 1))), OutputActor.start(sys.create_output_paper_stack((3, 1))), ConveyorActor.start(sys.create_conveyor((1, 1))), ConveyorActor.start(sys.create_conveyor((2, 1))), PlotterActor.start(sys.create_plotter((1, 0), color=Color.Red)), PlotterActor.start(sys.create_plotter((2, 0), color=Color.Green)), PlotterActor.start(sys.create_plotter((1, 3), color=Color.Yellow)), PlotterActor.start(sys.create_plotter((2, 3), color=Color.Blue)) time.sleep(10) ActorRegistry().stop_all(block=True)
def main(): unit_system = UnitSystem() supervisor = SupervisorActor.start() worker_actors = create_functional_units_and_actors(unit_system) for sheet_order in [ SheetOrder({Color.Red: 1}), SheetOrder({Color.Blue: 1}), SheetOrder({Color.Green: 1}), SheetOrder({Color.Yellow: 1}), SheetOrder({Color.Red: 1, Color.Yellow: 1}), SheetOrder({Color.Yellow: 1, Color.Green: 1}) ]: supervisor.tell(SheetOrderMessage(sheet_order)) key = 0 while key != 27: unit_system.update_image() key = cv2.waitKey() cv2.destroyAllWindows() for w_actor in worker_actors: w_actor.stop() supervisor.stop()
def create_functional_units_and_actors(sys: UnitSystem) -> List[FunctionalUnit]: return [ InputActor.start(sys.create_input_paper_stack((0, 1))), OutputActor.start(sys.create_output_paper_stack((3, 1))), ConveyorActor.start(sys.create_conveyor((1, 1))), ConveyorActor.start(sys.create_conveyor((2, 1))), PlotterActor.start(sys.create_plotter((1, 0), color=Color.Red)), PlotterActor.start(sys.create_plotter((2, 0), color=Color.Green)), PlotterActor.start(sys.create_plotter((1, 2), color=Color.Yellow)), PlotterActor.start(sys.create_plotter((2, 2), color=Color.Blue))]
def test_setup_2(self): # smaller setup sys = UnitSystem() supervisor = SupervisorActor.start() InputActor.start(sys.create_input_paper_stack((0, 1))), ops = sys.create_output_paper_stack((2, 1)) OutputActor.start(ops), ConveyorActor.start(sys.create_conveyor((1, 1))), PlotterActor.start(sys.create_plotter((1, 0), color=Color.Red)), PlotterActor.start(sys.create_plotter((1, 2), color=Color.Blue)), sheet_orders = [SheetOrder({Color.Red: 1})] for order in sheet_orders: supervisor.tell(SheetOrderMessage(order)) SleepyActor.start(20).stop(True) for order in sheet_orders: self.assertIn(order, ops.received_sheets) ActorRegistry().stop_all(block=True)
def test_unit_creation(self): sys = UnitSystem() ips = sys.create_input_paper_stack((0, 0)) self.assertIsNotNone(ips) self.assertEqual(sys, ips.unit_sytem) ops = sys.create_output_paper_stack((0, 0)) self.assertIsNotNone(ops) self.assertEqual(sys, ops.unit_sytem) plt = sys.create_plotter((0, 0), Color.Red) self.assertIsNotNone(plt) self.assertEqual(sys, plt.unit_sytem) con = sys.create_conveyor((0, 0)) self.assertIsNotNone(con)
def test_hand_to_directions(self): sys = UnitSystem() c_north = sys.create_conveyor((1, 0)) c_east = sys.create_conveyor((2, 1)) c_south = sys.create_conveyor((1, 2)) c_west = sys.create_conveyor((0, 1)) c_center = sys.create_conveyor((1, 1)) c_north.direction = Direction.South c_east.direction = Direction.West c_south.direction = Direction.North c_west.direction = Direction.East c_center.direction = Direction.North for _ in [c_north, c_east, c_south, c_west]: c_center.sheet = Sheet() c_center.put() c_center.turn_clockwise() while c_center.is_turning(): pass