/* *INDENT-OFF* */ START_PARAMETRIZED_TEST (test_deserialize_config_incorrect, test_deserialize_config_incorrect_ds) /* *INDENT-ON* */ { /* given */ mc_config_t *actual_result; /* when */ actual_result = mc_deserialize_config (data->input_string, &error); /* then */ mctest_assert_null (actual_result); mctest_assert_int_eq (error->code, data->expected_error_code); mctest_assert_str_eq (error->message, data->expected_error_string); }
/* *INDENT-OFF* */ END_PARAMETRIZED_TEST /* *INDENT-ON* */ /* --------------------------------------------------------------------------------------------- */ /* *INDENT-OFF* */ START_TEST (test_deserialize_config) /* *INDENT-ON* */ { /* given */ mc_config_t *actual; char *actual_value; /* when */ actual = mc_deserialize_config (deserialize_input_value1, &error); /* then */ mctest_assert_not_null (actual); actual_value = mc_config_get_string_raw (actual, "group1", "param1", ""); mctest_assert_str_eq (actual_value, "some value"); g_free (actual_value); actual_value = mc_config_get_string (actual, "group1", "param2", ""); mctest_assert_str_eq (actual_value, "some value "); g_free (actual_value); mctest_assert_int_eq (mc_config_get_bool (actual, "group2", "param1", FALSE), TRUE); mctest_assert_int_eq (mc_config_get_int (actual, "group2", "param2", 0), 123456); actual_value = mc_config_get_string_raw (actual, "group3", "param1", ""); mctest_assert_str_eq (actual_value, "::bla-bla::"); g_free (actual_value); actual_value = mc_config_get_string (actual, "group3", "param2", ""); mctest_assert_str_eq (actual_value, "bla-:p1:w:v2:12:g3:123:bla-bla\n"); g_free (actual_value); mctest_assert_int_eq (mc_config_get_bool (actual, "group4", "param1", TRUE), FALSE); mctest_assert_int_eq (mc_config_get_int (actual, "group4", "param2", 0), 654321); mc_config_deinit (actual); }
END_TEST /* --------------------------------------------------------------------------------------------- */ #undef deserialize_check_incorrect #define deserialize_check_incorrect( etalon_code, etalon_str ) { \ if (actual != NULL) \ { \ fail("actual value but should be NULL", actual); \ mc_config_deinit(actual); \ } \ else \ { \ fail_unless (error->code == etalon_code && strcmp(error->message, etalon_str) == 0, \ "\nerror code is %d (should be %d);\nerror message is '%s' (should be '%s')", \ error->code, etalon_code, error->message, etalon_str); \ g_clear_error(&error); \ } \ } START_TEST (test_deserialize_config) { mc_config_t *actual; GError *error = NULL; char *actual_value; actual = mc_deserialize_config ("g123error in group name", &error); deserialize_check_incorrect( -3, "mc_deserialize_config() at 1: mc_serialize_str(): Length delimiter ':' doesn't exists"); actual = mc_deserialize_config ("p6:param1v10:some valuep6:param2v11:some value ", &error); deserialize_check_incorrect( -2, "mc_deserialize_config() at 1: mc_serialize_str(): String prefix doesn't equal to 'g'"); actual = mc_deserialize_config ("g6:group1v10:some valuep6:param2v11:some value ", &error); deserialize_check_incorrect( -2, "mc_deserialize_config() at 10: mc_serialize_str(): String prefix doesn't equal to 'p'"); actual = mc_deserialize_config ("g6:group1p6000:param2v11:some value ", &error); deserialize_check_incorrect( -3, "mc_deserialize_config() at 10: mc_serialize_str(): Specified data length (6000) is greater than actual data length (21)"); actual = mc_deserialize_config (etalon_str, &error); if (actual == NULL) { fail("actual value is NULL!\nError code is '%d'; error message is '%s'", error->code, error->message); g_clear_error(&error); return; } actual_value = mc_config_get_string_raw(actual, "group1", "param1", ""); fail_unless( strcmp(actual_value, "some value") == 0, "group1->param1(%s) should be equal to 'some value'", actual_value); g_free(actual_value); actual_value = mc_config_get_string(actual, "group1", "param2", ""); fail_unless( strcmp(actual_value, "some value ") == 0, "group1->param2(%s) should be equal to 'some value '", actual_value); g_free(actual_value); fail_unless( mc_config_get_bool(actual, "group2", "param1", FALSE) == TRUE, "group2->param1(FALSE) should be equal to TRUE"); fail_unless( mc_config_get_int(actual, "group2", "param2", 0) == 123456, "group2->param2(%d) should be equal to 123456", mc_config_get_int(actual, "group2", "param2", 0)); actual_value = mc_config_get_string_raw(actual, "group3", "param1", ""); fail_unless( strcmp(actual_value, "::bla-bla::") == 0, "group3->param1(%s) should be equal to '::bla-bla::'", actual_value); g_free(actual_value); actual_value = mc_config_get_string(actual, "group3", "param2", ""); fail_unless( strcmp(actual_value, "bla-:p1:w:v2:12:g3:123:bla-bla\n") == 0, "group3->param2(%s) should be equal to 'bla-:p1:w:v2:12:g3:123:bla-bla\n'", actual_value); g_free(actual_value); fail_unless( mc_config_get_bool(actual, "group4", "param1", TRUE) == FALSE, "group4->param1(TRUE) should be equal to FALSE"); fail_unless( mc_config_get_int(actual, "group4", "param2", 0) == 654321, "group4->param2(%d) should be equal to 654321", mc_config_get_int(actual, "group4", "param2", 0)); mc_config_deinit (actual); }