def test_optimal_answer_at_end(self): """Order an item whose optimal shipment is the final warehouse A combination of warehouses prior to the final warehouse can fulfill this shipment, but the final warehouse is optimal. """ res = allocate(self.one_order_many_of_one, self.most_stock_at_end) sol = [{'name': 'owd3', 'inventory': {'apple': 10}}] self.assertEqual(res, sol)
def test_many_of_one_split_warehouses(self): """Order many of one item to be fulfilled by multiple warehouses""" res = allocate(self.one_order_many_of_one, self.mult_warehouses_split_items) sol = [{ 'name': 'owd', 'inventory': { 'apple': 5 } }, { 'name': 'dm', 'inventory': { 'apple': 5 } }] self.assertEqual(res, sol)
def test_mult_orders_mult_warehouses(self): """Order multiple items contained in multiple warehouses""" res = allocate(self.mult_orders, self.mult_warehouses) sol = [{ 'name': 'owd', 'inventory': { 'apple': 5, 'orange': 5 } }, { 'name': 'dm', 'inventory': { 'banana': 5 } }] self.assertEqual(res, sol)
def test_several_orders_many_warehouses(self): """Order multiple items from multiple warehouses. There are several combinations of warehouses that can fulfill this order. """ res = allocate(self.several_orders_mult_sol, self.many_warehouses) sol = [{ 'name': 'owd', 'inventory': { 'apple': 1, 'orange': 1 } }, { 'name': 'wh2', 'inventory': { 'apple': 6, 'banana': 4 } }] self.assertEqual(res, sol)
def test_case_one(self): orderDetails = "{\"apple\":2,\"banana\":6}" warehouseDetails = "[{\"name\":\"owd\",\"inventory\":{\"apple\":5,\"banana\":5}},{\"name\":\"dm\",\"inventory\":{\"banana\":5,\"orange\":10,\"apple\":10}}]" expectedresult = "[{'owd': {'apple': 2, 'banana': 5}}, {'dm': {'banana': 1}}]" actualtresult = ia.allocate(orderDetails, warehouseDetails) self.assertEqual(expectedresult, str(actualtresult))
def test_case_five(self): orderDetails = "{\"apple\":5}" warehouseDetails = "[{\"name\":\"dm\",\"inventory\":{\"apple\":4}}]" expectedresult = "[]" actualtresult = ia.allocate(orderDetails, warehouseDetails) self.assertEqual(expectedresult, str(actualtresult))