+ }
+ wxPrintf(wxT("%10s\n"), PointerNull);
+ wxPrintf(wxT("%-10s\n"), PointerNull);
+}
+
+static void TestPrintf()
+{
+ static wxChar shortstr[] = wxT("Hi, Z.");
+ static wxChar longstr[] = wxT("Good morning, Doctor Chandra. This is Hal. \
+I am ready for my first lesson today.");
+ int result = 0;
+ wxString test_format;
+
+ fmtchk(wxT("%.4x"));
+ fmtchk(wxT("%04x"));
+ fmtchk(wxT("%4.4x"));
+ fmtchk(wxT("%04.4x"));
+ fmtchk(wxT("%4.3x"));
+ fmtchk(wxT("%04.3x"));
+
+ fmtst1chk(wxT("%.*x"));
+ fmtst1chk(wxT("%0*x"));
+ fmtst2chk(wxT("%*.*x"));
+ fmtst2chk(wxT("%0*.*x"));
+
+ wxString bad_format = wxT("bad format:\t\"%b\"\n");
+ wxPrintf(bad_format.c_str());
+ wxPrintf(wxT("nil pointer (padded):\t\"%10p\"\n"), (void *) NULL);
+
+ wxPrintf(wxT("decimal negative:\t\"%d\"\n"), -2345);
+ wxPrintf(wxT("octal negative:\t\"%o\"\n"), -2345);
+ wxPrintf(wxT("hex negative:\t\"%x\"\n"), -2345);
+ wxPrintf(wxT("long decimal number:\t\"%ld\"\n"), -123456L);
+ wxPrintf(wxT("long octal negative:\t\"%lo\"\n"), -2345L);
+ wxPrintf(wxT("long unsigned decimal number:\t\"%lu\"\n"), -123456L);
+ wxPrintf(wxT("zero-padded LDN:\t\"%010ld\"\n"), -123456L);
+ test_format = wxT("left-adjusted ZLDN:\t\"%-010ld\"\n");
+ wxPrintf(test_format.c_str(), -123456);
+ wxPrintf(wxT("space-padded LDN:\t\"%10ld\"\n"), -123456L);
+ wxPrintf(wxT("left-adjusted SLDN:\t\"%-10ld\"\n"), -123456L);
+
+ test_format = wxT("zero-padded string:\t\"%010s\"\n");
+ wxPrintf(test_format.c_str(), shortstr);
+ test_format = wxT("left-adjusted Z string:\t\"%-010s\"\n");
+ wxPrintf(test_format.c_str(), shortstr);
+ wxPrintf(wxT("space-padded string:\t\"%10s\"\n"), shortstr);
+ wxPrintf(wxT("left-adjusted S string:\t\"%-10s\"\n"), shortstr);
+ wxPrintf(wxT("null string:\t\"%s\"\n"), PointerNull);
+ wxPrintf(wxT("limited string:\t\"%.22s\"\n"), longstr);
+
+ wxPrintf(wxT("e-style >= 1:\t\"%e\"\n"), 12.34);
+ wxPrintf(wxT("e-style >= .1:\t\"%e\"\n"), 0.1234);
+ wxPrintf(wxT("e-style < .1:\t\"%e\"\n"), 0.001234);
+ wxPrintf(wxT("e-style big:\t\"%.60e\"\n"), 1e20);
+ wxPrintf(wxT("e-style == .1:\t\"%e\"\n"), 0.1);
+ wxPrintf(wxT("f-style >= 1:\t\"%f\"\n"), 12.34);
+ wxPrintf(wxT("f-style >= .1:\t\"%f\"\n"), 0.1234);
+ wxPrintf(wxT("f-style < .1:\t\"%f\"\n"), 0.001234);
+ wxPrintf(wxT("g-style >= 1:\t\"%g\"\n"), 12.34);
+ wxPrintf(wxT("g-style >= .1:\t\"%g\"\n"), 0.1234);
+ wxPrintf(wxT("g-style < .1:\t\"%g\"\n"), 0.001234);
+ wxPrintf(wxT("g-style big:\t\"%.60g\"\n"), 1e20);
+
+ wxPrintf (wxT(" %6.5f\n"), .099999999860301614);
+ wxPrintf (wxT(" %6.5f\n"), .1);
+ wxPrintf (wxT("x%5.4fx\n"), .5);
+
+ wxPrintf (wxT("%#03x\n"), 1);
+
+ //wxPrintf (wxT("something really insane: %.10000f\n"), 1.0);
+
+ {
+ double d = FLT_MIN;
+ int niter = 17;
+
+ while (niter-- != 0)
+ wxPrintf (wxT("%.17e\n"), d / 2);
+ fflush (stdout);
+ }
+
+#ifndef __WATCOMC__
+ // Open Watcom cause compiler error here
+ // Error! E173: col(24) floating-point constant too small to represent
+ wxPrintf (wxT("%15.5e\n"), 4.9406564584124654e-324);
+#endif
+
+#define FORMAT wxT("|%12.4f|%12.4e|%12.4g|\n")
+ wxPrintf (FORMAT, 0.0, 0.0, 0.0);
+ wxPrintf (FORMAT, 1.0, 1.0, 1.0);
+ wxPrintf (FORMAT, -1.0, -1.0, -1.0);
+ wxPrintf (FORMAT, 100.0, 100.0, 100.0);
+ wxPrintf (FORMAT, 1000.0, 1000.0, 1000.0);
+ wxPrintf (FORMAT, 10000.0, 10000.0, 10000.0);
+ wxPrintf (FORMAT, 12345.0, 12345.0, 12345.0);
+ wxPrintf (FORMAT, 100000.0, 100000.0, 100000.0);
+ wxPrintf (FORMAT, 123456.0, 123456.0, 123456.0);
+#undef FORMAT
+
+ {
+ wxChar buf[20];
+ int rc = wxSnprintf (buf, WXSIZEOF(buf), wxT("%30s"), wxT("foo"));
+
+ wxPrintf(wxT("snprintf (\"%%30s\", \"foo\") == %d, \"%.*s\"\n"),
+ rc, WXSIZEOF(buf), buf);
+#if 0
+ wxChar buf2[512];
+ wxPrintf ("snprintf (\"%%.999999u\", 10)\n",
+ wxSnprintf(buf2, WXSIZEOFbuf2), "%.999999u", 10));
+#endif
+ }
+
+ fp_test ();