function testWeightVariance() { $box = new TestBox('Box', 10, 10, 10, 10, 10, 10, 10, 10); $item = new TestItem('Item', 5, 10, 10, 10, true); $boxItems = new ItemList(); $boxItems->insert($item); $packedBox = new PackedBox($box, $boxItems, 1, 2, 3, 4); $packedBoxList = new PackedBoxList(); $packedBoxList->insert($packedBox); self::assertEquals(0, $packedBoxList->getWeightVariance()); }
public function testWeightRedistribution() { $box = new TestBox('Box', 370, 375, 60, 140, 364, 374, 40, 3000); $boxList = new BoxList(); $boxList->insert($box); $item1 = new TestItem('Item #1', 230, 330, 6, 320, true); $item2 = new TestItem('Item #2', 210, 297, 5, 187, true); $item3 = new TestItem('Item #3', 210, 297, 11, 674, true); $item4 = new TestItem('Item #4', 210, 297, 3, 82, true); $item5 = new TestItem('Item #5', 206, 295, 4, 217, true); $box1Items = new ItemList(); $box1Items->insert(clone $item1); $box1Items->insert(clone $item1); $box1Items->insert(clone $item1); $box1Items->insert(clone $item1); $box1Items->insert(clone $item1); $box1Items->insert(clone $item1); $box1Items->insert(clone $item5); $box2Items = new ItemList(); $box2Items->insert(clone $item3); $box2Items->insert(clone $item1); $box2Items->insert(clone $item1); $box2Items->insert(clone $item1); $box2Items->insert(clone $item1); $box2Items->insert(clone $item2); $box3Items = new ItemList(); $box3Items->insert(clone $item5); $box3Items->insert(clone $item4); $packedBox1 = new PackedBox($box, $box1Items, 0, 0, 0, 0); $packedBox2 = new PackedBox($box, $box2Items, 0, 0, 0, 0); $packedBox3 = new PackedBox($box, $box3Items, 0, 0, 0, 0); $packedBoxList = new PackedBoxList(); $packedBoxList->insert($packedBox1); $packedBoxList->insert($packedBox2); $packedBoxList->insert($packedBox3); $redistributor = new WeightRedistributor($boxList); $packedBoxes = $redistributor->redistributeWeight($packedBoxList); $packedItemCount = 0; foreach (clone $packedBoxes as $packedBox) { $packedItemCount += $packedBox->getItems()->count(); } self::assertEquals(3070, (int) $packedBoxes->getWeightVariance()); }