Nice. Comprehensive unit tests are indeed welcome.
Even a simple test code that tests all features, flags combinations, etc, and outputs a log.
It will make easy for anyone to run it and compare the logs.
I had a bug:
u_printf( my_output_cb, NULL, "%d" NL, -42 );
prints:
--42
I may have found an explanation.
In u_parse_format(),
case 'i':
calls
u_itoa( value, buffer, 10, false );
which outputs minus sign.
Then
if ( number )
does
if ( sign )
{
output_cb( '-', ctx );
chars_written++;
}
which outputs another minus sign.
I had a bug:
prints:--42
I may have found an explanation. In u_parse_format(), case 'i': calls u_itoa( value, buffer, 10, false ); which outputs minus sign.
Then if ( number ) does if ( sign ) { output_cb( '-', ctx ); chars_written++; } which outputs another minus sign.