Add g_assert_true, g_assert_false and g_assert_null

These are just like g_assert(), but using a different entry
point for the message, so we can repurpose them together
with the other assertion macros.

https://bugzilla.gnome.org/show_bug.cgi?id=692125
This commit is contained in:
Matthias Clasen 2013-02-02 12:53:05 -05:00
parent a32c9c7e9c
commit b63739e60e
2 changed files with 41 additions and 1 deletions

View File

@ -348,6 +348,33 @@
* <envar>G_DISABLE_ASSERT</envar> when compiling the application.
*/
/**
* g_assert_true:
* @expr: the expression to check
*
* Debugging macro to check that an expression is true.
*
* Since: 2.38
*/
/**
* g_assert_false:
* @expr: the expression to check
*
* Debugging macro to check an expression is false.
*
* Since: 2.38
*/
/**
* g_assert_null:
* @expr: the expression to check
*
* Debugging macro to check an expression is %NULL.
*
* Since: 2.38
*/
/**
* g_assert_cmpstr:
* @s1: a string (may be %NULL)

View File

@ -66,6 +66,18 @@ typedef void (*GTestFixtureFunc) (gpointer fixture,
#define g_assert_error(err, dom, c) do { if (!err || (err)->domain != dom || (err)->code != c) \
g_assertion_message_error (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
#err, err, dom, c); } while (0)
#define g_assert_true(expr) do { if G_LIKELY (expr) ; else \
g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
#expr); \
} while (0)
#define g_assert_false(expr) do { if G_LIKELY (!(expr)) ; else \
g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
#expr); \
} while (0)
#define g_assert_null(expr) do { if G_LIKELY ((expr) == NULL) ; else \
g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
#expr); \
} while (0)
#ifdef G_DISABLE_ASSERT
#define g_assert_not_reached() do { (void) 0; } while (0)
#define g_assert(expr) do { (void) 0; } while (0)
@ -73,7 +85,8 @@ typedef void (*GTestFixtureFunc) (gpointer fixture,
#define g_assert_not_reached() do { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } while (0)
#define g_assert(expr) do { if G_LIKELY (expr) ; else \
g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
#expr); } while (0)
#expr); \
} while (0)
#endif /* !G_DISABLE_ASSERT */
GLIB_AVAILABLE_IN_ALL