diff --git a/source/PhysicalQuantity/Storage.php b/source/PhysicalQuantity/Storage.php new file mode 100644 index 0000000..7543354 --- /dev/null +++ b/source/PhysicalQuantity/Storage.php @@ -0,0 +1,51 @@ +addAlias('B'); + static::addUnit($unit); + + // Bit + $unit = UnitOfMeasure::linearUnitFactory('bit', 0.125); + $unit->addAlias('b'); + static::addUnit($unit); + + // kilobyte (KB) + $unit = UnitOfMeasure::linearUnitFactory('kilobyte', 1024); + $unit->addAlias('KB'); + static::addUnit($unit); + + // megabyte (MB) + $unit = UnitOfMeasure::linearUnitFactory('megabyte', 1048576); + $unit->addAlias('MB'); + static::addUnit($unit); + + // gigabyte (GB) + $unit = UnitOfMeasure::linearUnitFactory('gigabyte', 1073741824); + $unit->addAlias('GB'); + static::addUnit($unit); + + // terabyte (TB) + $unit = UnitOfMeasure::linearUnitFactory('terabyte', 1099511627776); + $unit->addAlias('TB'); + static::addUnit($unit); + + // petabyte (PB) + $unit = UnitOfMeasure::linearUnitFactory('petabyte', 1125899906842624); + $unit->addAlias('PB'); + static::addUnit($unit); + + } +} diff --git a/tests/PhysicalQuantity/StorageTest.php b/tests/PhysicalQuantity/StorageTest.php new file mode 100644 index 0000000..3f52cba --- /dev/null +++ b/tests/PhysicalQuantity/StorageTest.php @@ -0,0 +1,48 @@ +assertEquals(1, (new Storage(1, 'byte'))->toUnit('B')); + } + + public function testByteToBit() + { + $this->assertEquals(40, (new Storage(5, 'byte'))->toUnit('bit')); + } + + public function testBitToByte() + { + $this->assertEquals(1.25, (new Storage(10, 'b'))->toUnit('B')); + } + + public function testMegabyteToByte() + { + $this->assertEquals(1048576, (new Storage(1, 'MB'))->toUnit('B')); + } + + public function testGigabyteToByte() + { + $this->assertEquals(1073741824, (new Storage(1, 'gigabyte'))->toUnit('byte')); + } + + public function testTerabyteToByte() + { + $this->assertEquals(1099511627776, (new Storage(1, 'TB'))->toUnit('byte')); + } + + public function testPetabyteToByte() + { + $this->assertEquals(3377699720527872, (new Storage(3, 'PB'))->toUnit('byte')); + } +}