11 static gboolean on_cmti(TcoreAT *at, const GSList *lines, void *user_data)
13 int *checked = user_data;
17 printf("data = [%s]\n", (char *)lines->data);
22 static gboolean on_cmt(TcoreAT *at, const GSList *lines, void *user_data)
24 int *checked = user_data;
26 if (g_slist_length((GSList *)lines) != 2) {
27 printf("invalid message\n");
33 printf("data1 = [%s]\n", (char *)lines->data);
34 printf("data2 = [%s]\n", (char *)lines->next->data);
39 static void test_noti(void)
46 at = tcore_at_new(NULL);
49 ret = tcore_at_add_notification(at, "+CMTI:", FALSE, on_cmti, &checked);
50 g_assert(ret == TCORE_RETURN_SUCCESS);
52 ret = tcore_at_add_notification(at, "+CMT:", TRUE, on_cmt, &checked);
53 g_assert(ret == TCORE_RETURN_SUCCESS);
56 /* Non type PDU message */
57 msg = (char *)"+CMTI: \"SM\", 1\r\n";
58 ret = tcore_at_process(at, strlen(msg), msg);
59 g_assert(ret == TCORE_RETURN_SUCCESS);
62 g_assert(checked == 1);
65 /* Completed PDU message */
66 msg = (char *)"+CMT: 19\r\n038121F3100481214301112170137192410404F17B590E\r\n";
67 ret = tcore_at_process(at, strlen(msg), msg);
68 g_assert(ret == TCORE_RETURN_SUCCESS);
71 g_assert(checked == 2);
74 /* Split PDU message */
76 msg = (char *)"+CMT: 19\r\n";
77 ret = tcore_at_process(at, strlen(msg), msg);
78 g_assert(ret == TCORE_RETURN_SUCCESS);
81 g_assert(checked == 0);
83 msg = (char *)"038121F310";
84 ret = tcore_at_process(at, strlen(msg), msg);
85 g_assert(ret == TCORE_RETURN_SUCCESS);
88 g_assert(checked == 0);
90 msg = (char *)"0481214301112170137192410404F17B590E\r\n";
91 ret = tcore_at_process(at, strlen(msg), msg);
92 g_assert(ret == TCORE_RETURN_SUCCESS);
95 g_assert(checked == 2);
99 static void test_buf_write(void)
101 #define BUF_SIZE 1024
104 char *msg_1 = (char *)"ATZ";
105 char msg_2[BUF_SIZE + 1];
107 at = tcore_at_new(NULL);
110 ret = tcore_at_buf_write(at, strlen(msg_1), msg_1);
111 g_assert(ret == TCORE_RETURN_SUCCESS);
113 memset(msg_2, '1', BUF_SIZE);
114 msg_2[BUF_SIZE] = '\0';
115 ret = tcore_at_buf_write(at, strlen(msg_2), msg_2);
116 g_assert(ret == TCORE_RETURN_SUCCESS);
121 static void test_tok(void)
126 /* test unsolicited message */
127 tokens = tcore_at_tok_new("CSQ: 31, 99");
130 g_assert_cmpstr((char *)g_slist_nth_data(tokens, 0), ==, "31");
131 g_assert_cmpstr(tcore_at_tok_nth(tokens, 1), ==, "99");
132 g_assert(g_slist_nth_data(tokens, 2) == NULL);
134 tcore_at_tok_free(tokens);
136 /* test sub token (list type) */
137 tokens = tcore_at_tok_new("(2, \"T-Meego\", \"TTAU\", \"23401\", 2)");
140 g_assert_cmpstr((char *)g_slist_nth_data(tokens, 0), ==, "2");
141 g_assert_cmpstr(tcore_at_tok_nth(tokens, 1), ==, "\"T-Meego\"");
142 g_assert_cmpstr(tcore_at_tok_nth(tokens, 2), ==, "\"TTAU\"");
143 g_assert_cmpstr(tcore_at_tok_nth(tokens, 3), ==, "\"23401\"");
144 g_assert_cmpstr(tcore_at_tok_nth(tokens, 4), ==, "2");
147 buf = tcore_at_tok_extract(tcore_at_tok_nth(tokens, 2));
149 g_assert_cmpstr(buf, ==, "TTAU");
152 tcore_at_tok_free(tokens);
155 buf = tcore_at_tok_extract("(haha)");
157 g_assert_cmpstr(buf, ==, "haha");
161 buf = tcore_at_tok_extract("(a)");
163 g_assert_cmpstr(buf, ==, "a");
167 buf = tcore_at_tok_extract("()");
169 g_assert_cmpstr(buf, ==, "");
173 buf = tcore_at_tok_extract("(");
175 g_assert_cmpstr(buf, ==, "(");
179 buf = tcore_at_tok_extract(")");
181 g_assert_cmpstr(buf, ==, ")");
185 buf = tcore_at_tok_extract("");
187 g_assert_cmpstr(buf, ==, "");
191 static void test_pdu_resp(void)
198 at = tcore_at_new(NULL);
201 req = tcore_at_request_new("AT+CMGR=1", "+CMGR", TCORE_AT_PDU);
204 ret = tcore_at_set_request(at, req, TRUE);
206 msg = (char *)"+CMGR: 1,,105\r\n12345678901234567890\r\nOK\r\n";
207 ret = tcore_at_process(at, strlen(msg), msg);
208 g_assert(ret == TRUE);
213 int main(int argc, char **argv)
215 g_test_init(&argc, &argv, NULL);
217 g_test_add_func("/at/buf_write", test_buf_write);
218 g_test_add_func("/at/tok", test_tok);
219 g_test_add_func("/at/noti", test_noti);
220 g_test_add_func("/at/pdu_resp", test_pdu_resp);