2 * Copyright 2015-2017 The OpenSSL Project Authors. All Rights Reserved.
4 * Licensed under the OpenSSL license (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
11 #include <internal/numbers.h>
15 static int test_sanity_null_zero(void)
18 char bytes
[sizeof(p
)];
20 /* Is NULL equivalent to all-bytes-zero? */
22 memset(bytes
, 0, sizeof bytes
);
23 return TEST_mem_eq(&p
, sizeof(p
), bytes
, sizeof(bytes
));
26 static int test_sanity_enum_size(void)
28 enum smallchoices
{ sa
, sb
, sc
};
29 enum medchoices
{ ma
, mb
, mc
, md
, me
, mf
, mg
, mh
, mi
, mj
, mk
, ml
};
31 a01
, b01
, c01
, d01
, e01
, f01
, g01
, h01
, i01
, j01
,
32 a02
, b02
, c02
, d02
, e02
, f02
, g02
, h02
, i02
, j02
,
33 a03
, b03
, c03
, d03
, e03
, f03
, g03
, h03
, i03
, j03
,
34 a04
, b04
, c04
, d04
, e04
, f04
, g04
, h04
, i04
, j04
,
35 a05
, b05
, c05
, d05
, e05
, f05
, g05
, h05
, i05
, j05
,
36 a06
, b06
, c06
, d06
, e06
, f06
, g06
, h06
, i06
, j06
,
37 a07
, b07
, c07
, d07
, e07
, f07
, g07
, h07
, i07
, j07
,
38 a08
, b08
, c08
, d08
, e08
, f08
, g08
, h08
, i08
, j08
,
39 a09
, b09
, c09
, d09
, e09
, f09
, g09
, h09
, i09
, j09
,
40 a10
, b10
, c10
, d10
, e10
, f10
, g10
, h10
, i10
, j10
,
44 if (!TEST_size_t_eq(sizeof(enum smallchoices
), sizeof(int))
45 || !TEST_size_t_eq(sizeof(enum medchoices
), sizeof(int))
46 || !TEST_size_t_eq(sizeof(enum largechoices
), sizeof(int)))
51 static int test_sanity_twos_complement(void)
53 /* Basic two's complement checks. */
54 if (!TEST_int_eq(~(-1), 0)
55 || !TEST_long_eq(~(-1L), 0L))
60 static int test_sanity_sign(void)
62 /* Check that values with sign bit 1 and value bits 0 are valid */
63 if (!TEST_int_eq(-(INT_MIN
+ 1), INT_MAX
)
64 || !TEST_long_eq(-(LONG_MIN
+ 1), LONG_MAX
))
69 static int test_sanity_unsigned_convertion(void)
71 /* Check that unsigned-to-signed conversions preserve bit patterns */
72 if (!TEST_int_eq((int)((unsigned int)INT_MAX
+ 1), INT_MIN
)
73 || !TEST_long_eq((long)((unsigned long)LONG_MAX
+ 1), LONG_MIN
))
80 ADD_TEST(test_sanity_null_zero
);
81 ADD_TEST(test_sanity_enum_size
);
82 ADD_TEST(test_sanity_twos_complement
);
83 ADD_TEST(test_sanity_sign
);
84 ADD_TEST(test_sanity_unsigned_convertion
);