Home | History | Annotate | Download | only in test
      1 /** \file test-integers.c
      2  * \brief Check assumptions about integer types (sizes, ranges).
      3  *
      4  * Copyright (C) 2007 Hans Ulrich Niedermann <gp (at) n-dimensional.de>
      5  *
      6  * This library is free software; you can redistribute it and/or
      7  * modify it under the terms of the GNU Lesser General Public
      8  * License as published by the Free Software Foundation; either
      9  * version 2 of the License, or (at your option) any later version.
     10  *
     11  * This library is distributed in the hope that it will be useful,
     12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14  * Lesser General Public License for more details.
     15  *
     16  * You should have received a copy of the GNU Lesser General Public
     17  * License along with this library; if not, write to the
     18  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     19  * Boston, MA  02110-1301  USA.
     20  */
     21 
     22 
     23 #include "libexif/_stdint.h"
     24 #include <stdlib.h>
     25 #include <stdio.h>
     26 
     27 
     28 typedef enum {
     29    EN_A,
     30    EN_B,
     31    EN_C,
     32    EN_D,
     33    EN_E,
     34    EN_F
     35 } enum_t;
     36 
     37 
     38 #if defined(__GNUC__) && (__GNUC__ >= 4)
     39 # define CHECK(condition)					     \
     40 	if (!(condition)) {					     \
     41 		fprintf(stderr, "%s:%d: check failed: %s\n",	     \
     42 			__FILE__, __LINE__, #condition);	     \
     43 		errors++;					     \
     44 	}
     45 #else
     46 # define CHECK(condition)					     \
     47 	if (!(condition)) {					     \
     48 		abort();					     \
     49 	}
     50 #endif
     51 
     52 
     53 int main()
     54 {
     55   unsigned int errors = 0;
     56 
     57   /* libexif assumes unsigned ints are not smaller than 32bit in many places */
     58   CHECK(sizeof(unsigned int) >= sizeof(uint32_t));
     59 
     60   /* libexif assumes that enums fit into ints */
     61   CHECK(sizeof(enum_t) <= sizeof(int));
     62 
     63   return (errors>0)?1:0;
     64 }
     65