/** * @param Bytes $bytes * @return ByteCollection */ public static function allocateBytes(Bytes $bytes) { $byteCollection = new ByteCollection(); while ($bytes->numberOfBytes() !== 0) { $largestPossible = self::findLargestUnitOfMeasurementPossible($bytes); $byteCollection->add($largestPossible); $bytes = $bytes->subtract($largestPossible->bytes()); } return $byteCollection; }
/** * @test * @dataProvider listOfAddingUnits * @param Bytes $unit1 * @param Bytes $unit2 * @param Bytes $expected */ public function shouldBeAdded(Bytes $unit1, Bytes $unit2, Bytes $expected) { $actual = $unit1->add($unit2); $this->assertEquals($expected->numberOfBytes(), $actual->numberOfBytes()); }