diff options
author | Anderson Lizardo <anderson.lizardo@openbossa.org> | 2013-01-10 21:22:02 -0400 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2013-01-16 14:35:07 +0200 |
commit | 53da9df4da192d5dfcd6ccd905cbe0fd4cd2bac1 (patch) | |
tree | b675753225047c2361e0ff6e51c250ad1565e100 /unit/test-sdp.c | |
parent | cc291810aab621012df19bf947d4bcd04249d269 (diff) | |
download | bluez-53da9df4da192d5dfcd6ccd905cbe0fd4cd2bac1.tar.gz |
unit: Add tests for SDP integer Data Elements
SDP_DATA_NIL does not have a value, but its sdp_data_t val field is
zeroed by memset(), so just treat it as UINT8 with zero value to
simplify checking (and not require a separate macro.)
SDP_BOOL is handled by SDP library as a INT8.
SDP_UINT128/SDP_INT128 are just byte arrays converted to host order, so
use memcmp() to compare them (converting from host to network order
first.)
Diffstat (limited to 'unit/test-sdp.c')
-rw-r--r-- | unit/test-sdp.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/unit/test-sdp.c b/unit/test-sdp.c index e02fa956b..5aa6948fd 100644 --- a/unit/test-sdp.c +++ b/unit/test-sdp.c @@ -52,6 +52,7 @@ struct test_data { }; #define raw_data(args...) ((const unsigned char[]) { args }) +#define build_u128(args...) ((const uint128_t) { .data = { args } }) #define raw_pdu(args...) \ { \ @@ -762,6 +763,7 @@ static void test_sdp(gconstpointer data) static void test_sdp_de_attr(gconstpointer data) { const struct test_data_de *test = data; + uint128_t u128; sdp_data_t *d; int size = 0; @@ -780,6 +782,39 @@ static void test_sdp_de_attr(gconstpointer data) case SDP_URL_STR16: g_assert_cmpstr(test->expected.val.str, ==, d->val.str); break; + case SDP_DATA_NIL: + case SDP_UINT8: + g_assert_cmpuint(test->expected.val.uint8, ==, d->val.uint8); + break; + case SDP_UINT16: + g_assert_cmpuint(test->expected.val.uint16, ==, d->val.uint16); + break; + case SDP_UINT32: + g_assert_cmpuint(test->expected.val.uint32, ==, d->val.uint32); + break; + case SDP_UINT64: + g_assert_cmpuint(test->expected.val.uint64, ==, d->val.uint64); + break; + case SDP_BOOL: + case SDP_INT8: + g_assert_cmpuint(test->expected.val.int8, ==, d->val.int8); + break; + case SDP_INT16: + g_assert_cmpuint(test->expected.val.int16, ==, d->val.int16); + break; + case SDP_INT32: + g_assert_cmpuint(test->expected.val.int32, ==, d->val.int32); + break; + case SDP_INT64: + g_assert_cmpuint(test->expected.val.int64, ==, d->val.int64); + break; + case SDP_UINT128: + case SDP_INT128: + /* Expected bytes are in network order */ + hton128(&d->val.uint128, &u128); + g_assert(memcmp(&test->expected.val.uint128, &u128, + sizeof(uint128_t)) == 0); + break; default: g_assert_not_reached(); } @@ -2768,6 +2803,55 @@ int main(int argc, char *argv[]) 0x6c, 0x75, 0x65, 0x7a, 0x2e, 0x6f, 0x72, 0x67, 0x2f), exp_data(SDP_URL_STR16, str, "http://www.bluez.org/")); + define_test_de_attr("NIL", + raw_data(0x00), + exp_data(SDP_DATA_NIL, uint8, 0)); + define_test_de_attr("UINT8", + raw_data(0x08, 0xff), + exp_data(SDP_UINT8, uint8, UINT8_MAX)); + define_test_de_attr("INT8", + raw_data(0x10, 0x80), + exp_data(SDP_INT8, int8, INT8_MIN)); + define_test_de_attr("BOOL", + raw_data(0x28, 0x01), + exp_data(SDP_BOOL, int8, 1)); + define_test_de_attr("UINT16", + raw_data(0x09, 0xff, 0xff), + exp_data(SDP_UINT16, uint16, UINT16_MAX)); + define_test_de_attr("INT16", + raw_data(0x11, 0x80, 0x00), + exp_data(SDP_INT16, int16, INT16_MIN)); + define_test_de_attr("UINT32", + raw_data(0x0A, 0xff, 0xff, 0xff, 0xff), + exp_data(SDP_UINT32, uint32, UINT32_MAX)); + define_test_de_attr("INT32", + raw_data(0x12, 0x80, 0x00, 0x00, 0x00), + exp_data(SDP_INT32, int32, INT32_MIN)); + define_test_de_attr("UINT64", + raw_data(0x0B, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff), + exp_data(SDP_UINT64, uint64, UINT64_MAX)); + define_test_de_attr("INT64", + raw_data(0x13, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00), + exp_data(SDP_INT64, int64, INT64_MIN)); + /* UINT128/INT128 are just byte arrays parsed as uint128_t */ + define_test_de_attr("UINT128", + raw_data(0x0C, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff), + exp_data(SDP_UINT128, uint128, + build_u128(0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff))); + define_test_de_attr("INT128", + raw_data(0x14, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00), + exp_data(SDP_INT128, uint128, + build_u128(0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00))); return g_test_run(); } |