From 88d3fd1c3ee3207236cc0e4b9fff5a02fc42f869 Mon Sep 17 00:00:00 2001 From: Tom Date: Fri, 11 Apr 2025 12:34:47 +0200 Subject: [PATCH 1/2] Test units that we ship --- tests/EnergyTest.php | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/tests/EnergyTest.php b/tests/EnergyTest.php index f2f379b..cb04d08 100644 --- a/tests/EnergyTest.php +++ b/tests/EnergyTest.php @@ -2,7 +2,8 @@ use PHPUnit\Framework\TestCase; use Vesper\UnitConversion\Converter; -use Vesper\UnitConversion\Dimension; +use Vesper\UnitConversion\Registry; +use Vesper\UnitConversion\RegistryBuilder; use Vesper\UnitConversion\Unit; use Vesper\UnitConversion\UnitPart; @@ -16,23 +17,20 @@ protected function setUp(): void { parent::setUp(); - $this->cal = new Unit( - new UnitPart(4.184, Dimension::MASS, 1), - new UnitPart(1, Dimension::LENGTH, 2), - new UnitPart(1, Dimension::TIME, -2) - ); - $this->joule = new Unit( - new UnitPart(1, Dimension::MASS, 1), - new UnitPart(1, Dimension::LENGTH, 2), - new UnitPart(1, Dimension::TIME, -2), - ); + $registry = new Registry(); + + RegistryBuilder::build($registry); + + $this->cal = $registry->get('calorie'); + + $this->joule = $registry->get('joule'); $this->converter = new Converter(); } public function test_cal_to_joule(): void { - $this->assertEqualsWithDelta(4.184, $this->converter->convert($this->cal, $this->joule, 1), 0.0000001); + $this->assertEqualsWithDelta(4.1868, $this->converter->convert($this->cal, $this->joule, 1), 0.0000001); } public function test_joule_to_cal(): void From 68d3b3c7da572e01a19f7720bcf644229a38f237 Mon Sep 17 00:00:00 2001 From: Tom Date: Fri, 11 Apr 2025 12:48:58 +0200 Subject: [PATCH 2/2] Add watt-hour --- src/RegistryBuilder.php | 14 ++++++++++++++ tests/EnergyTest.php | 11 +++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/RegistryBuilder.php b/src/RegistryBuilder.php index 86a20e3..3902117 100644 --- a/src/RegistryBuilder.php +++ b/src/RegistryBuilder.php @@ -130,6 +130,20 @@ protected static function initEnergy(Registry $registry): void new UnitPart(1, Dimension::TIME, -2) ) ); + + static::registerSiUnit( + $registry, + 'watt-hour', + ['Wh'], + new Unit( + // watt + new UnitPart(1, Dimension::MASS, 1), + new UnitPart(1, Dimension::LENGTH, 2), + new UnitPart(1, Dimension::TIME, -3), + // hour + new UnitPart(3600, Dimension::TIME, 1) + ) + ); } protected static function initLength(Registry $registry): void diff --git a/tests/EnergyTest.php b/tests/EnergyTest.php index cb04d08..8f20aaa 100644 --- a/tests/EnergyTest.php +++ b/tests/EnergyTest.php @@ -5,12 +5,12 @@ use Vesper\UnitConversion\Registry; use Vesper\UnitConversion\RegistryBuilder; use Vesper\UnitConversion\Unit; -use Vesper\UnitConversion\UnitPart; final class EnergyTest extends TestCase { protected Unit $cal; protected Unit $joule; + protected Unit $watthour; protected Converter $converter; protected function setUp(): void @@ -25,6 +25,8 @@ protected function setUp(): void $this->joule = $registry->get('joule'); + $this->watthour = $registry->get('watt-hour'); + $this->converter = new Converter(); } @@ -35,6 +37,11 @@ public function test_cal_to_joule(): void public function test_joule_to_cal(): void { - $this->assertEqualsWithDelta(1 / 4.184, $this->converter->convert($this->joule, $this->cal, 1), 0.0000001); + $this->assertEqualsWithDelta(1, $this->converter->convert($this->joule, $this->cal, 4.1868), 0.0000001); + } + + public function test_joule_to_watt_hour(): void + { + $this->assertEqualsWithDelta(1, $this->converter->convert($this->joule, $this->watthour, 3600), 0.0000001); } }