diff options
-rw-r--r-- | src/plugins/quectel/mm-modem-helpers-quectel.c | 16 | ||||
-rw-r--r-- | src/plugins/quectel/tests/test-modem-helpers-quectel.c | 31 |
2 files changed, 32 insertions, 15 deletions
diff --git a/src/plugins/quectel/mm-modem-helpers-quectel.c b/src/plugins/quectel/mm-modem-helpers-quectel.c index 7b0fe96d..126642ee 100644 --- a/src/plugins/quectel/mm-modem-helpers-quectel.c +++ b/src/plugins/quectel/mm-modem-helpers-quectel.c @@ -31,9 +31,10 @@ mm_quectel_parse_ctzu_test_response (const gchar *response, gboolean *supports_enable_update_rtc, GError **error) { - g_auto(GStrv) split = NULL; - g_autoptr(GArray) modes = NULL; - guint i; + g_auto(GStrv) split = NULL; + g_autoptr(GArray) modes = NULL; + GError *inner_error = NULL; + guint i; /* * Response may be: @@ -57,9 +58,14 @@ mm_quectel_parse_ctzu_test_response (const gchar *response, return FALSE; } - modes = mm_parse_uint_list (split[0], error); + modes = mm_parse_uint_list (split[0], &inner_error); + if (inner_error) { + g_propagate_prefixed_error (error, inner_error, "Failed to parse integer list in +CTZU test response: "); + return FALSE; + } if (!modes) { - g_prefix_error (error, "Failed to parse integer list in +CTZU test response: "); + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "Unexpected empty integer list in +CTZU test response: "); return FALSE; } diff --git a/src/plugins/quectel/tests/test-modem-helpers-quectel.c b/src/plugins/quectel/tests/test-modem-helpers-quectel.c index 6c695f00..43990e01 100644 --- a/src/plugins/quectel/tests/test-modem-helpers-quectel.c +++ b/src/plugins/quectel/tests/test-modem-helpers-quectel.c @@ -34,18 +34,23 @@ typedef struct { gboolean expect_supports_disable; gboolean expect_supports_enable; gboolean expect_supports_enable_update_rtc; + gboolean expect_error; } TestCtzuResponse; static const TestCtzuResponse test_ctzu_response[] = { - { "+CTZU: (0,1)", TRUE, TRUE, FALSE }, - { "+CTZU: (0,1,3)", TRUE, TRUE, TRUE }, + { "+CTZU: ", FALSE, FALSE, FALSE, TRUE }, + { "+CTZU: ()", FALSE, FALSE, FALSE, TRUE }, + { "+CTZU: (,)", FALSE, FALSE, FALSE, TRUE }, + { "+CTZU: (0,1)", TRUE, TRUE, FALSE, FALSE }, + { "+CTZU: (0,1,3)", TRUE, TRUE, TRUE, FALSE }, }; static void common_test_ctzu (const gchar *response, gboolean expect_supports_disable, gboolean expect_supports_enable, - gboolean expect_supports_enable_update_rtc) + gboolean expect_supports_enable_update_rtc, + gboolean expect_error) { g_autoptr(GError) error = NULL; gboolean res; @@ -59,12 +64,17 @@ common_test_ctzu (const gchar *response, &supports_enable, &supports_enable_update_rtc, &error); - g_assert_no_error (error); - g_assert (res); - - g_assert_cmpuint (expect_supports_disable, ==, supports_disable); - g_assert_cmpuint (expect_supports_enable, ==, supports_enable); - g_assert_cmpuint (expect_supports_enable_update_rtc, ==, supports_enable_update_rtc); + if (expect_error) { + g_assert (error); + g_assert (!res); + } else { + g_assert_no_error (error); + g_assert (res); + + g_assert_cmpuint (expect_supports_disable, ==, supports_disable); + g_assert_cmpuint (expect_supports_enable, ==, supports_enable); + g_assert_cmpuint (expect_supports_enable_update_rtc, ==, supports_enable_update_rtc); + } } static void @@ -76,7 +86,8 @@ test_ctzu (void) common_test_ctzu (test_ctzu_response[i].response, test_ctzu_response[i].expect_supports_disable, test_ctzu_response[i].expect_supports_enable, - test_ctzu_response[i].expect_supports_enable_update_rtc); + test_ctzu_response[i].expect_supports_enable_update_rtc, + test_ctzu_response[i].expect_error); } /*****************************************************************************/ |