/** * convert the timeout into something we can use * * @param mixed $timeout * the timeout value to convert * @return array * 0 - the overall timeout * 1 - tv_sec param to select() * 2 - tv_usec param to select() */ private static function getTimeoutToUse($timeout = null) { // special case if ($timeout === null) { return [0, 1, 0]; } // general case $tAsF = BuildTimeoutAsFloat::from($timeout); if ($tAsF >= 1.0) { return [$tAsF, 1, 0]; } return [max($tAsF, 0.2), 0, max(intval($tAsF * 1000000), 200000)]; }
/** * @covers ::__invoke * @covers ::from * @covers ::fromNumeric * @dataProvider provideOverrideTimeoutsToTest */ public function testCanOverrideDefaultTimeout($defaultTimeout, $overrideTimeout, $expectedResult) { // ---------------------------------------------------------------- // setup your test $obj = new BuildTimeoutAsFloat(); // ---------------------------------------------------------------- // perform the change $actualResult1 = $obj($defaultTimeout, $overrideTimeout); $actualResult2 = BuildTimeoutAsFloat::from($defaultTimeout, $overrideTimeout); // ---------------------------------------------------------------- // test the results $this->assertEquals($expectedResult, $actualResult1); $this->assertEquals($expectedResult, $actualResult2); }