row1 = new Row([ "field1" => 10, "field2" => "test", "field3" => 20.30, "field4" => "2021-11-20" ]); $this->row2 = new Row([ "field1" => "30", "field3" => "b", "field4" => "2021-11-xx" ]); } public function testRequired() { $validator = RowValidator::getInstance() ->requiredFields(["field1", "field2"]); $this->assertSame([], $validator->validate($this->row1)); $this->assertSame(["field2 is required"], $validator->validate($this->row2)); } public function testNumeric() { $validator = RowValidator::getInstance() ->numericFields(["field1", "field3"]); $this->assertSame([], $validator->validate($this->row1)); $this->assertSame(["field3 needs to be a number"], $validator->validate($this->row2)); } public function testRegex() { $validator = RowValidator::getInstance() ->regexValidation("field4", '/\d{4}-\d{2}-\d{2}/'); $this->assertSame([], $validator->validate($this->row1)); $this->assertSame(["Regex expression for field4 doesn't match"], $validator->validate($this->row2)); } public function testCustom() { $validator = RowValidator::getInstance() ->customValidation("field1", function($value) { if ($value != 10) { return "Value should be 10, but $value was found."; } }); $this->assertSame([], $validator->validate($this->row1)); $this->assertSame(["Value should be 10, but 30 was found."], $validator->validate($this->row2)); } } __halt_compiler();----SIGNATURE:----daW7d35ZzMmtvTfYZlbGeQ2gK3JA5t9JJx/i5nsBrbkMRzoaVehhQO7dgJHcd10z6H/uvRE91w+Yp8SX8dSpLzHBVDp7WO1TqOZgZ5TjZ+JE2avFDYPLvQufZ5JAbMjRzvYlEBCWduN4Ro08cH3+sWse2C4py4L4vUQYQNUQ9HhkHFxkJ+IVNQt1EIqQQAtruvJs/O5yiK6wXTrAv16l6t5De9/dajy3qOHxcnQrJQ2BZDJahvs0TIl8hVioaeXZGJhrpRGgD6Bg9uB7zz8RN9/gXrwnh7Aj3Tspmk/A0C+utbjYOyIoEcoIqr5E6w/30bI4TtsSNKmfHaT6yjIta5HpA0Ts+9QaAtOPLU4e8QJc0gshcx+JaR2bEORNrG55IOIPD66ZzX0ApYEOrZJWY0giteWlJ3XZh2ERHSAo9cyU34Z5qAvBHo/EnMhRuJqfRHrwlYVj9+rVBh+M1EMtxcBP6VV7iPFiAnqcnRsGIFY7qXz3Z6IbOutal0vzUexbc8Ckhmmt5FABVV4qTGmQM6ZhZaIyllUxIkT7iPoCUxqrLkv4JIAdR5TlYUNc7DyW7iz9m7pncuxjYy0Jz7soM0OltCrfZMeZJQsQaQYxOXImliq2hc5CJRuH/giX2DqFV1qtFN9km+Hy1NLd9CU5Q2GKnhMrUuf9RrBPAnaGP5A=----ATTACHMENT:----OTkwMDcxMzk1NzM4ODI3IDE4ODYxOTc2NjI5NTk5NjAgNzI0NTU2NTI2MzA4MDMyNg==