]> granicus.if.org Git - check/commitdiff
* Add equivalent uint variants for __ck_assert_int. Patch from bug #3600433
authorhugo303 <hugo303@64e312b2-a51f-0410-8e61-82d0ca0eb02a>
Fri, 8 Feb 2013 14:43:06 +0000 (14:43 +0000)
committerhugo303 <hugo303@64e312b2-a51f-0410-8e61-82d0ca0eb02a>
Fri, 8 Feb 2013 14:43:06 +0000 (14:43 +0000)
git-svn-id: svn+ssh://svn.code.sf.net/p/check/code/trunk@695 64e312b2-a51f-0410-8e61-82d0ca0eb02a

configure.ac
doc/check.texi
src/check.h.in
tests/check_check_master.c
tests/check_check_sub.c

index 152c8084e275f7e4da4bfef0f36bc3de08435391..a86aa1ee1e1eec1eccdc7dea3286acc8a89e9faf 100644 (file)
@@ -168,6 +168,7 @@ AC_C_CONST
 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
index 4c1a688d7f97f4de23142ce30a5a2c5abbeb176c..7fef034d42b3228dff102f19a2ed16b49f369ef8 100644 (file)
@@ -868,6 +868,16 @@ by the last two letters of the function name.  The abbreviations @code{eq},
 @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
index 7e9c520d13ce0b1ee644ff0bde0ffc4d0189b9d2..015a90690e7bd7c595d5e6b33a5952fcb9fdbae8 100644 (file)
@@ -282,7 +282,7 @@ void CK_EXPORT _ck_assert_msg (int result, const char *file,
 #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); \
@@ -296,6 +296,18 @@ void CK_EXPORT _ck_assert_msg (int result, const char *file,
 #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 */
index 8e09fe515c7dbe32f75b10514b12b944377ee2e0..6c8d16eb490db8c1d85e3820fedea9ef94bbebaa 100644 (file)
@@ -52,6 +52,13 @@ static master_test_t master_tests[] = {
   { "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\"" },
index 26ba8bc8e631ffee8627a3a1d67022e86bd25a45..2f34ae4276c172c1833dc406ecd06b20b720e5cb 100644 (file)
@@ -229,6 +229,79 @@ START_TEST(test_ck_assert_int_expr)
   #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";
@@ -614,12 +687,19 @@ void init_master_tests_lineno(int num_master_tests) {
     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,
@@ -904,6 +984,13 @@ Suite *make_sub_suite(void)
   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);