/** * check data validation */ public function testDataValidation() { $object = new Object(); $data = ['data_first' => 'first data', 'data_second' => 'second data', 'data_third' => 'third data', 'data_fourth' => null]; $object->putValidationRule('#data_first#', '#^[\\d]+$#'); $object->putValidationRule('#data_second#', '#[\\w]*#'); $object->putValidationRule('#data_(third|fourth)#', function ($key, $data) { if (is_null($data)) { return true; } return false; }); $this->assertEquals('#^[\\d]+$#', $object->returnValidationRule('#data_first#')); $this->assertNull($object->returnValidationRule('none_existing_rule')); $object->stopValidation(); $object->set($data); $this->assertFalse($object->checkErrors()); $object->startValidation(); $object->set($data); $this->assertTrue($object->checkErrors()); $this->assertEquals($object->returnObjectError()[0], ["message" => "validation_mismatch", "key" => "data_first", "data" => "first data", "rule" => "#^[\\d]+\$#"]); $this->assertEquals($object->returnObjectError()[1]['message'], 'validation_mismatch'); $this->assertEquals($object->returnObjectError()[1]['key'], 'data_third'); $this->assertEquals($object->returnObjectError()[1]['data'], 'third data'); $this->assertCount(2, $object->returnObjectError()); $object->removeValidationRule(); $this->assertNull($object->returnValidationRule('#data_first#')); }