Skip to content

Commit 7ecc279

Browse files
committed
Merge pull request PhpUnitsOfMeasure#10 from mauris/time
Time unit implementation - reviewed the code and this looks ok to me. Thanks Mauris.
2 parents 0a0f9cb + fa98cd7 commit 7ecc279

File tree

2 files changed

+103
-0
lines changed
  • source/PhpUnitsOfMeasure/PhysicalQuantity
  • tests/PhpUnitsOfMeasureTest/PhysicalQuantity

2 files changed

+103
-0
lines changed

source/PhpUnitsOfMeasure/PhysicalQuantity/Time.php

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,72 @@ function ($x) {
2626
return $x;
2727
}
2828
);
29+
$new_unit->addAlias('sec');
30+
$new_unit->addAlias('secs');
2931
$new_unit->addAlias('second');
3032
$new_unit->addAlias('seconds');
3133
$this->registerUnitOfMeasure($new_unit);
34+
35+
// Minutes
36+
$new_unit = new UnitOfMeasure(
37+
'm',
38+
function ($x) {
39+
return $x / 60;
40+
},
41+
function ($x) {
42+
return $x * 60;
43+
}
44+
);
45+
$new_unit->addAlias('min');
46+
$new_unit->addAlias('mins');
47+
$new_unit->addAlias('minute');
48+
$new_unit->addAlias('minutes');
49+
$this->registerUnitOfMeasure($new_unit);
50+
51+
// Hours
52+
$new_unit = new UnitOfMeasure(
53+
'h',
54+
function ($x) {
55+
return $x / 3600;
56+
},
57+
function ($x) {
58+
return $x * 3600;
59+
}
60+
);
61+
$new_unit->addAlias('hr');
62+
$new_unit->addAlias('hrs');
63+
$new_unit->addAlias('hour');
64+
$new_unit->addAlias('hours');
65+
$this->registerUnitOfMeasure($new_unit);
66+
67+
// Days
68+
$new_unit = new UnitOfMeasure(
69+
'd',
70+
function ($x) {
71+
return $x / 86400;
72+
},
73+
function ($x) {
74+
return $x * 86400;
75+
}
76+
);
77+
$new_unit->addAlias('day');
78+
$new_unit->addAlias('days');
79+
$this->registerUnitOfMeasure($new_unit);
80+
81+
// Weeks, understood as 7 days
82+
$new_unit = new UnitOfMeasure(
83+
'w',
84+
function ($x) {
85+
return $x / 604800;
86+
},
87+
function ($x) {
88+
return $x * 604800;
89+
}
90+
);
91+
$new_unit->addAlias('wk');
92+
$new_unit->addAlias('wks');
93+
$new_unit->addAlias('week');
94+
$new_unit->addAlias('weeks');
95+
$this->registerUnitOfMeasure($new_unit);
3296
}
3397
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace PhpUnitsOfMeasureTest\PhysicalQuantity;
4+
5+
use PhpUnitsOfMeasure\PhysicalQuantity\Time;
6+
7+
class TimeTest extends \PHPUnit_Framework_TestCase
8+
{
9+
10+
public function testToSeconds()
11+
{
12+
$angle = new Time(5, 'm');
13+
$this->assertEquals(300, $angle->toUnit('seconds'));
14+
}
15+
16+
public function testToMinutes()
17+
{
18+
$angle = new Time(360, 'sec');
19+
$this->assertEquals(6, $angle->toUnit('min'));
20+
}
21+
22+
public function testToHours()
23+
{
24+
$angle = new Time(120, 'mins');
25+
$this->assertEquals(2, $angle->toUnit('hrs'));
26+
}
27+
28+
public function testToDays()
29+
{
30+
$angle = new Time(72, 'hours');
31+
$this->assertEquals(3, $angle->toUnit('days'));
32+
}
33+
34+
public function testToWeeks()
35+
{
36+
$angle = new Time(14, 'd');
37+
$this->assertEquals(2, $angle->toUnit('week'));
38+
}
39+
}

0 commit comments

Comments
 (0)