mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-24 03:02:10 +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
|
#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
|
int
|
||||||
main (int argc, char *argv[])
|
main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@ -63,6 +97,8 @@ main (int argc, char *argv[])
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
g_test_add_func ("/C++/typeof", test_typeof);
|
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 ();
|
return g_test_run ();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user