/** * Configure all the standard units of measure * to which this quantity can be converted. * * @return void */ public function __construct($value, $unit) { parent::__construct($value, $unit); // Degrees $new_unit = new UnitOfMeasure('°', function ($x) { return $x; }, function ($x) { return $x; }); $new_unit->addAlias('deg'); $new_unit->addAlias('degs'); $new_unit->addAlias('degree'); $new_unit->addAlias('degrees'); $this->registerUnitOfMeasure($new_unit); // Radians $new_unit = new UnitOfMeasure('rad', function ($x) { return $x * M_PI / 180; }, function ($x) { return $x / M_PI * 180; }); $new_unit->addAlias('rads'); $new_unit->addAlias('radian'); $new_unit->addAlias('radians'); $this->registerUnitOfMeasure($new_unit); }
/** * Configure all the standard units of measure * to which this quantity can be converted. * * @return void */ public function __construct($value, $unit) { parent::__construct($value, $unit); // Degree Kelvin $new_unit = new UnitOfMeasure('°K', function ($x) { return $x; }, function ($x) { return $x; }); $new_unit->addAlias('K'); $new_unit->addAlias('kelvin'); $this->registerUnitOfMeasure($new_unit); // Degree Celsius $new_unit = new UnitOfMeasure('°C', function ($x) { return $x - 273.15; }, function ($x) { return $x + 273.15; }); $new_unit->addAlias('C'); $new_unit->addAlias('celsius'); $this->registerUnitOfMeasure($new_unit); // Degree Fahrenheit $new_unit = new UnitOfMeasure('°F', function ($x) { return $x * 9 / 5 - 459.67; }, function ($x) { return ($x + 459.67) * 5 / 9; }); $new_unit->addAlias('F'); $new_unit->addAlias('fahrenheit'); $this->registerUnitOfMeasure($new_unit); }
/** * Configure all the standard units of measure * to which this quantity can be converted. * * @return void */ public function __construct($value, $unit) { parent::__construct($value, $unit); // Second $new_unit = new UnitOfMeasure('s', function ($x) { return $x; }, function ($x) { return $x; }); $new_unit->addAlias('sec'); $new_unit->addAlias('secs'); $new_unit->addAlias('second'); $new_unit->addAlias('seconds'); $this->registerUnitOfMeasure($new_unit); // Minutes $new_unit = new UnitOfMeasure('m', function ($x) { return $x / 60; }, function ($x) { return $x * 60; }); $new_unit->addAlias('min'); $new_unit->addAlias('mins'); $new_unit->addAlias('minute'); $new_unit->addAlias('minutes'); $this->registerUnitOfMeasure($new_unit); // Hours $new_unit = new UnitOfMeasure('h', function ($x) { return $x / 3600; }, function ($x) { return $x * 3600; }); $new_unit->addAlias('hr'); $new_unit->addAlias('hrs'); $new_unit->addAlias('hour'); $new_unit->addAlias('hours'); $this->registerUnitOfMeasure($new_unit); // Days $new_unit = new UnitOfMeasure('d', function ($x) { return $x / 86400; }, function ($x) { return $x * 86400; }); $new_unit->addAlias('day'); $new_unit->addAlias('days'); $this->registerUnitOfMeasure($new_unit); // Weeks, understood as 7 days $new_unit = new UnitOfMeasure('w', function ($x) { return $x / 604800; }, function ($x) { return $x * 604800; }); $new_unit->addAlias('wk'); $new_unit->addAlias('wks'); $new_unit->addAlias('week'); $new_unit->addAlias('weeks'); $this->registerUnitOfMeasure($new_unit); }
/** * Configure all the standard units of measure * to which this quantity can be converted. * * @return void */ public function __construct($value, $unit) { parent::__construct($value, $unit); // meter per second $new_unit = new UnitOfMeasure('m/s', function ($x) { return $x; }, function ($x) { return $x; }); $new_unit->addAlias('meters per second'); $new_unit->addAlias('meter per second'); $this->registerUnitOfMeasure($new_unit); }
/** * Configure all the standard units of measure * to which this quantity can be converted. * * @return void */ public function __construct($value, $unit) { parent::__construct($value, $unit); // Ampere $new_unit = new UnitOfMeasure('A', function ($x) { return $x; }, function ($x) { return $x; }); $new_unit->addAlias('amp'); $new_unit->addAlias('amps'); $new_unit->addAlias('ampere'); $new_unit->addAlias('amperes'); $this->registerUnitOfMeasure($new_unit); }
/** * @covers \PhpUnitsOfMeasure\UnitOfMeasure::addAlias * @covers \PhpUnitsOfMeasure\UnitOfMeasure::isAliasOf */ public function testIsNotAliasOf() { $uom = new UnitOfMeasure('quatloos', function ($x) { return $x; }, function ($x) { return $x; }); $uom->addAlias('ooltauqs'); $this->assertFalse($uom->isAliasOf('wampii')); }
/** * Configure all the standard units of measure * to which this quantity can be converted. * * @return void */ public function __construct($value, $unit) { parent::__construct($value, $unit); // Pascal $new_unit = new UnitOfMeasure('Pa', function ($x) { return $x; }, function ($x) { return $x; }); $new_unit->addAlias('pascal'); $this->registerUnitOfMeasure($new_unit); // Atmosphere $new_unit = new UnitOfMeasure('atm', function ($x) { return $x / 101325; }, function ($x) { return $x * 101325; }); $new_unit->addAlias('atmosphere'); $new_unit->addAlias('atmospheres'); $this->registerUnitOfMeasure($new_unit); // Bar $new_unit = new UnitOfMeasure('bar', function ($x) { return $x / 100000.0; }, function ($x) { return $x * 100000.0; }); $new_unit->addAlias('bar'); $this->registerUnitOfMeasure($new_unit); // Inch of Mercury $new_unit = new UnitOfMeasure('inHg', function ($x) { return $x / 3386.389; }, function ($x) { return $x * 3386.389; }); $new_unit->addAlias('inches of mercury'); $this->registerUnitOfMeasure($new_unit); // Milimeter of Mercury $new_unit = new UnitOfMeasure('mmHg', function ($x) { return $x / 133.3224; }, function ($x) { return $x * 133.3224; }); $new_unit->addAlias('milimeters of mercury'); $new_unit->addAlias('torr'); $this->registerUnitOfMeasure($new_unit); // Pound per Square Inch $new_unit = new UnitOfMeasure('psi', function ($x) { return $x / 6894.757; }, function ($x) { return $x * 6894.757; }); $new_unit->addAlias('pounds per square inch'); $this->registerUnitOfMeasure($new_unit); }
/** * Configure all the standard units of measure * to which this quantity can be converted. * * @return void */ public function __construct($value, $unit) { parent::__construct($value, $unit); // Candela $new_unit = new UnitOfMeasure('cd', function ($x) { return $x; }, function ($x) { return $x; }); $new_unit->addAlias('candela'); $this->registerUnitOfMeasure($new_unit); }
/** * @covers \PhpUnitsOfMeasure\UnitOfMeasure::isAliasOf * @expectedException \PhpUnitsOfMeasure\Exception\NonStringUnitName */ public function testIsAliasOfWithNonStringAlias() { $uom = new UnitOfMeasure('quatloos', function ($valueInNativeUnit) { return $valueInNativeUnit; }, function ($valueInThisUnit) { return $valueInThisUnit; }); $uom->addAlias('ooltauqs'); $this->assertFalse($uom->isAliasOf(42)); }
/** * Configure all the standard units of measure * to which this quantity can be converted. * * @return void */ public function __construct($value, $unit) { parent::__construct($value, $unit); // Kilogram $new_unit = new UnitOfMeasure('kg', function ($x) { return $x; }, function ($x) { return $x; }); $new_unit->addAlias('kilogram'); $new_unit->addAlias('kilograms'); $this->registerUnitOfMeasure($new_unit); // Milligram $new_unit = new UnitOfMeasure('mg', function ($x) { return $x / 1.0E-6; }, function ($x) { return $x * 1.0E-6; }); $new_unit->addAlias('milligram'); $new_unit->addAlias('milligrams'); $this->registerUnitOfMeasure($new_unit); // Centigram $new_unit = new UnitOfMeasure('cg', function ($x) { return $x / 1.0E-5; }, function ($x) { return $x * 1.0E-5; }); $new_unit->addAlias('centigram'); $new_unit->addAlias('centigrams'); $this->registerUnitOfMeasure($new_unit); // Gram $new_unit = new UnitOfMeasure('g', function ($x) { return $x / 0.001; }, function ($x) { return $x * 0.001; }); $new_unit->addAlias('gram'); $new_unit->addAlias('grams'); $this->registerUnitOfMeasure($new_unit); // Tonne (metric) $new_unit = new UnitOfMeasure('t', function ($x) { return $x / 1000.0; }, function ($x) { return $x * 1000.0; }); $new_unit->addAlias('ton'); $new_unit->addAlias('tons'); $new_unit->addAlias('tonne'); $new_unit->addAlias('tonnes'); $this->registerUnitOfMeasure($new_unit); // Pound $new_unit = new UnitOfMeasure('lb', function ($x) { return $x / 0.4535924; }, function ($x) { return $x * 0.4535924; }); $new_unit->addAlias('lbs'); $new_unit->addAlias('pound'); $new_unit->addAlias('pounds'); $this->registerUnitOfMeasure($new_unit); // Ounce $new_unit = new UnitOfMeasure('oz', function ($x) { return $x / 0.02834952; }, function ($x) { return $x * 0.02834952; }); $new_unit->addAlias('ounce'); $new_unit->addAlias('ounces'); $this->registerUnitOfMeasure($new_unit); }
public function testCreatingNewUnitsForQuantities() { // New units of measure can be defined and registered // with physical quantities on the fly. // Here, we create three new units, demonstrating the 3 // different methods for instantiating them. These units // will exist in addition to the units that come 'out of // the box' for the given quantity, once they're registered // with the static addUnit(). // The linear unit factory is useful for defining new // units that are a simple scaling factor conversion // to the quantity's native unit of measure. // In this case there are 4.5 bbbb's in the native unit of measure. $unitA = UnitOfMeasure::linearUnitFactory('bbbb', 4.5); Wigginess::addUnit($unitA); // Using the native unit factory method is equivalent to a // linear unit with a factor of 1. It's convenient for creating // a unit to represent the native unit of measure. $unitB = UnitOfMeasure::nativeUnitFactory('aaaa'); Wigginess::addUnit($unitB); // The long form constructor is necessary for units // that don't have simple scaling factor functions for // their conversions. For this unit we'll also add 2 more // aliases (dddd and eeee) that serve as equivalent names // for the unit's real name (cccc). $unitC = new UnitOfMeasure('cccc', function ($valueInNativeUnit) { return $valueInNativeUnit - 100; }, function ($valueInThisUnit) { return $valueInThisUnit + 100; }); $unitC->addAlias('dddd'); $unitC->addAlias('eeee'); Wigginess::addUnit($unitC); // Here we can see that the units defined above // convert as expected with the built-in units. $a = new Wigginess(21, 'sopees'); $this->assertSame(21, $a->toUnit('aaaa')); $this->assertSame(21 / 4.5, $a->toUnit('bbbb')); $this->assertSame(21 - 100, $a->toUnit('cccc')); $this->assertSame(21 - 100, $a->toUnit('dddd')); $this->assertSame(21 - 100, $a->toUnit('eeee')); $b = new Wigginess(21, 'tumpets'); $this->assertSame(21 * 2.5, $b->toUnit('aaaa')); $this->assertSame(21 / 4.5 * 2.5, $b->toUnit('bbbb')); $this->assertSame(21 * 2.5 - 100, $b->toUnit('cccc')); $this->assertSame(21 * 2.5 - 100, $b->toUnit('dddd')); $this->assertSame(21 * 2.5 - 100, $b->toUnit('eeee')); }
/** * Configure all the standard units of measure * to which this quantity can be converted. * * @return void */ public function __construct($value, $unit) { parent::__construct($value, $unit); // Cubic meter $new_unit = new UnitOfMeasure('m^3', function ($x) { return $x; }, function ($x) { return $x; }); $new_unit->addAlias('m³'); $new_unit->addAlias('cubic meter'); $new_unit->addAlias('cubic meters'); $this->registerUnitOfMeasure($new_unit); // Cubic millimeter $new_unit = new UnitOfMeasure('mm^3', function ($x) { return $x / 1.0E-9; }, function ($x) { return $x * 1.0E-9; }); $new_unit->addAlias('mm³'); $new_unit->addAlias('cubic millimeter'); $new_unit->addAlias('cubic millimeters'); $this->registerUnitOfMeasure($new_unit); // Cubic centimeter $new_unit = new UnitOfMeasure('cm^3', function ($x) { return $x / 1.0E-6; }, function ($x) { return $x * 1.0E-6; }); $new_unit->addAlias('cm³'); $new_unit->addAlias('cubic centimeter'); $new_unit->addAlias('cubic centimeters'); $this->registerUnitOfMeasure($new_unit); // Cubic decimeter $new_unit = new UnitOfMeasure('dm^3', function ($x) { return $x / 0.001; }, function ($x) { return $x * 0.001; }); $new_unit->addAlias('dm³'); $new_unit->addAlias('cubic decimeter'); $new_unit->addAlias('cubic decimeters'); $this->registerUnitOfMeasure($new_unit); // Cubic kilometer $new_unit = new UnitOfMeasure('km^3', function ($x) { return $x / 1000000000.0; }, function ($x) { return $x * 1000000000.0; }); $new_unit->addAlias('km³'); $new_unit->addAlias('cubic kilometer'); $new_unit->addAlias('cubic kilometers'); $this->registerUnitOfMeasure($new_unit); // Cubic foot $new_unit = new UnitOfMeasure('ft^3', function ($x) { return $x / 0.02831685; }, function ($x) { return $x * 0.02831685; }); $new_unit->addAlias('ft³'); $new_unit->addAlias('cubic foot'); $new_unit->addAlias('cubic feet'); $this->registerUnitOfMeasure($new_unit); // Cubic inch $new_unit = new UnitOfMeasure('in^3', function ($x) { return $x / 1.638706E-5; }, function ($x) { return $x * 1.638706E-5; }); $new_unit->addAlias('in³'); $new_unit->addAlias('cubic inch'); $new_unit->addAlias('cubic inches'); $this->registerUnitOfMeasure($new_unit); // Cubic yard $new_unit = new UnitOfMeasure('yd^3', function ($x) { return $x / 0.7645549; }, function ($x) { return $x * 0.7645549; }); $new_unit->addAlias('yd³'); $new_unit->addAlias('cubic yard'); $new_unit->addAlias('cubic yards'); $this->registerUnitOfMeasure($new_unit); // Milliliters $new_unit = new UnitOfMeasure('ml', function ($x) { return $x / 1.0E-6; }, function ($x) { return $x * 1.0E-6; }); $new_unit->addAlias('milliliter'); $new_unit->addAlias('milliliters'); $this->registerUnitOfMeasure($new_unit); // Centiliters $new_unit = new UnitOfMeasure('cl', function ($x) { return $x / 1.0E-5; }, function ($x) { return $x * 1.0E-5; }); $new_unit->addAlias('centiliter'); $new_unit->addAlias('centiliters'); $this->registerUnitOfMeasure($new_unit); // Deciliter $new_unit = new UnitOfMeasure('dl', function ($x) { return $x / 0.0001; }, function ($x) { return $x * 0.0001; }); $new_unit->addAlias('deciliter'); $new_unit->addAlias('deciliters'); $this->registerUnitOfMeasure($new_unit); // Liter $new_unit = new UnitOfMeasure('l', function ($x) { return $x / 0.001; }, function ($x) { return $x * 0.001; }); $new_unit->addAlias('liter'); $new_unit->addAlias('liters'); $this->registerUnitOfMeasure($new_unit); // Decaliter $new_unit = new UnitOfMeasure('dal', function ($x) { return $x / 0.01; }, function ($x) { return $x * 0.01; }); $new_unit->addAlias('decaliter'); $new_unit->addAlias('decaliters'); $this->registerUnitOfMeasure($new_unit); // Hectoliter $new_unit = new UnitOfMeasure('hl', function ($x) { return $x / 0.1; }, function ($x) { return $x * 0.1; }); $new_unit->addAlias('hectoliter'); $new_unit->addAlias('hectoliters'); $this->registerUnitOfMeasure($new_unit); // Cup $new_unit = new UnitOfMeasure('cup', function ($x) { return $x / 0.0002365882; }, function ($x) { return $x * 0.0002365882; }); $new_unit->addAlias('cup'); $new_unit->addAlias('cups'); $this->registerUnitOfMeasure($new_unit); }
/** * Configure all the standard units of measure * to which this quantity can be converted. * * @return void */ public function __construct($value, $unit) { parent::__construct($value, $unit); // Meter $new_unit = new UnitOfMeasure('m', function ($x) { return $x; }, function ($x) { return $x; }); $new_unit->addAlias('meter'); $new_unit->addAlias('meters'); $this->registerUnitOfMeasure($new_unit); // Millimeter $new_unit = new UnitOfMeasure('mm', function ($x) { return $x / 0.001; }, function ($x) { return $x * 0.001; }); $new_unit->addAlias('millimeter'); $new_unit->addAlias('millimeters'); $this->registerUnitOfMeasure($new_unit); // Centimeter $new_unit = new UnitOfMeasure('cm', function ($x) { return $x / 0.01; }, function ($x) { return $x * 0.01; }); $new_unit->addAlias('centimeter'); $new_unit->addAlias('centimeters'); $this->registerUnitOfMeasure($new_unit); // Decimeter $new_unit = new UnitOfMeasure('dm', function ($x) { return $x / 0.1; }, function ($x) { return $x * 0.1; }); $new_unit->addAlias('decimeter'); $new_unit->addAlias('decimeters'); $this->registerUnitOfMeasure($new_unit); // Kilometer $new_unit = new UnitOfMeasure('km', function ($x) { return $x / 1000; }, function ($x) { return $x * 1000; }); $new_unit->addAlias('kilometer'); $new_unit->addAlias('kilometers'); $this->registerUnitOfMeasure($new_unit); // Foot $new_unit = new UnitOfMeasure('ft', function ($x) { return $x / 0.3048; }, function ($x) { return $x * 0.3048; }); $new_unit->addAlias('foot'); $new_unit->addAlias('feet'); $this->registerUnitOfMeasure($new_unit); // Inch $new_unit = new UnitOfMeasure('in', function ($x) { return $x / 0.0254; }, function ($x) { return $x * 0.0254; }); $new_unit->addAlias('inch'); $new_unit->addAlias('inches'); $this->registerUnitOfMeasure($new_unit); // Mile $new_unit = new UnitOfMeasure('mi', function ($x) { return $x / 1609.344; }, function ($x) { return $x * 1609.344; }); $new_unit->addAlias('mile'); $new_unit->addAlias('miles'); $this->registerUnitOfMeasure($new_unit); // Yard $new_unit = new UnitOfMeasure('yd', function ($x) { return $x / 0.9144; }, function ($x) { return $x * 0.9144; }); $new_unit->addAlias('yard'); $new_unit->addAlias('yards'); $this->registerUnitOfMeasure($new_unit); }
/** * Configure all the standard units of measure * to which this quantity can be converted. * * @return void */ public function __construct($value, $unit) { parent::__construct($value, $unit); // Meters squared $new_unit = new UnitOfMeasure('m^2', function ($x) { return $x; }, function ($x) { return $x; }, array('m²', 'meter squared', 'meters squared')); $this->registerUnitOfMeasure($new_unit); // Millimeter squared $new_unit = new UnitOfMeasure('mm^2', function ($x) { return $x / 1.0E-6; }, function ($x) { return $x * 1.0E-6; }, array('mm²', 'millimeter squared', 'millimeters squared')); $this->registerUnitOfMeasure($new_unit); // Centimeter squared $new_unit = new UnitOfMeasure('cm^2', function ($x) { return $x / 0.0001; }, function ($x) { return $x * 0.0001; }, array('cm²', 'centimeter squared', 'centimeters squared')); $this->registerUnitOfMeasure($new_unit); // Decimeter squared $new_unit = new UnitOfMeasure('dm^2', function ($x) { return $x / 0.01; }, function ($x) { return $x * 0.01; }, array('dm²', 'decimeter squared', 'decimeters squared')); $this->registerUnitOfMeasure($new_unit); // Kilometer squared $new_unit = new UnitOfMeasure('km^2', function ($x) { return $x / 1000000.0; }, function ($x) { return $x * 1000000.0; }, array('km²', 'kilometer squared', 'kilometers squared')); $this->registerUnitOfMeasure($new_unit); // Foot squared $new_unit = new UnitOfMeasure('ft^2', function ($x) { return $x / 0.09290304000000001; }, function ($x) { return $x * 0.09290304000000001; }, array('ft²', 'foot squared', 'feet squared')); $this->registerUnitOfMeasure($new_unit); // Inch squared $new_unit = new UnitOfMeasure('in^2', function ($x) { return $x / 0.00064516; }, function ($x) { return $x * 0.00064516; }, array('in²', 'inch squared', 'inches squared')); $this->registerUnitOfMeasure($new_unit); // Mile squared $new_unit = new UnitOfMeasure('mi^2', function ($x) { return $x / 2589988.0; }, function ($x) { return $x * 2589988.0; }, array('mi²', 'mile squared', 'miles squared')); $new_unit->addAlias('mi²'); $new_unit->addAlias('mile squared'); $new_unit->addAlias('miles squared'); $this->registerUnitOfMeasure($new_unit); // Yard squared $new_unit = new UnitOfMeasure('yd^2', function ($x) { return $x / 0.8361274; }, function ($x) { return $x * 0.8361274; }, array('yd²', 'yard squared', 'yards squared')); $new_unit->addAlias('yd²'); $new_unit->addAlias('yard squared'); $new_unit->addAlias('yards squared'); $this->registerUnitOfMeasure($new_unit); }
protected static function initialize() { // Kelvin $kelvin = UnitOfMeasure::nativeUnitFactory('K'); $kelvin->addAlias('°K'); $kelvin->addAlias('kelvin'); static::addUnit($kelvin); static::addMissingSIPrefixedUnits($kelvin, 1, '%pK', ['%Pkelvin']); // Degree Celsius $newUnit = new UnitOfMeasure('°C', function ($x) { return $x - 273.15; }, function ($x) { return $x + 273.15; }); $newUnit->addAlias('C'); $newUnit->addAlias('celsius'); static::addUnit($newUnit); // Degree Fahrenheit $newUnit = new UnitOfMeasure('°F', function ($x) { return $x * 9 / 5 - 459.67; }, function ($x) { return ($x + 459.67) * 5 / 9; }); $newUnit->addAlias('F'); $newUnit->addAlias('fahrenheit'); static::addUnit($newUnit); // Degree Rankine $newUnit = UnitOfMeasure::linearUnitFactory('°R', 5 / 9); $newUnit->addAlias('R'); $newUnit->addAlias('rankine'); static::addUnit($newUnit); // Degree Delisle $newUnit = new UnitOfMeasure('°De', function ($x) { return (373.15 - $x) * 3 / 2; }, function ($x) { return 373.15 - $x * 2 / 3; }); $newUnit->addAlias('De'); $newUnit->addAlias('delisle'); static::addUnit($newUnit); // Degree Newton $newUnit = new UnitOfMeasure('°N', function ($x) { return ($x - 273.15) * 33 / 100; }, function ($x) { return $x * 100 / 33 + 273.15; }); $newUnit->addAlias('N'); $newUnit->addAlias('newton'); static::addUnit($newUnit); // Degree Réaumur $newUnit = new UnitOfMeasure('°Ré', function ($x) { return ($x - 273.15) * 4 / 5; }, function ($x) { return $x * 5 / 4 + 273.15; }); $newUnit->addAlias('°Re'); $newUnit->addAlias('Ré'); $newUnit->addAlias('Re'); $newUnit->addAlias('réaumur'); $newUnit->addAlias('reaumur'); static::addUnit($newUnit); // Degree Rømer $newUnit = new UnitOfMeasure('°Rø', function ($x) { return ($x - 273.15) * 21 / 40 + 7.5; }, function ($x) { return ($x - 7.5) * 40 / 21 + 273.15; }); $newUnit->addAlias('°Ro'); $newUnit->addAlias('Rø'); $newUnit->addAlias('Ro'); $newUnit->addAlias('rømer'); $newUnit->addAlias('romer'); static::addUnit($newUnit); }