From 610a9cc95c2a1c9c0260ea7d0f9a850c6c017828 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Wed, 13 May 2009 03:23:42 +0200 Subject: [PATCH] Tests for module 'alignof'. --- ChangeLog | 6 +++++ modules/alignof-tests | 12 ++++++++++ tests/test-alignof.c | 51 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 modules/alignof-tests create mode 100644 tests/test-alignof.c diff --git a/ChangeLog b/ChangeLog index 21a87627be..d23fd83545 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +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. diff --git a/modules/alignof-tests b/modules/alignof-tests new file mode 100644 index 0000000000..68ed4fd196 --- /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 0000000000..851cbf0924 --- /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; +} -- 2.30.2