[glib] improve printf tests coverage
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] improve printf tests coverage
- Date: Fri, 30 Jul 2010 23:59:29 +0000 (UTC)
commit 5f89498f071a100d3e159dd0d967477047249d73
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Jul 30 15:36:15 2010 -0400
improve printf tests coverage
glib/tests/printf.c | 241 ++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 227 insertions(+), 14 deletions(-)
---
diff --git a/glib/tests/printf.c b/glib/tests/printf.c
index a8ab0dc..55fa483 100644
--- a/glib/tests/printf.c
+++ b/glib/tests/printf.c
@@ -19,9 +19,11 @@
* if advised of the possibility of such damage.
*/
+#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "glib.h"
+#include "gstdio.h"
static void
test_retval_and_trunc (void)
@@ -607,6 +609,54 @@ test_positional_params (void)
}
static void
+test_positional_params2 (void)
+{
+ gint res;
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%2$c %1$c", 'b', 'a');
+ g_assert_cmpint (res, ==, 3);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*a b*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%1$*2$.*3$s", "abc", 5, 2);
+ g_assert_cmpint (res, ==, 5);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("* ab*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%1$s%1$s", "abc");
+ g_assert_cmpint (res, ==, 6);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*abcabc*");
+}
+
+static void
+test_percent2 (void)
+{
+ gint res;
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%%");
+ g_assert_cmpint (res, ==, 1);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*%*");
+}
+
+static void
test_64bit (void)
{
gchar buf[128];
@@ -686,26 +736,189 @@ test_64bit (void)
#endif
}
+static void
+test_64bit2 (void)
+{
+ gint res;
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" G_GINT64_FORMAT, (gint64)123456);
+ g_assert_cmpint (res, ==, 6);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*123456*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" G_GINT64_FORMAT, (gint64)-123456);
+ g_assert_cmpint (res, ==, 7);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*-123456*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" G_GUINT64_FORMAT, (guint64)123456);
+ g_assert_cmpint (res, ==, 6);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*123456*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" G_GINT64_MODIFIER "o", (gint64)123456);
+ g_assert_cmpint (res, ==, 6);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*361100*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%#" G_GINT64_MODIFIER "o", (gint64)123456);
+ g_assert_cmpint (res, ==, 7);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*0361100*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" G_GINT64_MODIFIER "x", (gint64)123456);
+ g_assert_cmpint (res, ==, 5);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*1e240*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%#" G_GINT64_MODIFIER "x", (gint64)123456);
+ g_assert_cmpint (res, ==, 7);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*0x1e240*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" G_GINT64_MODIFIER "X", (gint64)123456);
+ g_assert_cmpint (res, ==, 5);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*1E240*");
+
+#ifdef G_OS_WIN32
+ /* On Win32, test that the "ll" modifier also works, for backward
+ * compatibility. One really should use the G_GINT64_MODIFIER (which
+ * on Win32 is the "I64" that the (msvcrt) C library's printf uses),
+ * but "ll" used to work with the "trio" g_printf implementation in
+ * GLib 2.2, so it's best if it continues to work.
+ */
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" "lli", (gint64)123456);
+ g_assert_cmpint (res, ==, 6);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*123456*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" "lli", (gint64)-123456);
+ g_assert_cmpint (res, ==, 7);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*-123456*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" "llu", (guint64)123456);
+ g_assert_cmpint (res, ==, 6);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*123456*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" "ll" "o", (gint64)123456);
+ g_assert_cmpint (res, ==, 6);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*361100*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%#" "ll" "o", (gint64)123456);
+ g_assert_cmpint (res, ==, 7);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*0361100*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" "ll" "x", (gint64)123456);
+ g_assert_cmpint (res, ==, 5);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*1e240*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%#" "ll" "x", (gint64)123456);
+ g_assert_cmpint (res, ==, 7);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*0x1e240*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" "ll" "X", (gint64)123456);
+ g_assert_cmpint (res, ==, 5);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*1E240*");
+#endif
+}
+
int
main (int argc,
char *argv[])
{
g_test_init (&argc, &argv, NULL);
- g_test_add_func ("/printf/test-retval-and-trunc", test_retval_and_trunc);
- g_test_add_func ("/printf/test-d", test_d);
- g_test_add_func ("/printf/test-o", test_o);
- g_test_add_func ("/printf/test-u", test_u);
- g_test_add_func ("/printf/test-x", test_x);
- g_test_add_func ("/printf/test-X", test_X);
- g_test_add_func ("/printf/test-f", test_f);
- g_test_add_func ("/printf/test-e", test_e);
- g_test_add_func ("/printf/test-c", test_c);
- g_test_add_func ("/printf/test-s", test_s);
- g_test_add_func ("/printf/test-n", test_n);
- g_test_add_func ("/printf/test-percent", test_percent);
- g_test_add_func ("/printf/test-positional-params", test_positional_params);
- g_test_add_func ("/printf/test-64bit", test_64bit);
+ g_test_add_func ("/snprintf/retval-and-trunc", test_retval_and_trunc);
+ g_test_add_func ("/snprintf/%d", test_d);
+ g_test_add_func ("/snprintf/%o", test_o);
+ g_test_add_func ("/snprintf/%u", test_u);
+ g_test_add_func ("/snprintf/%x", test_x);
+ g_test_add_func ("/snprintf/%X", test_X);
+ g_test_add_func ("/snprintf/%f", test_f);
+ g_test_add_func ("/snprintf/%e", test_e);
+ g_test_add_func ("/snprintf/%c", test_c);
+ g_test_add_func ("/snprintf/%s", test_s);
+ g_test_add_func ("/snprintf/%n", test_n);
+ g_test_add_func ("/snprintf/test-percent", test_percent);
+ g_test_add_func ("/snprintf/test-positional-params", test_positional_params);
+ g_test_add_func ("/snprintf/test-64bit", test_64bit);
+
+ g_test_add_func ("/printf/test-percent", test_percent2);
+ g_test_add_func ("/printf/test-positional-params", test_positional_params2);
+ g_test_add_func ("/printf/test-64bit", test_64bit2);
return g_test_run();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]