FUnit::assert_all_ok PHP Method

assert_all_ok() public static method

Iterate over all the items in $a and pass each to $callback. If the callback returns true for all, it passes -- otherwise it fails
public static assert_all_ok ( array | Traversable $a, callable $callback, string $msg = null )
$a array | Traversable an array or Traversable (iterable) object
$callback callable [description]
$msg string optional description of assertion
    public static function assert_all_ok($a, callable $callback, $msg = null)
    {
        if (is_array($a) || $a instanceof \Traversable) {
            $rs = true;
            $failed_val = null;
            foreach ($a as $value) {
                if (!call_user_func($callback, $value)) {
                    $rs = false;
                    $failed_val = $value;
                    break;
                }
            }
        } else {
            static::debug_out("\$a was not an array or Traversable");
            $failed_val = null;
            $rs = false;
        }
        $fail_info = 'Expected: ' . static::var_export($a) . ' to return true in callback, but ' . static::var_export($failed_val) . ' returned false';
        return array('result' => $rs, 'fail_info' => $fail_info);
    }

Usage Example

Example #1
0
    fu::strict_equal(true, fu::assert_not_ok("")['result'], "empty string is falsy");
    fu::strict_equal(true, fu::assert_not_ok(array())['result'], "empty array is falsy");
    fu::strict_equal(true, fu::assert_not_ok(null)['result'], "null is falsy");
    fu::strict_equal(true, fu::assert_not_ok(false)['result'], "false is falsy");
    fu::strict_equal(false, fu::assert_not_ok(true)['result'], "true is truthy");
    fu::strict_equal(false, fu::assert_not_ok('false')['result'], "'false' is truthy");
    fu::strict_equal(false, fu::assert_not_ok(new stdClass())['result'], "stdClass is truthy");
});
fu::test('FUnit::assert_all_ok tests', function () {
    $all_ints = array(1, 2, 3, 4, 5);
    $not_all_ints = array(1, 2, "3", 4, 5);
    fu::strict_equal(true, fu::assert_all_ok($all_ints, function ($val) {
        return is_int($val);
    })['result'], "\$all_ints are all integers");
    fu::strict_equal(false, fu::assert_all_ok($not_all_ints, function ($val) {
        return is_int($val);
    })['result'], "\$not_all_ints are NOT all integers");
});
fu::test('FUnit::assert_equal tests', function () {
    fu::strict_equal(true, fu::assert_equal(1, 1)['result'], "1 and 1 are 'equal'");
    fu::strict_equal(true, fu::assert_equal("a", "a")['result'], "'a' and 'a' are 'equal'");
    fu::strict_equal(true, fu::assert_equal(new stdClass(), new stdClass())['result'], "new stdClass and new stdClass are 'equal'");
    fu::strict_equal(true, fu::assert_equal(1, "1")['result'], "1 and '1' are 'equal'");
    fu::strict_equal(true, fu::assert_equal(1, true)['result'], "1 and true are 'equal'");
    fu::strict_equal(true, fu::assert_equal(null, 0)['result'], "null and 0 are 'equal'");
    fu::strict_equal(true, fu::assert_equal(false, null)['result'], "false and null are 'equal'");
    fu::strict_equal(true, fu::assert_equal(array(), null)['result'], "array() and null are 'equal'");
    fu::strict_equal(false, fu::assert_equal(array(), 1)['result'], "array() and 1 are not 'equal'");
    fu::strict_equal(false, fu::assert_equal(1, 0)['result'], "1 and 1 are not 'equal'");
    fu::strict_equal(false, fu::assert_equal("a", "b")['result'], "'a' and 'b' are not 'equal'");
    fu::strict_equal(false, fu::assert_equal(new stdClass(), new ArrayObject())['result'], "new stdClass and new ArrayObject are not 'equal'");