Jyxo\Input\FluentTest::testConditional PHP Method

testConditional() public method

Tests conditional validation.
public testConditional ( )
    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');
    }