summaryrefslogtreecommitdiff
path: root/unit/test-gobex-header.c
diff options
context:
space:
mode:
authorJakub Adamek <adamek.kuba@gmail.com>2011-08-14 15:16:25 +0200
committerMarcel Holtmann <marcel@holtmann.org>2012-12-04 22:22:02 +0100
commitf264b1c744396b4b723f34f699526592a519edb1 (patch)
tree544f9c076f6c98319df0115e2187a340048e208d /unit/test-gobex-header.c
parentcb6fe44ba125817a58f41d44018734a0377a873e (diff)
downloadbluez-f264b1c744396b4b723f34f699526592a519edb1.tar.gz
gobex: Fix encoding of empty unicode headers
According to IrOBEX: "An empty Name header is defined as a Name header of length 3 (one byte opcode + two byte length)." The current code encodes an empty header with 5 bytes, including two bytes of null-terminator. This patch assumes that this definition of emptiness applies to all unicode headers, not just the name header.
Diffstat (limited to 'unit/test-gobex-header.c')
-rw-r--r--unit/test-gobex-header.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/unit/test-gobex-header.c b/unit/test-gobex-header.c
index f67b3a860..93da949ee 100644
--- a/unit/test-gobex-header.c
+++ b/unit/test-gobex-header.c
@@ -27,6 +27,7 @@
#include "util.h"
static uint8_t hdr_connid[] = { G_OBEX_HDR_CONNECTION, 1, 2, 3, 4 };
+static uint8_t hdr_name_empty[] = { G_OBEX_HDR_NAME, 0x00, 0x03 };
static uint8_t hdr_name_ascii[] = { G_OBEX_HDR_NAME, 0x00, 0x0b,
0x00, 'f', 0x00, 'o', 0x00, 'o',
0x00, 0x00 };
@@ -46,6 +47,23 @@ static uint8_t hdr_bytes_nval_short[] = { G_OBEX_HDR_BODY, 0xab, 0xcd,
0x01, 0x02, 0x03 };
static uint8_t hdr_bytes_nval_data[] = { G_OBEX_HDR_BODY, 0xab };
+static void test_header_name_empty(void)
+{
+ GObexHeader *header;
+ uint8_t buf[1024];
+ size_t len;
+
+ header = g_obex_header_new_unicode(G_OBEX_HDR_NAME, "");
+
+ g_assert(header != NULL);
+
+ len = g_obex_header_encode(header, buf, sizeof(buf));
+
+ assert_memequal(hdr_name_empty, sizeof(hdr_name_empty), buf, len);
+
+ g_obex_header_free(header);
+}
+
static void test_header_name_ascii(void)
{
GObexHeader *header;
@@ -194,6 +212,22 @@ static void test_header_encode_name_umlaut(void)
g_obex_header_free(header);
}
+static void test_header_encode_name_empty(void)
+{
+ GObexHeader *header;
+ const char *str;
+ gboolean ret;
+
+ header = parse_and_encode(hdr_name_empty, sizeof(hdr_name_empty));
+
+ ret = g_obex_header_get_unicode(header, &str);
+
+ g_assert(ret == TRUE);
+ g_assert_cmpstr(str, ==, "");
+
+ g_obex_header_free(header);
+}
+
static void test_header_encode_body(void)
{
GObexHeader *header;
@@ -258,6 +292,21 @@ static void test_decode_header_name_ascii(void)
g_obex_header_free(header);
}
+static void test_decode_header_name_empty(void)
+{
+ GObexHeader *header;
+ size_t parsed;
+ GError *err = NULL;
+
+ header = g_obex_header_decode(hdr_name_empty, sizeof(hdr_name_empty),
+ G_OBEX_DATA_REF, &parsed, &err);
+ g_assert_no_error(err);
+
+ g_assert_cmpuint(parsed, ==, sizeof(hdr_name_empty));
+
+ g_obex_header_free(header);
+}
+
static void test_decode_header_name_umlaut(void)
{
GObexHeader *header;
@@ -412,6 +461,8 @@ int main(int argc, char *argv[])
g_test_add_func("/gobex/test_decode_header_connid",
test_decode_header_connid);
+ g_test_add_func("/gobex/test_decode_header_name_empty",
+ test_decode_header_name_empty);
g_test_add_func("/gobex/test_decode_header_name_ascii",
test_decode_header_name_ascii);
g_test_add_func("/gobex/test_decode_header_name_umlaut",
@@ -438,6 +489,8 @@ int main(int argc, char *argv[])
g_test_add_func("/gobex/test_header_encode_connid",
test_header_encode_connid);
+ g_test_add_func("/gobex/test_header_encode_name_empty",
+ test_header_encode_name_empty);
g_test_add_func("/gobex/test_header_encode_name_ascii",
test_header_encode_name_ascii);
g_test_add_func("/gobex/test_header_encode_name_umlaut",
@@ -447,6 +500,8 @@ int main(int argc, char *argv[])
g_test_add_func("/gobex/test_header_encode_connid",
test_header_encode_actionid);
+ g_test_add_func("/gobex/test_header_name_empty",
+ test_header_name_empty);
g_test_add_func("/gobex/test_header_name_ascii",
test_header_name_ascii);
g_test_add_func("/gobex/test_header_name_umlaut",