def setUp(self):
        self.unaffected_production_unit, spec, zone = create_machine(
            material_type_input="yarn")

        self.worker = Worker()
        self.affected_production_unit = ProductionUnit(spec)

        self.inputs = Material("yarn")
        self.started_production_unit = ProductionUnit(spec)
        self.started_production_unit.perform_next_operation(self.worker)

        self.loaded_production_unit = ProductionUnit(spec)
        self.loaded_production_unit.perform_next_operation(self.worker)
        self.loaded_production_unit.perform_next_operation(self.worker)

        config = {'rate_by_minute': 0.2}
        spec_four = Specification()
        spec_four.add(
            MaterialInputConstraint(Material(type="flour", quantity=2)))
        spec_four.add(
            MaterialInputConstraint(Material(type="water", quantity=1)))
        spec_four.add_output_material(Material("bread", 1))

        self.four_a_pain = ProductionUnit(spec_four, config)

        self.four_a_pain.perform_next_operation(self.worker)
        self.four_a_pain.perform_next_operation(self.worker)
 def setUp(self):
     spec = Specification()
     spec.add(MaterialInputConstraint(Material(type="wood", quantity=1)))
     spec.add_output_material(Material("Furniture", 1))
     self.machine = ProductionUnit(spec, config={"rate_by_minute":0.25})
     self.worker = Worker()
     self.input = Material("wood", quantity=3)
Exemplo n.º 3
0
def create_machine(material_type_input="input",
                   material_type_output="output",
                   stocking_zone_size=40,
                   rate=1):
    spec = Specification()
    config = {'rate_by_minute': rate}
    spec.add(
        MaterialInputConstraint(Material(type=material_type_input,
                                         quantity=1)))
    spec.add_output_material(Material(type=material_type_output, quantity=1))
    stock_zone = StockingZone(size=stocking_zone_size)
    machine = ProductionUnit(spec, config, output_stocking_zone=stock_zone)
    return machine, spec, stock_zone
Exemplo n.º 4
0
def get_factory(yaml_conf):
    yaml = load(yaml_conf)
    factory = Factory(name=yaml["name"])
    materials = create_materials(yaml)
    for production_unit in yaml["production_units"]:
        spec = create_spec(materials, production_unit)
        config = {}
        config["rate_by_minute"] = production_unit.get("rate", 1)
        factory.add_production_unit(
            ProductionUnit(spec=spec,
                           config=config,
                           name=production_unit["name"]))

    for worker in yaml.get("workers", []):
        working_hour = worker.get("working_hour", 8) * 60
        factory.add_worker(Worker(working_hour=working_hour))
    return factory
Exemplo n.º 5
0
 def test_factory_add_production_unit(self):
     factory = Factory()
     factory.add_production_unit(ProductionUnit(None))
     self.assertEquals(len(factory.production_units), 1)
Exemplo n.º 6
0
 def test_signals_generated(self):
     pu = ProductionUnit(None)
Exemplo n.º 7
0
 def setUp(self):
     self.pu = ProductionUnit(None)
     self.pu2 = ProductionUnit(None)