Author: Markus Malkusch (markus@malkusch.de)
Inheritance: implements phpmock\Deactivatable
 /**
  * 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;
 }