libmm-glib,tests: add ishexstr/hexstr2bin/bin2hexstr unit tests

This commit is contained in:
Aleksander Morgado
2021-02-14 10:20:44 +01:00
parent 34de613dea
commit 5480cb67b2

View File

@@ -501,6 +501,102 @@ field_parser_double (void)
g_free (str);
}
/**************************************************************/
/* hexstr2bin & bin2hexstr */
static void
common_hexstr2bin_test_failure (const gchar *input_hex)
{
g_autoptr(GError) error = NULL;
g_autofree guint8 *bin = NULL;
gsize bin_len = 0;
g_assert (mm_utils_ishexstr (input_hex) == FALSE);
bin = mm_utils_hexstr2bin (input_hex, -1, &bin_len, &error);
g_assert_null (bin);
g_assert_nonnull (error);
}
static void
common_hexstr2bin_test_success_len (const gchar *input_hex,
gssize input_hex_len)
{
g_autoptr(GError) error = NULL;
g_autofree guint8 *bin = NULL;
gsize bin_len = 0;
g_autofree gchar *hex = NULL;
bin = mm_utils_hexstr2bin (input_hex, input_hex_len, &bin_len, &error);
g_assert_nonnull (bin);
g_assert_no_error (error);
hex = mm_utils_bin2hexstr (bin, bin_len);
g_assert_nonnull (hex);
if (input_hex_len == -1)
g_assert (g_ascii_strcasecmp (input_hex, hex) == 0);
else
g_assert (g_ascii_strncasecmp (input_hex, hex, (gsize)input_hex_len) == 0);
}
static void
common_hexstr2bin_test_success (const gchar *input_hex)
{
gsize input_hex_len;
gssize i;
g_assert (mm_utils_ishexstr (input_hex) == TRUE);
common_hexstr2bin_test_success_len (input_hex, -1);
input_hex_len = strlen (input_hex);
for (i = input_hex_len; i >= 2; i-=2)
common_hexstr2bin_test_success_len (input_hex, i);
}
static void
hexstr_lower_case (void)
{
common_hexstr2bin_test_success ("000123456789abcdefff");
}
static void
hexstr_upper_case (void)
{
common_hexstr2bin_test_success ("000123456789ABCDEFFF");
}
static void
hexstr_mixed_case (void)
{
common_hexstr2bin_test_success ("000123456789AbcDefFf");
}
static void
hexstr_empty (void)
{
common_hexstr2bin_test_failure ("");
}
static void
hexstr_missing_digits (void)
{
common_hexstr2bin_test_failure ("012");
}
static void
hexstr_wrong_digits_all (void)
{
common_hexstr2bin_test_failure ("helloworld");
}
static void
hexstr_wrong_digits_some (void)
{
common_hexstr2bin_test_failure ("012345k7");
}
/**************************************************************/
int main (int argc, char **argv)
@@ -539,5 +635,13 @@ int main (int argc, char **argv)
g_test_add_func ("/MM/Common/FieldParsers/Uint", field_parser_uint);
g_test_add_func ("/MM/Common/FieldParsers/Double", field_parser_double);
g_test_add_func ("/MM/Common/HexStr/lower-case", hexstr_lower_case);
g_test_add_func ("/MM/Common/HexStr/upper-case", hexstr_upper_case);
g_test_add_func ("/MM/Common/HexStr/mixed-case", hexstr_mixed_case);
g_test_add_func ("/MM/Common/HexStr/missing-empty", hexstr_empty);
g_test_add_func ("/MM/Common/HexStr/missing-digits", hexstr_missing_digits);
g_test_add_func ("/MM/Common/HexStr/wrong-digits-all", hexstr_wrong_digits_all);
g_test_add_func ("/MM/Common/HexStr/wrong-digits-some", hexstr_wrong_digits_some);
return g_test_run ();
}