/**
  * @test
  */
 public function rulesLimitProcessorAndMemoryUsage()
 {
     $task1 = new ProcessCallbackTask(function () {
         return;
     });
     $task2 = new ProcessCallbackTask(function () {
         return;
     });
     $rule1 = new InMemoryRule();
     $rule1->setProcesses(1);
     $rule1->setMinimumProcessorUsage(50);
     $rule1->setMaximumProcessorUsage(100);
     $profile1 = new InMemoryProfile();
     $profile1->setProcesses(array($task1));
     $profile1->setProcessorLoad(75);
     $this->assertFalse($this->rules->addRule($rule1)->canRunTask($task2, $profile1));
     $rule2 = new InMemoryRule();
     $rule2->setProcesses(1);
     $rule2->setMinimumMemoryUsage(50);
     $rule2->setMaximumMemoryUsage(100);
     $profile2 = new InMemoryProfile();
     $profile2->setProcesses(array($task1));
     $profile2->setMemoryLoad(75);
     $this->assertFalse($this->rules->removeRule($rule1)->addRule($rule2)->canRunTask($task2, $profile2));
     $rule3 = new InMemoryRule();
     $rule3->setProcesses(1);
     $rule3->setMinimumSiblingProcessorUsage(50);
     $rule3->setMaximumSiblingProcessorUsage(100);
     $profile3 = new InMemoryProfile();
     $profile3->setSiblingProcesses(array($task1));
     $profile3->setSiblingProcessorLoad(75);
     $this->assertFalse($this->rules->removeRule($rule2)->addRule($rule3)->canRunTask($task2, $profile3));
     $rule4 = new InMemoryRule();
     $rule4->setProcesses(1);
     $rule4->setMinimumSiblingMemoryUsage(50);
     $rule4->setMaximumSiblingMemoryUsage(100);
     $profile4 = new InMemoryProfile();
     $profile4->setSiblingProcesses(array($task1));
     $profile4->setSiblingMemoryLoad(75);
     $this->assertFalse($this->rules->removeRule($rule3)->addRule($rule4)->canRunTask($task2, $profile4));
 }