mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-23 18:52:09 +01:00
tests: Add C++ tests for typechecking with atomic compare and exchanges
The tests have to be conditional on C++11 being enabled, as the default C++ standard on macOS is (for some reason), C++97 (`__cplusplus` is defined as `199711L`). Signed-off-by: Philip Withnall <pwithnall@endlessos.org> Helps: #2625
This commit is contained in:
parent
62a60f1d60
commit
0e33f1110f
@ -53,6 +53,40 @@ test_typeof (void)
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
test_atomic_pointer_compare_and_exchange (void)
|
||||
{
|
||||
#if __cplusplus >= 201103L
|
||||
const gchar *str1 = "str1";
|
||||
const gchar *str2 = "str2";
|
||||
const gchar *atomic_string = str1;
|
||||
|
||||
g_test_message ("Test that g_atomic_pointer_compare_and_exchange() with a "
|
||||
"non-void* pointer doesn’t have any compiler warnings in C++ mode");
|
||||
|
||||
g_assert_true (g_atomic_pointer_compare_and_exchange (&atomic_string, str1, str2));
|
||||
g_assert_true (atomic_string == str2);
|
||||
#else
|
||||
g_test_skip ("This test requires a C++11 compiler");
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
test_atomic_int_compare_and_exchange (void)
|
||||
{
|
||||
#if __cplusplus >= 201103L
|
||||
gint atomic_int = 5;
|
||||
|
||||
g_test_message ("Test that g_atomic_int_compare_and_exchange() doesn’t have "
|
||||
"any compiler warnings in C++ mode");
|
||||
|
||||
g_assert_true (g_atomic_int_compare_and_exchange (&atomic_int, 5, 50));
|
||||
g_assert_cmpint (atomic_int, ==, 50);
|
||||
#else
|
||||
g_test_skip ("This test requires a C++11 compiler");
|
||||
#endif
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
@ -63,6 +97,8 @@ main (int argc, char *argv[])
|
||||
#endif
|
||||
|
||||
g_test_add_func ("/C++/typeof", test_typeof);
|
||||
g_test_add_func ("/C++/atomic-pointer-compare-and-exchange", test_atomic_pointer_compare_and_exchange);
|
||||
g_test_add_func ("/C++/atomic-int-compare-and-exchange", test_atomic_int_compare_and_exchange);
|
||||
|
||||
return g_test_run ();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user