test-sms: Add skeleton code for MWI unit test

This commit is contained in:
Denis Kenzior 2013-09-03 22:58:40 -05:00
parent c912e0066a
commit 0cdf3ced1f
1 changed files with 105 additions and 0 deletions

View File

@ -41,6 +41,9 @@ static const char *alnum_sender = "0791447758100650"
static const char *simple_submit = "0011000B916407281553F80000AA"
"0AE8329BFD4697D9EC37";
static const char *simple_mwi = "07913366002020F8040B913366600600F100C8318070"
"6174148000";
static void print_scts(struct sms_scts *scts, const char *prefix)
{
time_t ts;
@ -471,6 +474,107 @@ static void test_submit_encode(void)
g_free(encoded_pdu);
}
static void test_simple_mwi(void)
{
struct sms sms;
unsigned char *decoded_pdu;
long pdu_len;
gboolean ret;
enum sms_mwi_type type;
gboolean active;
gboolean discard;
decoded_pdu = decode_hex(simple_mwi, -1, &pdu_len, 0);
g_assert(decoded_pdu);
g_assert(pdu_len == (long)strlen(simple_mwi) / 2);
ret = sms_decode(decoded_pdu, pdu_len, FALSE, 19, &sms);
g_free(decoded_pdu);
g_assert(ret);
g_assert(sms.type == SMS_TYPE_DELIVER);
if (g_test_verbose())
dump_details(&sms);
g_assert(sms.sc_addr.number_type == SMS_NUMBER_TYPE_INTERNATIONAL);
g_assert(sms.sc_addr.numbering_plan == SMS_NUMBERING_PLAN_ISDN);
g_assert(strcmp(sms.sc_addr.address, "33660002028") == 0);
g_assert(sms.deliver.oaddr.number_type ==
SMS_NUMBER_TYPE_INTERNATIONAL);
g_assert(sms.deliver.oaddr.numbering_plan ==
SMS_NUMBERING_PLAN_ISDN);
g_assert(strcmp(sms.deliver.oaddr.address, "33660660001") == 0);
g_assert(sms.deliver.pid == 0);
g_assert(sms.deliver.dcs == 200);
g_assert(sms.deliver.scts.year == 13);
g_assert(sms.deliver.scts.month == 8);
g_assert(sms.deliver.scts.day == 7);
g_assert(sms.deliver.scts.hour == 16);
g_assert(sms.deliver.scts.minute == 47);
g_assert(sms.deliver.scts.second == 41);
g_assert(sms.deliver.scts.timezone == 8);
g_assert(sms.deliver.udl == 0);
if (sms.deliver.udhi) {
struct sms_udh_iter iter;
enum sms_iei iei;
ret = sms_udh_iter_init(&sms, &iter);
g_assert(ret);
while ((iei = sms_udh_iter_get_ie_type(&iter)) !=
SMS_IEI_INVALID) {
switch (iei) {
case SMS_IEI_ENHANCED_VOICE_MAIL_INFORMATION:
{
unsigned char evm_iei[140];
sms_udh_iter_get_ie_data(&iter, evm_iei);
sms_udh_iter_get_ie_length(&iter);
if (g_test_verbose())
g_print("Enhanced Voicemail IEI\n");
break;
}
case SMS_IEI_SPECIAL_MESSAGE_INDICATION:
{
unsigned char special_iei[4];
sms_udh_iter_get_ie_data(&iter, special_iei);
sms_udh_iter_get_ie_length(&iter);
if (g_test_verbose())
g_print("Special Voicemail IEI\n");
break;
}
default:
break;
}
sms_udh_iter_next(&iter);
}
}
ret = sms_mwi_dcs_decode(sms.deliver.dcs, &type, NULL, &active,
&discard);
g_assert(ret);
if (g_test_verbose()) {
g_print("Type: %d, Active: %d, Discard: %d\n",
type, active, discard);
}
}
struct sms_charset_data {
char *pdu;
int data_len;
@ -1677,6 +1781,7 @@ int main(int argc, char **argv)
g_test_add_func("/testsms/Test Deliver Encode", test_deliver_encode);
g_test_add_func("/testsms/Test Simple Submit", test_simple_submit);
g_test_add_func("/testsms/Test Submit Encode", test_submit_encode);
g_test_add_func("/testsms/Test Simple MWI", test_simple_mwi);
g_test_add_data_func("/testsms/Test "
"GSM 7 bit Default Alphabet Decode",