From dd94be3ffc5214eb6a3faec8a56eb2ff7e08ba2c Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Sat, 16 Nov 2019 13:07:59 +0200 Subject: [PATCH] tests: buf: Add byte order tests This adds tests for reading and writing 16, 24, 32, 48 and 64 bits in different byte orders. Signed-off-by: Luiz Augusto von Dentz --- tests/net/buf/src/main.c | 101 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 100 insertions(+), 1 deletion(-) diff --git a/tests/net/buf/src/main.c b/tests/net/buf/src/main.c index 6a767233664..5b2aeec6cc5 100644 --- a/tests/net/buf/src/main.c +++ b/tests/net/buf/src/main.c @@ -457,6 +457,104 @@ static void net_buf_test_var_pool(void) zassert_equal(destroy_called, 3, "Incorrect destroy callback count"); } +static void net_buf_test_byte_order(void) +{ + struct net_buf *buf; + u8_t le16[2] = { 0x02, 0x01 }; + u8_t be16[2] = { 0x01, 0x02 }; + u8_t le24[3] = { 0x03, 0x02, 0x01 }; + u8_t be24[3] = { 0x01, 0x02, 0x03 }; + u8_t le32[4] = { 0x04, 0x03, 0x02, 0x01 }; + u8_t be32[4] = { 0x01, 0x02, 0x03, 0x04 }; + u8_t le48[6] = { 0x06, 0x05, 0x04, 0x03, 0x02, 0x01 }; + u8_t be48[6] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 }; + u8_t le64[8] = { 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01 }; + u8_t be64[8] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; + u16_t u16; + u32_t u32; + u64_t u64; + + buf = net_buf_alloc_len(&fixed_pool, 16, K_FOREVER); + zassert_not_null(buf, "Failed to get buffer"); + + net_buf_add_mem(buf, &le16, sizeof(le16)); + net_buf_add_mem(buf, &be16, sizeof(be16)); + + u16 = net_buf_pull_le16(buf); + zassert_equal(u16, net_buf_pull_be16(buf), + "Invalid 16 bits byte order"); + + net_buf_add_le16(buf, u16); + net_buf_add_be16(buf, u16); + + zassert_mem_equal(le16, net_buf_pull_mem(buf, sizeof(le16)), + sizeof(le16), "Invalid 16 bits byte order"); + zassert_mem_equal(be16, net_buf_pull_mem(buf, sizeof(be16)), + sizeof(be16), "Invalid 16 bits byte order"); + + net_buf_add_mem(buf, &le24, sizeof(le24)); + net_buf_add_mem(buf, &be24, sizeof(be24)); + + u32 = net_buf_pull_le24(buf); + zassert_equal(u32, net_buf_pull_be24(buf), + "Invalid 24 bits byte order"); + + net_buf_add_le24(buf, u32); + net_buf_add_be24(buf, u32); + + zassert_mem_equal(le24, net_buf_pull_mem(buf, sizeof(le24)), + sizeof(le24), "Invalid 24 bits byte order"); + zassert_mem_equal(be24, net_buf_pull_mem(buf, sizeof(be24)), + sizeof(be24), "Invalid 24 bits byte order"); + + net_buf_add_mem(buf, &le32, sizeof(le32)); + net_buf_add_mem(buf, &be32, sizeof(be32)); + + u32 = net_buf_pull_le32(buf); + zassert_equal(u32, net_buf_pull_be32(buf), + "Invalid 32 bits byte order"); + + net_buf_add_le32(buf, u32); + net_buf_add_be32(buf, u32); + + zassert_mem_equal(le32, net_buf_pull_mem(buf, sizeof(le32)), + sizeof(le32), "Invalid 32 bits byte order"); + zassert_mem_equal(be32, net_buf_pull_mem(buf, sizeof(be32)), + sizeof(be32), "Invalid 32 bits byte order"); + + net_buf_add_mem(buf, &le48, sizeof(le48)); + net_buf_add_mem(buf, &be48, sizeof(be48)); + + u64 = net_buf_pull_le48(buf); + zassert_equal(u64, net_buf_pull_be48(buf), + "Invalid 48 bits byte order"); + + net_buf_add_le48(buf, u64); + net_buf_add_be48(buf, u64); + + zassert_mem_equal(le48, net_buf_pull_mem(buf, sizeof(le48)), + sizeof(le48), "Invalid 48 bits byte order"); + zassert_mem_equal(be48, net_buf_pull_mem(buf, sizeof(be48)), + sizeof(be48), "Invalid 48 bits byte order"); + + net_buf_add_mem(buf, &le64, sizeof(le64)); + net_buf_add_mem(buf, &be64, sizeof(be64)); + + u64 = net_buf_pull_le64(buf); + zassert_equal(u64, net_buf_pull_be64(buf), + "Invalid 64 bits byte order"); + + net_buf_add_le64(buf, u64); + net_buf_add_be64(buf, u64); + + zassert_mem_equal(le64, net_buf_pull_mem(buf, sizeof(le64)), + sizeof(le64), "Invalid 64 bits byte order"); + zassert_mem_equal(be64, net_buf_pull_mem(buf, sizeof(be64)), + sizeof(be48), "Invalid 64 bits byte order"); + + net_buf_unref(buf); +} + void test_main(void) { ztest_test_suite(net_buf_test, @@ -468,7 +566,8 @@ void test_main(void) ztest_unit_test(net_buf_test_multi_frags), ztest_unit_test(net_buf_test_clone), ztest_unit_test(net_buf_test_fixed_pool), - ztest_unit_test(net_buf_test_var_pool) + ztest_unit_test(net_buf_test_var_pool), + ztest_unit_test(net_buf_test_byte_order) ); ztest_run_test_suite(net_buf_test);