test-sms: Add a unit test for the previous bugfix

This commit is contained in:
Denis Kenzior 2010-06-01 10:08:58 -05:00
parent 4638d3ad83
commit ff2a3029b3
1 changed files with 36 additions and 8 deletions

View File

@ -762,16 +762,26 @@ static void test_prepare_7bit()
g_slist_free(r); g_slist_free(r);
} }
static const char *pad1 = "Shakespeare divided his time between London and Str" struct sms_concat_data {
const char *str;
unsigned int segments;
};
static struct sms_concat_data shakespeare_test = {
.str = "Shakespeare divided his time between London and Str"
"atford during his career. In 1596, the year before he bought New Plac" "atford during his career. In 1596, the year before he bought New Plac"
"e as his family home in Stratford, Shakespeare was living in the pari" "e as his family home in Stratford, Shakespeare was living in the pari"
"sh of St. Helen's, Bishopsgate, north of the River Thames."; "sh of St. Helen's, Bishopsgate, north of the River Thames.",
.segments = 2,
};
/* The string in this test should be padded at the end. This confuses some /* The string in this test should be padded at the end. This confuses some
* decoders which do not use udl properly * decoders which do not use udl properly
*/ */
static void test_prepare_concat() static void test_prepare_concat(gconstpointer data)
{ {
const struct sms_concat_data *test = data;
GSList *r; GSList *r;
GSList *l; GSList *l;
char *decoded_str; char *decoded_str;
@ -786,12 +796,12 @@ static void test_prepare_concat()
guint8 seq; guint8 seq;
if (g_test_verbose()) if (g_test_verbose())
g_print("strlen: %zd\n", strlen(pad1)); g_print("strlen: %zd\n", strlen(test->str));
r = sms_text_prepare(pad1, 0, TRUE, NULL); r = sms_text_prepare(test->str, 0, TRUE, NULL);
g_assert(r); g_assert(r);
g_assert(g_slist_length(r) == 2); g_assert(g_slist_length(r) == test->segments);
for (l = r; l; l = l->next) { for (l = r; l; l = l->next) {
char *strpdu; char *strpdu;
@ -842,7 +852,7 @@ static void test_prepare_concat()
g_printf("Decoded String: %s\n", decoded_str); g_printf("Decoded String: %s\n", decoded_str);
g_assert(decoded_str); g_assert(decoded_str);
g_assert(strcmp(decoded_str, pad1) == 0); g_assert(strcmp(decoded_str, test->str) == 0);
g_free(decoded_str); g_free(decoded_str);
sms_assembly_free(assembly); sms_assembly_free(assembly);
} }
@ -1161,6 +1171,9 @@ static void test_range_minimizer()
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
char long_string[152*33 + 1];
struct sms_concat_data long_string_test;
g_test_init(&argc, &argv, NULL); g_test_init(&argc, &argv, NULL);
g_test_add_func("/testsms/Test Simple Deliver", test_simple_deliver); g_test_add_func("/testsms/Test Simple Deliver", test_simple_deliver);
@ -1171,7 +1184,22 @@ int main(int argc, char **argv)
g_test_add_func("/testsms/Test UDH Iterator", test_udh_iter); g_test_add_func("/testsms/Test UDH Iterator", test_udh_iter);
g_test_add_func("/testsms/Test Assembly", test_assembly); g_test_add_func("/testsms/Test Assembly", test_assembly);
g_test_add_func("/testsms/Test Prepare 7Bit", test_prepare_7bit); g_test_add_func("/testsms/Test Prepare 7Bit", test_prepare_7bit);
g_test_add_func("/testsms/Test Prepare Concat", test_prepare_concat);
g_test_add_data_func("/testsms/Test Prepare Concat",
&shakespeare_test, test_prepare_concat);
memset(long_string, 'a', 152*30);
memset(long_string + 152*30, 'b', 152);
memset(long_string + 152*31, 'c', 152);
memset(long_string + 152*32, 'd', 152);
long_string[152*33] = '\0';
long_string_test.str = long_string;
long_string_test.segments = 33;
g_test_add_data_func("/testsms/Test Prepare Concat 30+ segments",
&long_string_test, test_prepare_concat);
g_test_add_func("/testsms/Test Prepare Limits", test_prepare_limits); g_test_add_func("/testsms/Test Prepare Limits", test_prepare_limits);
g_test_add_func("/testsms/Test CBS Encode / Decode", g_test_add_func("/testsms/Test CBS Encode / Decode",