diff options
Diffstat (limited to 'src/tests/test-sms-part-cdma.c')
-rw-r--r-- | src/tests/test-sms-part-cdma.c | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/src/tests/test-sms-part-cdma.c b/src/tests/test-sms-part-cdma.c index cad20323..f95b7ac8 100644 --- a/src/tests/test-sms-part-cdma.c +++ b/src/tests/test-sms-part-cdma.c @@ -211,6 +211,103 @@ test_invalid_address_length (void) NULL); } +static void +test_created_by_us (void) +{ + static const guint8 pdu[] = { + /* message type */ + 0x00, + /* teleservice id */ + 0x00, 0x02, + 0x10, 0x02, + /* destination address */ + 0x04, 0x07, + 0x02, 0x8C, 0xE9, 0x5D, 0xCC, 0x65, 0x80, + /* bearer data */ + 0x08, 0x0D, + 0x00, 0x03, 0x20, 0x00, 0x00, /* message id */ + 0x01, 0x06, 0x10, 0x24, 0x18, 0x30, 0x60, 0x80 /* user_data */ + }; + + common_test_part_from_pdu ( + pdu, sizeof (pdu), + MM_SMS_CDMA_TELESERVICE_ID_WMT, + MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN, + "3305773196", + 0, + "AAAA"); +} + +/********************* PDU CREATOR TESTS *********************/ + +static void +common_test_create_pdu (MMSmsCdmaTeleserviceId teleservice_id, + const gchar *number, + const gchar *text, + const guint8 *data, + gsize data_size, + const guint8 *expected, + gsize expected_size) +{ + MMSmsPart *part; + guint8 *pdu; + guint len = 0; + GError *error = NULL; + + g_assert (number != NULL); + + part = mm_sms_part_new (0, MM_SMS_PDU_TYPE_CDMA_SUBMIT); + mm_sms_part_set_cdma_teleservice_id (part, teleservice_id); + mm_sms_part_set_number (part, number); + if (text) + mm_sms_part_set_text (part, text); + else { + GByteArray *data_bytearray; + + data_bytearray = g_byte_array_sized_new (data_size); + g_byte_array_append (data_bytearray, data, data_size); + mm_sms_part_take_data (part, data_bytearray); + } + + pdu = mm_sms_part_cdma_get_submit_pdu (part, &len, &error); + + trace_pdu (pdu, len); + + g_assert_no_error (error); + g_assert (pdu != NULL); + g_assert_cmpuint (len, ==, expected_size); + g_assert_cmpint (memcmp (pdu, expected, len), ==, 0); + + g_free (pdu); +} + +static void +test_create_pdu_text (void) +{ + static const char *number = "3305773196"; + static const char *text = "AAAA"; + static const guint8 expected[] = { + /* message type */ + 0x00, + /* teleservice id */ + 0x00, 0x02, + 0x10, 0x02, + /* destination address */ + 0x04, 0x07, + 0x02, 0x8C, 0xE9, 0x5D, 0xCC, 0x65, 0x80, + /* bearer data */ + 0x08, 0x0D, + 0x00, 0x03, 0x20, 0x00, 0x00, /* message id */ + 0x01, 0x06, 0x10, 0x24, 0x18, 0x30, 0x60, 0x80 /* user_data */ + }; + + common_test_create_pdu (MM_SMS_CDMA_TELESERVICE_ID_WMT, + number, + text, + NULL, 0, + expected, sizeof (expected)); +} + /************************************************************/ void @@ -243,6 +340,8 @@ int main (int argc, char **argv) g_test_add_func ("/MM/SMS/CDMA/PDU-Parser/pdu1", test_pdu1); g_test_add_func ("/MM/SMS/CDMA/PDU-Parser/invalid-parameter-length", test_invalid_parameter_length); g_test_add_func ("/MM/SMS/CDMA/PDU-Parser/invalid-address-length", test_invalid_address_length); + g_test_add_func ("/MM/SMS/CDMA/PDU-Parser/created-by-us", test_created_by_us); + g_test_add_func ("/MM/SMS/CDMA/PDU-Creator/Text", test_create_pdu_text); return g_test_run (); } |