Mercurial > hg > octave-lyh > gnulib-hg
changeset 11174:59bd6cfe1edd
Tests for module 'safe-alloc'.
author | David Lutterkort <lutter@redhat.com> |
---|---|
date | Sat, 21 Feb 2009 11:10:01 +0100 |
parents | af090b4101b4 |
children | 4dacec94aa87 |
files | ChangeLog modules/safe-alloc-tests tests/test-safe-alloc.c |
diffstat | 3 files changed, 77 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2009-02-21 David Lutterkort <lutter@redhat.com> + 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.
new file mode 100644 --- /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
new file mode 100644 --- /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 <lutter@redhat.com> + */ + +#include <config.h> + +#include <stdio.h> + +#include <safe-alloc.h> + +#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); +}