Skip to content

Commit

Permalink
Introduce test_assert.h
Browse files Browse the repository at this point in the history
Introduce a new internal header file for definitions of handy macros
providing convenient assertion testing functionality.

* libpam/include/test_assert.h: New file.
* libpam/Makefile.am (noinst_HEADERS): Add include/test_assert.h.
  • Loading branch information
ldv-alt committed May 21, 2020
1 parent 7491dbf commit 1a354d0
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 1 deletion.
2 changes: 1 addition & 1 deletion libpam/Makefile.am
Expand Up @@ -18,7 +18,7 @@ include_HEADERS = include/security/_pam_compat.h \

noinst_HEADERS = pam_prelude.h pam_private.h pam_tokens.h \
pam_modutil_private.h include/pam_cc_compat.h \
include/pam_inline.h
include/pam_inline.h include/test_assert.h

libpam_la_LDFLAGS = -no-undefined -version-info 85:1:85
libpam_la_LIBADD = @LIBAUDIT@ $(LIBPRELUDE_LIBS) $(ECONF_LIBS) @LIBDL@
Expand Down
55 changes: 55 additions & 0 deletions libpam/include/test_assert.h
@@ -0,0 +1,55 @@
/*
* Assert definitions for tests.
*
* Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
*/

#ifndef TEST_ASSERT_H
# define TEST_ASSERT_H

# ifdef HAVE_CONFIG_H
# include <config.h>
# endif

# include <stdio.h>
# include <stdlib.h>

# define ASSERT_(expected_, expected_str_, op_, seen_, seen_str_) \
do { \
__typeof__(expected_) e_ = (expected_); \
__typeof__(seen_) s_ = (seen_); \
if (e_ op_ s_) break; \
fprintf(stderr, \
"%s:%d: Assertion failed: %s (%#lx) %s %s (%#lx)\n", \
__FILE__, __LINE__, \
(expected_str_), (unsigned long) e_, #op_, \
(seen_str_), (unsigned long) s_); \
abort(); \
} while (0) \
/* End of ASSERT_ definition. */

# define ASSERT_EQ(expected_, seen_) \
ASSERT_((expected_), #expected_, ==, (seen_), #seen_) \
/* End of ASSERT_EQ definition. */

# define ASSERT_NE(expected_, seen_) \
ASSERT_((expected_), #expected_, !=, (seen_), #seen_) \
/* End of ASSERT_NE definition. */

# define ASSERT_LT(expected_, seen_) \
ASSERT_((expected_), #expected_, <, (seen_), #seen_) \
/* End of ASSERT_LT definition. */

# define ASSERT_LE(expected_, seen_) \
ASSERT_((expected_), #expected_, <=, (seen_), #seen_) \
/* End of ASSERT_LT definition. */

# define ASSERT_GT(expected_, seen_) \
ASSERT_((expected_), #expected_, >, (seen_), #seen_) \
/* End of ASSERT_LT definition. */

# define ASSERT_GE(expected_, seen_) \
ASSERT_((expected_), #expected_, >=, (seen_), #seen_) \
/* End of ASSERT_LT definition. */

#endif /* TEST_ASSERT_H */

0 comments on commit 1a354d0

Please sign in to comment.