summaryrefslogtreecommitdiffstats
path: root/unit/test-sms.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-06-21 15:04:43 -0500
committerDenis Kenzior <denkenz@gmail.com>2010-06-21 15:21:40 -0500
commita2596cb333cfdd101ce2138fed4420b3f0c74c38 (patch)
treeed27706e3242a2fd3527dcaf64e3c254293791f1 /unit/test-sms.c
parent5aa88414403ebcef6e1e8e8266d180b6ce1cc1f8 (diff)
downloadofono-a2596cb333cfdd101ce2138fed4420b3f0c74c38.tar.bz2
unit: Add unit tests for status report assembly
Diffstat (limited to 'unit/test-sms.c')
-rw-r--r--unit/test-sms.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/unit/test-sms.c b/unit/test-sms.c
index aec725b5..70a13a07 100644
--- a/unit/test-sms.c
+++ b/unit/test-sms.c
@@ -1168,6 +1168,50 @@ static void test_range_minimizer()
}
}
+static void test_sr_assembly()
+{
+ const char *sr_pdu1 = "06040D91945152991136F00160124130340A0160124130"
+ "940A00";
+ const char *sr_pdu2 = "06050D91945152991136F00160124130640A0160124130"
+ "450A00";
+ struct sms sr1;
+ struct sms sr2;
+ unsigned char pdu[176];
+ long pdu_len;
+ struct status_report_assembly *sra;
+ gboolean delivered;
+ unsigned int id;
+ struct sms_address addr;
+
+ /* mr 4 & mr 5 */
+
+ decode_hex_own_buf(sr_pdu1, -1, &pdu_len, 0, pdu);
+ g_assert(sms_decode(pdu, pdu_len, FALSE, 26, &sr1) == TRUE);
+
+ decode_hex_own_buf(sr_pdu2, -1, &pdu_len, 0, pdu);
+ g_assert(sms_decode(pdu, pdu_len, FALSE, 26, &sr2) == TRUE);
+
+ g_print("sr1 address: %s, mr: %d\n",
+ sms_address_to_string(&sr1.status_report.raddr),
+ sr1.status_report.mr);
+
+ g_print("sr2 address: %s, mr: %d\n",
+ sms_address_to_string(&sr2.status_report.raddr),
+ sr2.status_report.mr);
+
+ sms_address_from_string(&addr, "+4915259911630");
+
+ sra = status_report_assembly_new(NULL);
+ status_report_assembly_add_fragment(sra, 42, &addr, 4, time(NULL), 2);
+ status_report_assembly_add_fragment(sra, 42, &addr, 5, time(NULL), 2);
+
+ g_assert(!status_report_assembly_report(sra, &sr1, &id, &delivered));
+ g_assert(status_report_assembly_report(sra, &sr2, &id, &delivered));
+
+ g_assert(id == 42);
+ g_assert(delivered == TRUE);
+}
+
int main(int argc, char **argv)
{
char long_string[152*33 + 1];
@@ -1210,5 +1254,7 @@ int main(int argc, char **argv)
g_test_add_func("/testsms/Range minimizer", test_range_minimizer);
+ g_test_add_func("/testsms/Status Report Assembly", test_sr_assembly);
+
return g_test_run();
}