public function testConditional()
{
$good = [43 => '42', 20 => '42.23', 20 => 'example', 20 => [], 20 => true, 20 => false];
// Condition fulfilled, but validation fails
$bad = [30 => '42', 1 => '42'];
// Complex value test
foreach ([true => $good, false => $bad] as $result => $values) {
foreach ($values as $lessThan => $value) {
$input = new Fluent();
$input->check($value, 'answer')->condition('isInt')->validate('lessThan', 'error', $lessThan);
$this->assertEquals((bool) $result, $input->isValid(), sprintf('Test of value %s should be %s but is %s.', $value, var_export((bool) $result, true), var_export(!$result, true)));
}
}
// Deep chain test
$input = new Fluent();
$input->check(42, 'answer')->validate('notEmpty', 'error')->condition('isInt')->validate('lessThan', 'error', 100);
$this->assertTrue($input->isValid());
// Not an active variable
$this->expectException(\BadMethodCallException::class);
$input = new Fluent();
$input->condition('isInt');
}