$t->diag('->formatErrorRow()');
$output = <<<EOF
<li>
  <ul class="error_list">
    <li>Global error</li>
    <li>id: required</li>
    <li>1 > sub_id: required</li>
  </ul>
</li>

EOF;
$t->is($f->formatErrorRow(array('Global error', 'id' => 'required', array('sub_id' => 'required'))), fix_linebreaks($output), '->formatErrorRow() formats an array of errors in a row');
// ->unnestErrors()
$t->diag('->unnestErrors()');
$f->setErrorRowFormatInARow("<li>%error%</li>");
$f->setNamedErrorRowFormatInARow("<li>%name%: %error%</li>");
$errors = array('foo', 'bar', 'foobar' => 'foobar');
$t->is($f->unnestErrors($errors), array('<li>foo</li>', '<li>bar</li>', '<li>foobar: foobar</li>'), '->unnestErrors() returns an array of formatted errors');
$errors = array('foo', 'bar' => array('foo', 'foobar' => 'foobar'));
$t->is($f->unnestErrors($errors), array('<li>foo</li>', '<li>foo</li>', '<li>bar > foobar: foobar</li>'), '->unnestErrors() unnests errors');
foreach (array('RowFormat', 'ErrorRowFormat', 'ErrorListFormatInARow', 'ErrorRowFormatInARow', 'NamedErrorRowFormatInARow', 'DecoratorFormat') as $method) {
    $getter = sprintf('get%s', $method);
    $setter = sprintf('set%s', $method);
    $t->diag(sprintf('->%s() ->%s()', $getter, $setter));
    $f->{$setter}($value = rand(1, 99999));
    $t->is($f->{$getter}(), $value, sprintf('->%s() ->%s()', $getter, $setter));
}
$t->diag('::setTranslationCallable() ::getTranslationCallable()');
function my__($string)
{
    return sprintf('[%s]', $string);