return 0;
}
+static int test_time_t(void)
+{
+ if (!TEST(1, TEST_time_t_eq((time_t)10, (time_t)10))
+ | !TEST(0, TEST_time_t_eq((time_t)10, (time_t)12))
+ | !TEST(1, TEST_time_t_ne((time_t)10, (time_t)12))
+ | !TEST(0, TEST_time_t_ne((time_t)24, (time_t)24))
+ | !TEST(1, TEST_time_t_lt((time_t)30, (time_t)88))
+ | !TEST(0, TEST_time_t_lt((time_t)88, (time_t)30))
+ | !TEST(1, TEST_time_t_le((time_t)30, (time_t)88))
+ | !TEST(1, TEST_time_t_le((time_t)33, (time_t)33))
+ | !TEST(0, TEST_time_t_le((time_t)88, (time_t)30))
+ | !TEST(1, TEST_time_t_gt((time_t)52, (time_t)33))
+ | !TEST(0, TEST_time_t_gt((time_t)33, (time_t)52))
+ | !TEST(1, TEST_time_t_ge((time_t)52, (time_t)33))
+ | !TEST(1, TEST_time_t_ge((time_t)38, (time_t)38))
+ | !TEST(0, TEST_time_t_ge((time_t)33, (time_t)52)))
+ goto err;
+ return 1;
+
+err:
+ return 0;
+}
+
static int test_pointer(void)
{
int x = 0;
ADD_TEST(test_long);
ADD_TEST(test_ulong);
ADD_TEST(test_size_t);
+ ADD_TEST(test_time_t);
ADD_TEST(test_pointer);
ADD_TEST(test_bool);
ADD_TEST(test_string);
DECLARE_COMPARISONS(unsigned char, uchar)
DECLARE_COMPARISONS(long, long)
DECLARE_COMPARISONS(unsigned long, ulong)
+DECLARE_COMPARISONS(time_t, time_t)
/*
* Because this comparison uses a printf format specifier that's not
* universally known (yet), we provide an option to not have it declared.
# define TEST_size_t_gt(a, b) test_size_t_gt(__FILE__, __LINE__, #a, #b, a, b)
# define TEST_size_t_ge(a, b) test_size_t_ge(__FILE__, __LINE__, #a, #b, a, b)
+# define TEST_time_t_eq(a, b) test_time_t_eq(__FILE__, __LINE__, #a, #b, a, b)
+# define TEST_time_t_ne(a, b) test_time_t_ne(__FILE__, __LINE__, #a, #b, a, b)
+# define TEST_time_t_lt(a, b) test_time_t_lt(__FILE__, __LINE__, #a, #b, a, b)
+# define TEST_time_t_le(a, b) test_time_t_le(__FILE__, __LINE__, #a, #b, a, b)
+# define TEST_time_t_gt(a, b) test_time_t_gt(__FILE__, __LINE__, #a, #b, a, b)
+# define TEST_time_t_ge(a, b) test_time_t_ge(__FILE__, __LINE__, #a, #b, a, b)
+
# define TEST_ptr_eq(a, b) test_ptr_eq(__FILE__, __LINE__, #a, #b, a, b)
# define TEST_ptr_ne(a, b) test_ptr_ne(__FILE__, __LINE__, #a, #b, a, b)
# define TEST_ptr(a) test_ptr(__FILE__, __LINE__, #a, a)
#include <string.h>
#include <ctype.h>
#include "internal/nelem.h"
+#include <openssl/asn1.h>
/*
* Output a failed test first line.
BN_free(aa);
return 0;
}
+
+static const char *print_time(const ASN1_TIME *t)
+{
+ return t == NULL ? "<null>" : (char *)ASN1_STRING_get0_data(t);
+}
+
+#define DEFINE_TIME_T_COMPARISON(opname, op) \
+ int test_time_t_ ## opname(const char *file, int line, \
+ const char *s1, const char *s2, \
+ const time_t t1, const time_t t2) \
+ { \
+ ASN1_TIME *at1 = ASN1_TIME_set(NULL, t1); \
+ ASN1_TIME *at2 = ASN1_TIME_set(NULL, t2); \
+ int r = at1 != NULL && at2 != NULL \
+ && ASN1_TIME_compare(at1, at2) op 0; \
+ if (!r) \
+ test_fail_message(NULL, file, line, "time_t", s1, s2, #op, \
+ "[%s] compared to [%s]", \
+ print_time(at1), print_time(at2)); \
+ ASN1_STRING_free(at1); \
+ ASN1_STRING_free(at2); \
+ return r; \
+ }
+DEFINE_TIME_T_COMPARISON(eq, ==)
+DEFINE_TIME_T_COMPARISON(ne, !=)
+DEFINE_TIME_T_COMPARISON(gt, >)
+DEFINE_TIME_T_COMPARISON(ge, >=)
+DEFINE_TIME_T_COMPARISON(lt, <)
+DEFINE_TIME_T_COMPARISON(le, <=)