public function testPackFiveItemsTwoLargeOneSmallBox()
{
$box1 = new TestBox('Le petite box', 600, 600, 10, 10, 596, 596, 8, 1000);
$box2 = new TestBox('Le grande box', 3000, 3000, 50, 100, 2960, 2960, 40, 10000);
$item1 = new TestItem('Item 1', 2500, 2500, 20, 500, true);
$item2 = new TestItem('Item 2', 550, 550, 2, 500, true);
$item3 = new TestItem('Item 3', 2500, 2500, 20, 500, true);
$item4 = new TestItem('Item 4', 2500, 2500, 20, 500, true);
$item5 = new TestItem('Item 5', 2500, 2500, 20, 500, true);
$packer = new Packer();
$packer->addBox($box1);
$packer->addBox($box2);
$packer->addItem($item1);
$packer->addItem($item2);
$packer->addItem($item3);
$packer->addItem($item4);
$packer->addItem($item5);
$packedBoxes = $packer->pack();
self::assertEquals(3, $packedBoxes->count());
self::assertEquals(2, $packedBoxes->top()->getItems()->count());
self::assertEquals($box2, $packedBoxes->top()->getBox());
self::assertEquals(1100, $packedBoxes->top()->getWeight());
$packedBoxes->extract();
self::assertEquals(2, $packedBoxes->top()->getItems()->count());
self::assertEquals($box2, $packedBoxes->top()->getBox());
self::assertEquals(1100, $packedBoxes->top()->getWeight());
$packedBoxes->extract();
self::assertEquals(1, $packedBoxes->top()->getItems()->count());
self::assertEquals($box1, $packedBoxes->top()->getBox());
self::assertEquals(510, $packedBoxes->top()->getWeight());
}