diff options
author | Johan Hedberg <johan.hedberg@intel.com> | 2011-07-05 12:33:57 +0300 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2012-12-04 22:21:59 +0100 |
commit | 714abdfc725dfb94e049e25674437541b9770c98 (patch) | |
tree | 39baba110d8de090a76dcf997b8b1eb36a246c19 /unit/test-gobex-packet.c | |
parent | 2e49852cceb9fa6e1f72f01f488184635a940564 (diff) | |
download | bluez-714abdfc725dfb94e049e25674437541b9770c98.tar.gz |
gobex: Make on-demand header callbacks able to fail cleanly
Diffstat (limited to 'unit/test-gobex-packet.c')
-rw-r--r-- | unit/test-gobex-packet.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/unit/test-gobex-packet.c b/unit/test-gobex-packet.c index 501d924f6..33be55d9a 100644 --- a/unit/test-gobex-packet.c +++ b/unit/test-gobex-packet.c @@ -144,7 +144,7 @@ static void test_decode_encode(void) g_obex_packet_free(pkt); } -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 data[] = { 1, 2, 3, 4 }; @@ -178,6 +178,32 @@ static void test_encode_on_demand(void) g_obex_packet_free(pkt); } +static gssize get_body_data_fail(GObexHeader *header, void *buf, gsize len, + gpointer user_data) +{ + return -1; +} + +static void test_encode_on_demand_fail(void) +{ + GObexPacket *pkt; + GObexHeader *hdr; + uint8_t buf[255]; + gssize len; + + pkt = g_obex_packet_new(G_OBEX_OP_PUT, FALSE, NULL); + + hdr = g_obex_header_new_on_demand(G_OBEX_HDR_ID_BODY, + get_body_data_fail, NULL); + g_obex_packet_add_header(pkt, hdr); + + len = g_obex_packet_encode(pkt, buf, sizeof(buf)); + + g_assert_cmpint(len, ==, -1); + + g_obex_packet_free(pkt); +} + int main(int argc, char *argv[]) { g_test_init(&argc, &argv, NULL); @@ -194,6 +220,8 @@ int main(int argc, char *argv[]) g_test_add_func("/gobex/test_encode_pkt", test_decode_encode); g_test_add_func("/gobex/test_encode_on_demand", test_encode_on_demand); + g_test_add_func("/gobex/test_encode_on_demand_fail", + test_encode_on_demand_fail); g_test_run(); |