#include "Format.hh" #include #include #define TEST( a, b ) \ aa = a; b; \ bb = buffer; \ cout << aa << "\t==\t" << bb << "\t: "; \ if( aa == bb ) cout << "true"; else cout << "false"; \ cout << endl; using namespace std; int main() { char buffer[250]; std::string aa, bb; try { TEST( format ("%s", "String" ), sprintf( buffer, "%s", "String" )); TEST( format ("%d", 155 ), sprintf( buffer, "%d", 155 )); TEST( format ("%f", 155.1 ), sprintf( buffer, "%f", 155.1 ) ); TEST( format ("%f", (double) 155.1 ) , sprintf( buffer, "%f", (double) 155.1 ) ); TEST( format ("%x", 1515 ), sprintf( buffer, "%x", 1515 ) ); TEST( format ("%X", 1515 ), sprintf( buffer, "%X", 1515 ) ); TEST( format ("%05d", 3 ), sprintf( buffer, "%05d", 3 ) ); TEST( format ("%05.f", 3.32 ), sprintf( buffer, "%05.f", 3.32 ) ); TEST( format ("%#5x", 1515 ), sprintf( buffer, "%#5x", 1515 ) ); TEST( format ("%#5X", 1515 ), sprintf( buffer, "%#5X", 1515 ) ); TEST( format ("%0*2$d", 1515, 6 ), sprintf( buffer, "%0*2$d", 1515, 6 ) ); TEST( format ("%0*d", 6, 1515 ), sprintf( buffer, "%0*d", 6, 1515 ) ); TEST( format ("%*d", 6, 1515 ), sprintf( buffer, "%*d", 6, 1515 ) ); TEST( format ("%2$*1$d", 6, 1515 ), sprintf( buffer, "%2$*1$d", 6, 1515 ) ); TEST( format ("%2$d%1$d", 6, 1515 ), sprintf( buffer, "%2$d%1$d", 6, 1515 ) ); TEST( format ("%.*f", 6, 32.32 ), sprintf( buffer, "%.*f", 6, 32.32 ) ); TEST( format ("%.*2$f", 15.15, 5 ), sprintf( buffer, "%.*2$f", 15.15, 5 ) ); TEST( format ("%.*f", 5, 15.15 ), sprintf( buffer, "%.*f", 5, 15.15 ) ); TEST( format ("%.3s", "HALLO" ), sprintf( buffer, "%.3s", "HALLO" ) ); TEST( format ("pi = %.5f", 4 * atan(1.0)), sprintf( buffer, "pi = %.5f", 4 * atan(1.0)) ); TEST( format( "%*d-%*d-%*d", 1, 3, 2, 4, 5, 6), sprintf( buffer, "%*d-%*d-%*d", 1, 3, 2, 4, 5, 6) ); TEST( format( "%2$s %1$s", "A", "B" ), sprintf( buffer, "%2$s %1$s", "A", "B" ) ); TEST( format( "%", "A" ), sprintf( buffer, "%", "A" ) ); cout << endl; // format only test, don't try this with printf cout << format( "%s", 5 ) << "\t: true" << endl; } catch ( Format::Error &err ) { cout << "Error: " << err.err << endl; } return 0; }