From b87c1f601e56edb36cf88cff3edefe3454b29c89 Mon Sep 17 00:00:00 2001 From: David Lutterkort Date: Sat, 21 Feb 2009 11:10:01 +0100 Subject: [PATCH] Tests for module 'safe-alloc'. --- ChangeLog | 4 +++ modules/safe-alloc-tests | 10 ++++++++ tests/test-safe-alloc.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 modules/safe-alloc-tests create mode 100644 tests/test-safe-alloc.c diff --git a/ChangeLog b/ChangeLog index da030f0ff..44002ff34 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2009-02-21 David Lutterkort + Tests for module 'safe-alloc'. + * tests/test-safe-alloc.c: New file. + * modules/safe-alloc-tests: New file. + New module 'safe-alloc'. * lib/safe-alloc.h: New file. * lib/safe-alloc.c: New file. diff --git a/modules/safe-alloc-tests b/modules/safe-alloc-tests new file mode 100644 index 000000000..dbd9c8ffd --- /dev/null +++ b/modules/safe-alloc-tests @@ -0,0 +1,10 @@ +Files: +tests/test-safe-alloc.c + +Depends-on: + +configure.ac: + +Makefile.am: +TESTS += test-safe-alloc +check_PROGRAMS += test-safe-alloc diff --git a/tests/test-safe-alloc.c b/tests/test-safe-alloc.c new file mode 100644 index 000000000..420b5e221 --- /dev/null +++ b/tests/test-safe-alloc.c @@ -0,0 +1,63 @@ +/* + * Test the safe-alloc macros + * + * Copyright (C) 2009 Free Software Foundation, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: David Lutterkort + */ + +#include + +#include + +#include + +#define ASSERT(expr) \ + do \ + { \ + if (!(expr)) \ + { \ + fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ + fflush (stderr); \ + abort (); \ + } \ + } \ + while (0) + +int main() +{ + struct tst { + int a; + int b; + }; + + struct tst *p = NULL; + int r; + + r = ALLOC(p); + ASSERT(r >= 0); + + ASSERT(p->a == 0 && p->b == 0); + + p->a = p->b = 42; + r = REALLOC_N(p, 5); + + ASSERT(p[0].a == 42 && p[0].b == 42); + + FREE(p); + ASSERT(p == NULL); +} -- 2.11.0