[PATCH 1/3] unit/test-hfp: Use tester framework

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



---
 unit/test-hfp.c | 91 ++++++++++++++++++++++++++++-----------------------------
 1 file changed, 44 insertions(+), 47 deletions(-)

diff --git a/unit/test-hfp.c b/unit/test-hfp.c
index 66966ce..f2b9622 100644
--- a/unit/test-hfp.c
+++ b/unit/test-hfp.c
@@ -29,9 +29,9 @@
 
 #include <glib.h>
 #include "src/shared/hfp.h"
+#include "src/shared/tester.h"
 
 struct context {
-	GMainLoop *main_loop;
 	guint watch_id;
 	int fd_server;
 	int fd_client;
@@ -97,7 +97,7 @@ struct test_data {
 		data.test_name = g_strdup(name);			\
 		data.pdu_list = g_memdup(pdus, sizeof(pdus));		\
 		data.result_func = result_function;			\
-		g_test_add_data_func(name, &data, function);		\
+		tester_add(name, &data, NULL, function, NULL);		\
 		data.test_handler = test_handler;			\
 	} while (0)
 
@@ -112,15 +112,10 @@ struct test_data {
 		data.pdu_list = g_memdup(pdus, sizeof(pdus));		\
 		data.hf_result_func = result_func;			\
 		data.response_func = response_function;			\
-		g_test_add_data_func(name, &data, function);		\
+		tester_add(name, &data, NULL, function, NULL);		\
 		data.test_handler = test_hf_handler;			\
 	} while (0)
 
-static void context_quit(struct context *context)
-{
-	g_main_loop_quit(context->main_loop);
-}
-
 static void test_free(gconstpointer user_data)
 {
 	const struct test_data *data = user_data;
@@ -129,6 +124,34 @@ static void test_free(gconstpointer user_data)
 	g_free(data->pdu_list);
 }
 
+static void destroy_context(struct context *context)
+{
+	if (context->watch_id)
+		g_source_remove(context->watch_id);
+
+	test_free(context->data);
+
+	if (context->hfp)
+		hfp_gw_unref(context->hfp);
+
+	if (context->hfp_hf)
+		hfp_hf_unref(context->hfp_hf);
+
+	g_free(context);
+}
+
+static gboolean context_quit(gpointer user_data)
+{
+	struct context *context = user_data;
+
+	if (context == NULL)
+		return FALSE;
+
+	destroy_context(context);
+	tester_test_passed();
+	return FALSE;
+}
+
 static gboolean test_handler(GIOChannel *channel, GIOCondition cond,
 							gpointer user_data)
 {
@@ -138,10 +161,10 @@ static gboolean test_handler(GIOChannel *channel, GIOCondition cond,
 	pdu = &context->data->pdu_list[context->pdu_offset++];
 
 	g_assert(!pdu->valid);
-	context_quit(context);
-
 	context->watch_id = 0;
 
+	context_quit(context);
+
 	return FALSE;
 }
 
@@ -184,9 +207,10 @@ static gboolean test_hf_handler(GIOChannel *channel, GIOCondition cond,
 	return TRUE;
 
 done:
-	context_quit(context);
 	context->watch_id = 0;
 
+	context_quit(context);
+
 	return FALSE;
 }
 
@@ -224,9 +248,6 @@ static struct context *create_context(gconstpointer data)
 	int err, sv[2];
 	const struct test_data *d = data;
 
-	context->main_loop = g_main_loop_new(NULL, FALSE);
-	g_assert(context->main_loop);
-
 	err = socketpair(AF_UNIX, SOCK_SEQPACKET | SOCK_CLOEXEC, 0, sv);
 	g_assert(err == 0);
 
@@ -251,26 +272,6 @@ static struct context *create_context(gconstpointer data)
 	return context;
 }
 
-static void execute_context(struct context *context)
-{
-	g_main_loop_run(context->main_loop);
-
-	if (context->watch_id)
-		g_source_remove(context->watch_id);
-
-	g_main_loop_unref(context->main_loop);
-
-	test_free(context->data);
-
-	if (context->hfp)
-		hfp_gw_unref(context->hfp);
-
-	if (context->hfp_hf)
-		hfp_hf_unref(context->hfp_hf);
-
-	g_free(context);
-}
-
 static void test_init(gconstpointer data)
 {
 	struct context *context = create_context(data);
@@ -283,7 +284,7 @@ static void test_init(gconstpointer data)
 	hfp_gw_unref(context->hfp);
 	context->hfp = NULL;
 
-	execute_context(context);
+	context_quit(context);
 }
 
 static void test_command_handler(gconstpointer data)
@@ -308,7 +309,7 @@ static void test_command_handler(gconstpointer data)
 	len = write(context->fd_server, pdu->data, pdu->size);
 	g_assert_cmpint(len, ==, pdu->size);
 
-	execute_context(context);
+	context_quit(context);
 }
 
 static void test_register(gconstpointer data)
@@ -337,7 +338,7 @@ static void test_register(gconstpointer data)
 	len = write(context->fd_server, pdu->data, pdu->size);
 	g_assert_cmpint(len, ==, pdu->size);
 
-	execute_context(context);
+	context_quit(context);
 }
 
 static void test_fragmented(gconstpointer data)
@@ -352,8 +353,6 @@ static void test_fragmented(gconstpointer data)
 	g_assert(ret);
 
 	g_idle_add(send_pdu, context);
-
-	execute_context(context);
 }
 
 static void test_send_and_close(gconstpointer data)
@@ -372,7 +371,7 @@ static void test_send_and_close(gconstpointer data)
 	hfp_gw_unref(context->hfp);
 	context->hfp = NULL;
 
-	execute_context(context);
+	context_quit(context);
 }
 
 static void check_ustring_1(struct hfp_context *result,
@@ -494,7 +493,7 @@ static void test_hf_init(gconstpointer data)
 	hfp_hf_unref(context->hfp_hf);
 	context->hfp_hf = NULL;
 
-	execute_context(context);
+	context_quit(context);
 }
 
 static bool unsolicited_resp = false;
@@ -567,7 +566,7 @@ static void test_hf_send_command(gconstpointer data)
 		g_assert(ret);
 	}
 
-	execute_context(context);
+	context_quit(context);
 }
 static void hf_chld_result_handler(struct hfp_context *hf_context,
 							void *user_data)
@@ -667,8 +666,6 @@ static void test_hf_unsolicited(gconstpointer data)
 	}
 
 	send_pdu(context);
-
-	execute_context(context);
 }
 
 static void test_hf_robustness(gconstpointer data)
@@ -687,12 +684,12 @@ static void test_hf_robustness(gconstpointer data)
 	hfp_hf_unref(context->hfp_hf);
 	context->hfp_hf = NULL;
 
-	execute_context(context);
+	context_quit(context);
 }
 
 int main(int argc, char *argv[])
 {
-	g_test_init(&argc, &argv, NULL);
+	tester_init(&argc, &argv);
 
 	define_test("/hfp/test_init", test_init, NULL, data_end());
 	define_test("/hfp/test_cmd_handler_1", test_command_handler, NULL,
@@ -860,5 +857,5 @@ int main(int argc, char *argv[])
 			frg_pdu('1', ',', '2', 'x', '\r', '\n'),
 			data_end());
 
-	return g_test_run();
+	return tester_run();
 }
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux