public function testValidatorLogic() { $fail = new TestValidatorFail('fail!'); $pass = new TestValidatorPass(); $errors = new phTestValidatable(); $logic = new phValidatorLogic($pass); $logic->and_($fail); $this->assertFalse($logic->validate('test', $errors), 'The and logic correctly fails'); $logic = new phValidatorLogic($pass); $logic->or_($fail); $this->assertTrue($logic->validate('test', $errors), 'The or logic correctly passes'); $logic = new phValidatorLogic($fail); $logic->or_($fail); $this->assertFalse($logic->validate('test', $errors), 'The or logic correctly fails'); $logic = new phValidatorLogic($pass); $logic->and_($fail)->or_($pass); $this->assertTrue($logic->validate('test', $errors), 'The v and v or v logic correctly passes'); $logic = new phValidatorLogic($fail); $logic->and_($fail); $errors->resetErrors(); $logic->validate('test', $errors); $this->assertEquals(sizeof($errors->getErrors()), 2, 'The 2 fails messages where added'); }