diff options
-rw-r--r-- | unit/test-sms.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/unit/test-sms.c b/unit/test-sms.c index c9a5f8a6..13b01b04 100644 --- a/unit/test-sms.c +++ b/unit/test-sms.c @@ -402,7 +402,46 @@ static void test_simple_submit() static void test_submit_encode() { + struct sms sms; + unsigned char *decoded_pdu; + long pdu_len; + gboolean ret; + unsigned char pdu[176]; + int encoded_pdu_len; + int encoded_tpdu_len; + char *encoded_pdu; + + decoded_pdu = decode_hex(simple_submit, -1, &pdu_len, 0); + g_assert(decoded_pdu); + g_assert(pdu_len == (long)strlen(simple_submit) / 2); + + ret = decode_sms(decoded_pdu, pdu_len, TRUE, 23, &sms); + + g_free(decoded_pdu); + + g_assert(ret); + g_assert(sms.type == SMS_TYPE_SUBMIT); + + ret = encode_sms(&sms, &encoded_pdu_len, &encoded_tpdu_len, pdu); + + if (g_test_verbose()) { + int i; + + for (i = 0; i < encoded_pdu_len; i++) + g_print("%02X", pdu[i]); + g_print("\n"); + } + + g_assert(ret); + g_assert(encoded_tpdu_len == 23); + g_assert(encoded_pdu_len == pdu_len); + + encoded_pdu = encode_hex(pdu, encoded_pdu_len, 0); + + g_assert(strcmp(simple_submit, encoded_pdu) == 0); + + g_free(encoded_pdu); } int main(int argc, char **argv) |