AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_TYPE_INTMAX_T
+AC_TYPE_UINTMAX_T
AC_TYPE_UINT32_T
AC_HEADER_TIME
AC_STRUCT_TM
@code{==}, @code{!=}, @code{<}, @code{<=}, @code{>}, and @code{>=}
respectively.
+@item ck_assert_uint_eq
+@itemx ck_assert_uint_ne
+@itemx ck_assert_uint_lt
+@itemx ck_assert_uint_le
+@itemx ck_assert_uint_gt
+@itemx ck_assert_uint_ge
+
+Similar to @code{ck_assert_int_*}, but compares two unsigned integer values
+(@code{uintmax_t}) instead.
+
@item ck_assert_str_eq
@itemx ck_assert_str_ne
@itemx ck_assert_str_lt
#define ck_abort() ck_abort_msg(NULL)
#define ck_abort_msg(...) _ck_assert_msg(0, __FILE__, __LINE__, "Failed" , ## __VA_ARGS__, NULL)
-/* Integer comparsion macros with improved output compared to ck_assert(). */
+/* Signed and unsigned integer comparsion macros with improved output compared to ck_assert(). */
/* OP may be any comparion operator. */
#define _ck_assert_int(X, OP, Y) do { \
intmax_t _ck_x = (X); \
#define ck_assert_int_gt(X, Y) _ck_assert_int(X, >, Y)
#define ck_assert_int_ge(X, Y) _ck_assert_int(X, >=, Y)
+#define _ck_assert_uint(X, OP, Y) do { \
+ uintmax_t _ck_x = (X); \
+ uintmax_t _ck_y = (Y); \
+ ck_assert_msg(_ck_x OP _ck_y, "Assertion '"#X#OP#Y"' failed: "#X"==%ju, "#Y"==%ju", _ck_x, _ck_y); \
+} while (0)
+#define ck_assert_uint_eq(X, Y) _ck_assert_uint(X, ==, Y)
+#define ck_assert_uint_ne(X, Y) _ck_assert_uint(X, !=, Y)
+#define ck_assert_uint_lt(X, Y) _ck_assert_uint(X, <, Y)
+#define ck_assert_uint_le(X, Y) _ck_assert_uint(X, <=, Y)
+#define ck_assert_uint_gt(X, Y) _ck_assert_uint(X, >, Y)
+#define ck_assert_uint_ge(X, Y) _ck_assert_uint(X, >=, Y)
+
/* String comparsion macros with improved output compared to ck_assert() */
/* OP might be any operator that can be used in '0 OP strcmp(X,Y)' comparison */
/* The x and y parameter swap in strcmp() is needed to handle >, >=, <, <= operators */
{ "Simple Tests", CK_FAILURE, "Assertion 'y>y' failed: y==3, y==3" },
{ "Simple Tests", CK_FAILURE, "Assertion 'x>=y' failed: x==2, y==3" },
{ "Simple Tests", CK_PASS, "Passed" },
+ { "Simple Tests", CK_FAILURE, "Assertion 'x==y' failed: x==3, y==4" },
+ { "Simple Tests", CK_FAILURE, "Assertion 'x!=y' failed: x==3, y==3" },
+ { "Simple Tests", CK_FAILURE, "Assertion 'x<x' failed: x==2, x==2" },
+ { "Simple Tests", CK_FAILURE, "Assertion 'y<=x' failed: y==3, x==2" },
+ { "Simple Tests", CK_FAILURE, "Assertion 'y>y' failed: y==3, y==3" },
+ { "Simple Tests", CK_FAILURE, "Assertion 'x>=y' failed: x==2, y==3" },
+ { "Simple Tests", CK_PASS, "Passed" },
{ "Simple Tests", CK_FAILURE, "Assertion '\"test1\"==s' failed: \"test1\"==\"test1\", s==\"test2\"" },
{ "Simple Tests", CK_FAILURE, "Assertion 't!=s' failed: t==\"test2\", s==\"test2\"" },
{ "Simple Tests", CK_FAILURE, "Assertion 's<s' failed: s==\"test1\", s==\"test1\"" },
#define LINENO_ck_assert_int_expr _STR(__LINE__)
} END_TEST
+START_TEST(test_ck_assert_uint_eq)
+{
+ unsigned int x = 3;
+ unsigned int y = 3;
+ ck_assert_uint_eq(x, y);
+ y++;
+ ck_assert_uint_eq(x, y);
+ #define LINENO_ck_assert_uint_eq _STR(__LINE__)
+}
+END_TEST
+
+START_TEST(test_ck_assert_uint_ne)
+{
+ unsigned int x = 3;
+ unsigned int y = 2;
+ ck_assert_uint_ne(x, y);
+ y++;
+ ck_assert_uint_ne(x, y);
+ #define LINENO_ck_assert_uint_ne _STR(__LINE__)
+}
+END_TEST
+
+START_TEST(test_ck_assert_uint_lt)
+{
+ unsigned int x = 2;
+ unsigned int y = 3;
+ ck_assert_uint_lt(x, y);
+ ck_assert_uint_lt(x, x);
+ #define LINENO_ck_assert_uint_lt _STR(__LINE__)
+}
+END_TEST
+
+START_TEST(test_ck_assert_uint_le)
+{
+ unsigned int x = 2;
+ unsigned int y = 3;
+ ck_assert_uint_le(x, y);
+ ck_assert_uint_le(x, x);
+ ck_assert_uint_le(y, x);
+ #define LINENO_ck_assert_uint_le _STR(__LINE__)
+}
+END_TEST
+
+START_TEST(test_ck_assert_uint_gt)
+{
+ unsigned int x = 2;
+ unsigned int y = 3;
+ ck_assert_uint_gt(y, x);
+ ck_assert_uint_gt(y, y);
+ #define LINENO_ck_assert_uint_gt _STR(__LINE__)
+}
+END_TEST
+
+START_TEST(test_ck_assert_uint_ge)
+{
+ unsigned int x = 2;
+ unsigned int y = 3;
+ ck_assert_uint_ge(y, x);
+ ck_assert_uint_ge(y, x);
+ ck_assert_uint_ge(x, y);
+ #define LINENO_ck_assert_uint_ge _STR(__LINE__)
+}
+END_TEST
+
+START_TEST(test_ck_assert_uint_expr)
+{
+ unsigned int x = 1;
+ unsigned int y = 0;
+ ck_assert_uint_eq(x, ++y);
+ ck_assert_uint_eq(x, y);
+ #define LINENO_ck_assert_uint_expr _STR(__LINE__)
+} END_TEST
+
START_TEST(test_ck_assert_str_eq)
{
const char *s = "test2";
LINENO_ck_assert,
LINENO_ck_assert_null,
LINENO_ck_assert_int_eq,
+ LINENO_ck_assert_int_eq,
LINENO_ck_assert_int_ne,
LINENO_ck_assert_int_lt,
LINENO_ck_assert_int_le,
LINENO_ck_assert_int_gt,
LINENO_ck_assert_int_ge,
LINENO_ck_assert_int_expr,
+ LINENO_ck_assert_uint_ne,
+ LINENO_ck_assert_uint_lt,
+ LINENO_ck_assert_uint_le,
+ LINENO_ck_assert_uint_gt,
+ LINENO_ck_assert_uint_ge,
+ LINENO_ck_assert_uint_expr,
LINENO_ck_assert_str_eq,
LINENO_ck_assert_str_ne,
LINENO_ck_assert_str_lt,
tcase_add_test (tc_simple, test_ck_assert_int_gt);
tcase_add_test (tc_simple, test_ck_assert_int_ge);
tcase_add_test (tc_simple, test_ck_assert_int_expr);
+ tcase_add_test (tc_simple, test_ck_assert_uint_eq);
+ tcase_add_test (tc_simple, test_ck_assert_uint_ne);
+ tcase_add_test (tc_simple, test_ck_assert_uint_lt);
+ tcase_add_test (tc_simple, test_ck_assert_uint_le);
+ tcase_add_test (tc_simple, test_ck_assert_uint_gt);
+ tcase_add_test (tc_simple, test_ck_assert_uint_ge);
+ tcase_add_test (tc_simple, test_ck_assert_uint_expr);
tcase_add_test (tc_simple, test_ck_assert_str_eq);
tcase_add_test (tc_simple, test_ck_assert_str_ne);
tcase_add_test (tc_simple, test_ck_assert_str_lt);