public function testConvert() { foreach (TimeUnit::getConstants() as $u) { $u = TimeUnit::get($u); $this->assertInstanceOf('ConcurrentPhpUtils\\TimeUnit', $u); $this->assertEquals(42, $u->convert(42, $u)); foreach (TimeUnit::getConstants() as $v) { $v = TimeUnit::get($v); if ($v->convert(42, $v) >= 42) { $this->assertEquals(42, $v->convert($u->convert(42, $v), $u)); } } } $this->assertEquals(24, TimeUnit::HOURS()->convert(1, TimeUnit::DAYS())); $this->assertEquals(60, TimeUnit::MINUTES()->convert(1, TimeUnit::HOURS())); $this->assertEquals(60, TimeUnit::SECONDS()->convert(1, TimeUnit::MINUTES())); $this->assertEquals(1000, TimeUnit::MILLISECONDS()->convert(1, TimeUnit::SECONDS())); $this->assertEquals(1000, TimeUnit::MICROSECONDS()->convert(1, TimeUnit::MILLISECONDS())); $this->assertEquals(1000, TimeUnit::NANOSECONDS()->convert(1, TimeUnit::MICROSECONDS())); $this->assertEquals(24, TimeUnit::DAYS()->toHours(1)); $this->assertEquals(60, TimeUnit::HOURS()->toMinutes(1)); $this->assertEquals(60, TimeUnit::MINUTES()->toSeconds(1)); $this->assertEquals(1000, TimeUnit::SECONDS()->toMillis(1)); $this->assertEquals(1000, TimeUnit::MILLISECONDS()->toMicros(1)); $this->assertEquals(1000, TimeUnit::MICROSECONDS()->toNanos(1)); }
/** * Convert the given time duration in the given unit to this * unit. Conversions from finer to coarser granularities * truncate, so lose precision. For example converting * 999 milliseconds to seconds results in * 0. Conversions from coarser to finer granularities * with arguments that would numerically overflow saturate to * "-PHP_INT_MAX -1" if negative or "PHP_INT_MAX" * if positive. * * For example, to convert 10 minutes to milliseconds, use: * TimeUnit::MILLISECONDS()->convert(10, TimeUnit::MINUTES); * * @param int $sourceDuration the time duration in the given source unit * @param TimeUnit $sourceUnit the unit of the source duration argument * @return float|int */ public function convert($sourceDuration, TimeUnit $sourceUnit) { switch ($this->getValue()) { case self::NANOSECONDS: return $sourceUnit->toNanos($sourceDuration); case self::MICROSECONDS: return $sourceUnit->toMicros($sourceDuration); case self::MILLISECONDS: return $sourceUnit->toMillis($sourceDuration); case self::SECONDS: return $sourceUnit->toSeconds($sourceDuration); case self::MINUTES: return $sourceUnit->toMinutes($sourceDuration); case self::HOURS: return $sourceUnit->toHours($sourceDuration); case self::DAYS: return $sourceUnit->toDays($sourceDuration); } }
public function f() { $this->barrier->await(100, TimeUnit::MILLISECONDS()); }