/** * Builds a sleep(), usleep(), date(), time() and microtime() mock environment. * * @return MockEnvironment */ public function build() { $environment = new MockEnvironment(); $builder = new MockBuilder(); $incrementables = []; foreach ($this->namespaces as $namespace) { $builder->setNamespace($namespace); // microtime() mock $microtime = new FixedMicrotimeFunction($this->timestamp); $builder->setName("microtime")->setFunctionProvider($microtime); $environment->addMock($builder->build()); // time() mock $builder->setName("time")->setFunction([$microtime, "getTime"]); $environment->addMock($builder->build()); // date() mock $date = new FixedDateFunction($this->timestamp); $builder->setName("date")->setFunctionProvider($date); $environment->addMock($builder->build()); $incrementables[] = $microtime; $incrementables[] = $date; } // Need a complete list of $incrementables. foreach ($this->namespaces as $namespace) { $builder->setNamespace($namespace); // sleep() mock $builder->setName("sleep")->setFunctionProvider(new SleepFunction($incrementables)); $environment->addMock($builder->build()); // usleep() mock $builder->setName("usleep")->setFunctionProvider(new UsleepFunction($incrementables)); $environment->addMock($builder->build()); } return $environment; }