libmm-glib,tests: add ishexstr/hexstr2bin/bin2hexstr unit tests
This commit is contained in:
@@ -501,6 +501,102 @@ field_parser_double (void)
|
|||||||
g_free (str);
|
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)
|
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/Uint", field_parser_uint);
|
||||||
g_test_add_func ("/MM/Common/FieldParsers/Double", field_parser_double);
|
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 ();
|
return g_test_run ();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user