+++ /dev/null
-/* Unit tests for g_malloc
- * Copyright (C) 2013 Red Hat, Inc.
- *
- * This work is provided "as is"; redistribution and modification
- * in whole or in part, in any medium, physical or electronic is
- * permitted without restriction.
- *
- * This work is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * In no event shall the authors or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even
- * if advised of the possibility of such damage.
- *
- * Author: Matthias Clasen
- */
-
-#include "glib.h"
-#include <stdlib.h>
-
-static void
-test_profiler (void)
-{
- if (g_test_subprocess ())
- {
- gpointer p;
- g_mem_set_vtable (glib_mem_profiler_table);
- p = g_malloc (100);
- p = g_realloc (p, 200);
- g_free (p);
- p = g_malloc0 (1000);
- g_free (p);
- p = g_try_malloc (2000);
- p = g_try_realloc (p, 3000);
- g_free (p);
- p = g_malloc (0);
- p = g_malloc0 (0);
- p = g_realloc (NULL, 0);
- p = g_try_malloc (0);
- p = g_try_realloc (NULL, 0);
- g_mem_profile ();
- exit (0);
- }
- g_test_trap_subprocess (NULL, 0, 0);
- g_test_trap_assert_passed ();
- g_test_trap_assert_stdout ("*GLib Memory statistics*");
-}
-
-static void
-test_fallback_calloc (void)
-{
- if (g_test_subprocess ())
- {
- GMemVTable vtable = { malloc, realloc, free, NULL, NULL, NULL };
- gpointer p;
-
- g_mem_set_vtable (&vtable);
- p = g_malloc0 (1000);
- g_free (p);
- exit (0);
- }
- g_test_trap_subprocess (NULL, 0, 0);
- g_test_trap_assert_passed ();
-}
-
-static void
-test_incomplete_vtable (void)
-{
- if (g_test_subprocess ())
- {
- GMemVTable vtable = { malloc, realloc, NULL, NULL, NULL, NULL };
- gpointer p;
-
- g_mem_set_vtable (&vtable);
- p = g_malloc0 (1000);
- g_free (p);
- exit (0);
- }
- g_test_trap_subprocess (NULL, 0, 0);
- g_test_trap_assert_failed ();
- g_test_trap_assert_stderr ("*lacks one of*");
-}
-
-static void
-test_double_vtable (void)
-{
- if (g_test_subprocess ())
- {
- GMemVTable vtable = { malloc, realloc, free, NULL, NULL, NULL };
-
- g_mem_set_vtable (&vtable);
- g_mem_set_vtable (&vtable);
- exit (0);
- }
- g_test_trap_subprocess (NULL, 0, 0);
- g_test_trap_assert_failed ();
- g_test_trap_assert_stderr ("*can only be set once*");
-}
-
-int
-main (int argc, char *argv[])
-{
- g_test_init (&argc, &argv, NULL);
-
- g_test_add_func ("/malloc/incomplete-vtable", test_incomplete_vtable);
- g_test_add_func ("/malloc/double-vtable", test_double_vtable);
- g_test_add_func ("/malloc/fallback-calloc", test_fallback_calloc);
- g_test_add_func ("/malloc/profiler", test_profiler);
-
- return g_test_run ();
-}