summaryrefslogtreecommitdiff
path: root/unit/test-gobex-header.c
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@intel.com>2011-07-05 12:33:57 +0300
committerMarcel Holtmann <marcel@holtmann.org>2012-12-04 22:21:59 +0100
commit714abdfc725dfb94e049e25674437541b9770c98 (patch)
tree39baba110d8de090a76dcf997b8b1eb36a246c19 /unit/test-gobex-header.c
parent2e49852cceb9fa6e1f72f01f488184635a940564 (diff)
downloadbluez-714abdfc725dfb94e049e25674437541b9770c98.tar.gz
gobex: Make on-demand header callbacks able to fail cleanly
Diffstat (limited to 'unit/test-gobex-header.c')
-rw-r--r--unit/test-gobex-header.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/unit/test-gobex-header.c b/unit/test-gobex-header.c
index 61536e268..bf69abb48 100644
--- a/unit/test-gobex-header.c
+++ b/unit/test-gobex-header.c
@@ -130,7 +130,7 @@ static void test_header_uint32(void)
g_obex_header_free(header);
}
-static guint16 get_body_data(GObexHeader *header, void *buf, gsize len,
+static gssize get_body_data(GObexHeader *header, void *buf, gsize len,
gpointer user_data)
{
uint8_t body_data[] = { 1, 2, 3, 4 };
@@ -156,6 +156,27 @@ static void test_header_on_demand(void)
g_obex_header_free(header);
}
+static gssize get_body_data_fail(GObexHeader *header, void *buf, gsize len,
+ gpointer user_data)
+{
+ return -1;
+}
+
+static void test_header_on_demand_fail(void)
+{
+ GObexHeader *header;
+ uint8_t buf[1024];
+ gssize len;
+
+ header = g_obex_header_new_on_demand(G_OBEX_HDR_ID_BODY,
+ get_body_data_fail, NULL);
+
+ len = g_obex_header_encode(header, buf, sizeof(buf));
+ g_assert_cmpint(len, ==, -1);
+
+ g_obex_header_free(header);
+}
+
static GObexHeader *parse_and_encode(uint8_t *buf, size_t buf_len)
{
GObexHeader *header;
@@ -485,6 +506,8 @@ int main(int argc, char *argv[])
g_test_add_func("/gobex/test_header_uint32", test_header_uint32);
g_test_add_func("/gobex/test_header_on_demand", test_header_on_demand);
+ g_test_add_func("/gobex/test_header_on_demand_fail",
+ test_header_on_demand_fail);
g_test_run();