From: Bruno Haible Date: Wed, 13 May 2009 01:23:42 +0000 (+0200) Subject: Tests for module 'alignof'. X-Git-Tag: v0.1~5918 X-Git-Url: http://erislabs.net/gitweb/?a=commitdiff_plain;h=610a9cc95c2a1c9c0260ea7d0f9a850c6c017828;p=gnulib.git Tests for module 'alignof'. --- diff --git a/ChangeLog b/ChangeLog index 21a87627b..d23fd8354 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2009-05-12 Bruno Haible + Tests for module 'alignof'. + * modules/alignof-tests: New file. + * tests/test-alignof.c: New file. + +2009-05-12 Bruno Haible + Fix alignof macro. * lib/alignof.h (alignof): Remove special cases for AIX and HP-UX vendor compilers that are always correct. diff --git a/modules/alignof-tests b/modules/alignof-tests new file mode 100644 index 000000000..68ed4fd19 --- /dev/null +++ b/modules/alignof-tests @@ -0,0 +1,12 @@ +Files: +tests/test-alignof.c + +Depends-on: +verify + +configure.ac: + +Makefile.am: +TESTS += test-alignof +check_PROGRAMS += test-alignof + diff --git a/tests/test-alignof.c b/tests/test-alignof.c new file mode 100644 index 000000000..851cbf092 --- /dev/null +++ b/tests/test-alignof.c @@ -0,0 +1,51 @@ +/* Test of . + Copyright (C) 2009 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2009. */ + +#include + +#include + +#include + +#include "verify.h" + +typedef struct { char a[1]; } struct1; +typedef struct { char a[2]; } struct2; +typedef struct { char a[3]; } struct3; +typedef struct { char a[4]; } struct4; + +#define CHECK(type) \ + typedef struct { char slot1; type slot2; } type##_helper; \ + verify (alignof (type) == offsetof (type##_helper, slot2)); + +CHECK (char) +CHECK (short) +CHECK (int) +CHECK (long) +CHECK (float) +CHECK (double) +CHECK (struct1) +CHECK (struct2) +CHECK (struct3) +CHECK (struct4) + +int +main () +{ + return 0; +}