public function returns_immediately_after_having_slept_for_one_second()
 {
     $fixture = new RateLimiting($this->rate, self::$clock);
     $fixture->acquire($this->rate);
     self::$clock->forward(1.0);
     $this->assertDouble(0.0, $fixture->acquire(1));
 }
 public function try_acquiring_with_timeout_of_larger_than_unit($unit)
 {
     $fixture = new RateLimiting(new Rate(1, $unit), self::$clock);
     $fixture->acquire();
     $this->assertTrue($fixture->tryAcquiring(1, $unit->seconds() + 0.5));
 }
 public function succeeds_trying_to_acquire_one_more_than_permitted_after_longer_timeout($rate)
 {
     $fixture = new RateLimiting($rate, self::$clock);
     $fixture->acquire($rate);
     $this->assertTrue($fixture->tryAcquiring(1, $fixture->rate()->unit()->seconds() + 0.5));
 }
 public function increase()
 {
     $fixture = new RateLimiting(self::RATE);
     $fixture->increase(100);
     $this->assertEquals(new Rate(self::RATE + 100, Per::$SECOND), $fixture->rate());
 }