diff options
Diffstat (limited to 'libqmi-glib/test/test-utils.c')
-rw-r--r-- | libqmi-glib/test/test-utils.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/libqmi-glib/test/test-utils.c b/libqmi-glib/test/test-utils.c index 290b48d..90d6759 100644 --- a/libqmi-glib/test/test-utils.c +++ b/libqmi-glib/test/test-utils.c @@ -297,6 +297,58 @@ test_utils_int64 (void) g_assert (memcmp (in_buffer, out_buffer, sizeof (in_buffer)) == 0); } +static void +common_test_utils_uint_sized (guint n_bytes) +{ + static guint8 in_buffer[8] = { + 0x0F, 0x50, 0xEB, 0xE2, 0xB6, 0x00, 0x00, 0x00 + }; + guint64 value = 0x000000B6E2EB500F; + guint8 expected_out_buffer[8] = { 0 }; + guint8 out_buffer[8] = { 0 }; + + guint64 tmp; + guint i; + guint16 in_buffer_size; + guint8 *in_buffer_walker; + guint16 out_buffer_size; + guint8 *out_buffer_walker; + + /* Build expected intermediate value */ + tmp = 0xFF; + for (i = 1; i < n_bytes; i++) { + tmp <<= 8; + tmp |= 0xFF; + } + value &= tmp; + + /* Build expected output buffer */ + memcpy (expected_out_buffer, in_buffer, n_bytes); + + in_buffer_size = sizeof (in_buffer); + in_buffer_walker = &in_buffer[0]; + out_buffer_size = sizeof (out_buffer); + out_buffer_walker = &out_buffer[0]; + i = 0; + + qmi_utils_read_sized_guint_from_buffer (&in_buffer_walker, &in_buffer_size, n_bytes, &tmp); + g_assert (tmp == value); + qmi_utils_write_sized_guint_to_buffer (&out_buffer_walker, &out_buffer_size, n_bytes, &tmp); + + g_assert_cmpuint (out_buffer_size, ==, 8 - n_bytes); + g_assert (memcmp (expected_out_buffer, out_buffer, sizeof (expected_out_buffer)) == 0); +} + +static void +test_utils_uint_sized (void) +{ + guint i; + + for (i = 1; i <= 8; i++) { + common_test_utils_uint_sized (i); + } +} + int main (int argc, char **argv) { g_type_init (); @@ -311,5 +363,7 @@ int main (int argc, char **argv) g_test_add_func ("/libqmi-glib/utils/uint64", test_utils_uint64); g_test_add_func ("/libqmi-glib/utils/int64", test_utils_int64); + g_test_add_func ("/libqmi-glib/utils/uint-sized", test_utils_uint_sized); + return g_test_run (); } |