mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-03 14:42:10 +01:00
Improve GNetworkMonitor test coverage
This commit is contained in:
parent
4ad5210b35
commit
721366d088
@ -151,6 +151,49 @@ assert_signals (GNetworkMonitor *monitor,
|
||||
g_assert (g_network_monitor_get_network_available (monitor) == expected_network_available);
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
GNetworkMonitor *monitor;
|
||||
GMainLoop *loop;
|
||||
GSocketAddress *sockaddr;
|
||||
gboolean should_be_reachable;
|
||||
} CanReachData;
|
||||
|
||||
static void
|
||||
reach_cb (GObject *source,
|
||||
GAsyncResult *res,
|
||||
gpointer user_data)
|
||||
{
|
||||
GError *error = NULL;
|
||||
gboolean reachable;
|
||||
CanReachData *data = user_data;
|
||||
|
||||
reachable = g_network_monitor_can_reach_finish (data->monitor, res, &error);
|
||||
|
||||
if (data->should_be_reachable)
|
||||
g_assert_no_error (error);
|
||||
else
|
||||
{
|
||||
g_assert (error != NULL);
|
||||
g_clear_error (&error);
|
||||
}
|
||||
g_assert (reachable == data->should_be_reachable);
|
||||
|
||||
g_main_loop_quit (data->loop);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
test_reach_async (gpointer user_data)
|
||||
{
|
||||
CanReachData *data = user_data;
|
||||
|
||||
g_network_monitor_can_reach_async (data->monitor,
|
||||
G_SOCKET_CONNECTABLE (data->sockaddr),
|
||||
NULL,
|
||||
reach_cb,
|
||||
data);
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
static void
|
||||
run_tests (GNetworkMonitor *monitor,
|
||||
TestAddress *addresses,
|
||||
@ -160,6 +203,10 @@ run_tests (GNetworkMonitor *monitor,
|
||||
int i;
|
||||
gboolean reachable;
|
||||
GSocketAddress *sockaddr;
|
||||
CanReachData data;
|
||||
|
||||
data.monitor = monitor;
|
||||
data.loop = g_main_loop_new (NULL, FALSE);
|
||||
|
||||
for (i = 0; addresses[i].address; i++)
|
||||
{
|
||||
@ -167,6 +214,12 @@ run_tests (GNetworkMonitor *monitor,
|
||||
reachable = g_network_monitor_can_reach (monitor,
|
||||
G_SOCKET_CONNECTABLE (sockaddr),
|
||||
NULL, &error);
|
||||
data.sockaddr = sockaddr;
|
||||
data.should_be_reachable = should_be_reachable;
|
||||
|
||||
g_idle_add (test_reach_async, &data);
|
||||
g_main_loop_run (data.loop);
|
||||
|
||||
g_object_unref (sockaddr);
|
||||
g_assert_cmpint (reachable, ==, should_be_reachable);
|
||||
if (should_be_reachable)
|
||||
@ -182,9 +235,12 @@ run_tests (GNetworkMonitor *monitor,
|
||||
static void
|
||||
test_default (void)
|
||||
{
|
||||
GNetworkMonitor *monitor;
|
||||
GNetworkMonitor *monitor, *m;
|
||||
GError *error = NULL;
|
||||
|
||||
m = g_network_monitor_get_default ();
|
||||
g_assert (G_IS_NETWORK_MONITOR (m));
|
||||
|
||||
monitor = g_initable_new (G_TYPE_NETWORK_MONITOR_BASE, NULL, &error, NULL);
|
||||
g_assert_no_error (error);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user