From: David Lutterkort Date: Sat, 21 Feb 2009 10:10:01 +0000 (+0100) Subject: Tests for module 'safe-alloc'. X-Git-Tag: v0.1~6312 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=b87c1f601e56edb36cf88cff3edefe3454b29c89;p=gnulib.git Tests for module 'safe-alloc'. --- 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); +}