---
unit/test-stkutil.c | 257 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 257 insertions(+), 0 deletions(-)
diff --git a/unit/test-stkutil.c b/unit/test-stkutil.c
index c586a7b..21fd02d 100644
--- a/unit/test-stkutil.c
+++ b/unit/test-stkutil.c
@@ -28,6 +28,9 @@
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
+#include <fcntl.h>
+
+#include <sys/stat.h>
#include <glib.h>
#include <glib/gprintf.h>
@@ -508,6 +511,7 @@ struct display_text_test {
struct stk_duration duration;
struct stk_text_attribute text_attr;
struct stk_frame_id frame_id;
+ const char *test_name;
};
unsigned char display_text_111[] = { 0xD0, 0x1A, 0x81, 0x03, 0x01, 0x21, 0x80,
@@ -603,6 +607,69 @@ unsigned char display_text_711[] = { 0xD0, 0x19, 0x81,
0x03, 0x01, 0x21, 0x80,
0x63, 0x6F, 0x6E, 0x64, 0x84, 0x02,
0x01, 0x0A };
+unsigned char display_text_811[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x21, 0x80,
+ 0x82, 0x02, 0x81, 0x02, 0x8D, 0x11,
+ 0x04, 0x54, 0x65, 0x78, 0x74, 0x20,
+ 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x74, 0x65, 0x20, 0x31, 0xD0,
+ 0x04, 0x00, 0x10, 0x00, 0xB4 };
+
+unsigned char display_text_821[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x21, 0x80,
+ 0x82, 0x02, 0x81, 0x02, 0x8D, 0x11,
+ 0x04, 0x54, 0x65, 0x78, 0x74, 0x20,
+ 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x74, 0x65, 0x20, 0x31, 0xD0,
+ 0x04, 0x00, 0x10, 0x01, 0xB4 };
+
+unsigned char display_text_831[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x21, 0x80,
+ 0x82, 0x02, 0x81, 0x02, 0x8D, 0x11,
+ 0x04, 0x54, 0x65, 0x78, 0x74, 0x20,
+ 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x74, 0x65, 0x20, 0x31, 0xD0,
+ 0x04, 0x00, 0x10, 0x02, 0xB4 };
+
+unsigned char display_text_841[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x21, 0x80,
+ 0x82, 0x02, 0x81, 0x02, 0x8D, 0x11,
+ 0x04, 0x54, 0x65, 0x78, 0x74, 0x20,
+ 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x74, 0x65, 0x20, 0x31, 0xD0,
+ 0x04, 0x00, 0x10, 0x04, 0xB4 };
+
+unsigned char display_text_851[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x21, 0x80,
+ 0x82, 0x02, 0x81, 0x02, 0x8D, 0x11,
+ 0x04, 0x54, 0x65, 0x78, 0x74, 0x20,
+ 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x74, 0x65, 0x20, 0x31, 0xD0,
+ 0x04, 0x00, 0x10, 0x08, 0xB4 };
+
+unsigned char display_text_861[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x21, 0x80,
+ 0x82, 0x02, 0x81, 0x02, 0x8D, 0x11,
+ 0x04, 0x54, 0x65, 0x78, 0x74, 0x20,
+ 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x74, 0x65, 0x20, 0x31, 0xD0,
+ 0x04, 0x00, 0x10, 0x10, 0xB4 };
+
+unsigned char display_text_871[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x21, 0x80,
+ 0x82, 0x02, 0x81, 0x02, 0x8D, 0x11,
+ 0x04, 0x54, 0x65, 0x78, 0x74, 0x20,
+ 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x74, 0x65, 0x20, 0x31, 0xD0,
+ 0x04, 0x00, 0x10, 0x20, 0xB4 };
+
+unsigned char display_text_881[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x21, 0x80,
+ 0x82, 0x02, 0x81, 0x02, 0x8D, 0x11,
+ 0x04, 0x54, 0x65, 0x78, 0x74, 0x20,
+ 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x74, 0x65, 0x20, 0x31, 0xD0,
+ 0x04, 0x00, 0x10, 0x40, 0xB4 };
+
+unsigned char display_text_891[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x21, 0x80,
+ 0x82, 0x02, 0x81, 0x02, 0x8D, 0x11,
+ 0x04, 0x54, 0x65, 0x78, 0x74, 0x20,
+ 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x74, 0x65, 0x20, 0x31, 0xD0,
+ 0x04, 0x00, 0x10, 0x80, 0xB4 };
+
unsigned char display_text_911[] = { 0xD0, 0x10, 0x81, 0x03, 0x01, 0x21, 0x80,
0x82, 0x02, 0x81, 0x02, 0x8D, 0x05,
0x08, 0x4F, 0x60, 0x59, 0x7D };
@@ -708,6 +775,114 @@ static struct display_text_test display_text_data_711 = {
}
};
+static struct display_text_test display_text_data_811 = {
+ .pdu = display_text_811,
+ .pdu_len = sizeof(display_text_811),
+ .qualifier = 0x80,
+ .text = "Text Attribute 1",
+ .text_attr = {
+ .len = 4,
+ .attributes = { 0x00, 0x10, 0x00, 0xB4 },
+ },
+ .test_name = "811.html",
+};
+
+static struct display_text_test display_text_data_821 = {
+ .pdu = display_text_821,
+ .pdu_len = sizeof(display_text_821),
+ .qualifier = 0x80,
+ .text = "Text Attribute 1",
+ .text_attr = {
+ .len = 4,
+ .attributes = { 0x00, 0x10, 0x01, 0xB4 },
+ },
+ .test_name = "821.html",
+};
+
+static struct display_text_test display_text_data_831 = {
+ .pdu = display_text_831,
+ .pdu_len = sizeof(display_text_831),
+ .qualifier = 0x80,
+ .text = "Text Attribute 1",
+ .text_attr = {
+ .len = 4,
+ .attributes = { 0x00, 0x10, 0x02, 0xB4 },
+ },
+ .test_name = "831.html",
+};
+
+static struct display_text_test display_text_data_841 = {
+ .pdu = display_text_841,
+ .pdu_len = sizeof(display_text_841),
+ .qualifier = 0x80,
+ .text = "Text Attribute 1",
+ .text_attr = {
+ .len = 4,
+ .attributes = { 0x00, 0x10, 0x04, 0xB4 },
+ },
+ .test_name = "841.html",
+};
+
+static struct display_text_test display_text_data_851 = {
+ .pdu = display_text_851,
+ .pdu_len = sizeof(display_text_851),
+ .qualifier = 0x80,
+ .text = "Text Attribute 1",
+ .text_attr = {
+ .len = 4,
+ .attributes = { 0x00, 0x10, 0x08, 0xB4 },
+ },
+ .test_name = "851.html",
+};
+
+static struct display_text_test display_text_data_861 = {
+ .pdu = display_text_861,
+ .pdu_len = sizeof(display_text_861),
+ .qualifier = 0x80,
+ .text = "Text Attribute 1",
+ .text_attr = {
+ .len = 4,
+ .attributes = { 0x00, 0x10, 0x10, 0xB4 },
+ },
+ .test_name = "861.html",
+};
+
+static struct display_text_test display_text_data_871 = {
+ .pdu = display_text_871,
+ .pdu_len = sizeof(display_text_871),
+ .qualifier = 0x80,
+ .text = "Text Attribute 1",
+ .text_attr = {
+ .len = 4,
+ .attributes = { 0x00, 0x10, 0x20, 0xB4 },
+ },
+ .test_name = "871.html",
+};
+
+static struct display_text_test display_text_data_881 = {
+ .pdu = display_text_881,
+ .pdu_len = sizeof(display_text_881),
+ .qualifier = 0x80,
+ .text = "Text Attribute 1",
+ .text_attr = {
+ .len = 4,
+ .attributes = { 0x00, 0x10, 0x40, 0xB4 },
+ },
+ .test_name = "881.html",
+};
+
+static struct display_text_test display_text_data_891 = {
+ .pdu = display_text_891,
+ .pdu_len = sizeof(display_text_891),
+ .qualifier = 0x80,
+ .text = "Text Attribute 1",
+ .text_attr = {
+ .len = 4,
+ .attributes = { 0x00, 0x10, 0x80, 0xB4 },
+ },
+ .test_name = "891.html",
+};
+
static struct display_text_test display_text_data_911 = {
.pdu = display_text_911,
.pdu_len = sizeof(display_text_911),
@@ -722,6 +897,58 @@ static struct display_text_test display_text_data_1011 = {
.text = "80ã«"
};
+static void do_html_test(char *text, int text_len, const unsigned char *attrs,
+ int attrs_len, const char *filename)
+{
+ int fd;
+ char html_header[] = "<html><body>";
+ char html_close[] = "</body></html>";
+ char *html;
+ ssize_t bytes_written;
+
+ if (filename == NULL)
+ return;
+
+ /* open output file */
+ fd = open(filename, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR |
+ S_IRGRP | S_IROTH);
+ if (fd < 0) {
+ g_print("unable to open %s\n", filename);
+ return;
+ }
+
+ bytes_written = write(fd, html_header, strlen(html_header));
+ html = stk_text_to_html(text, text_len, attrs, attrs_len);
+ bytes_written = write(fd, html, strlen(html));
+ bytes_written = write(fd, html_close, strlen(html_close));
+ close(fd);
+ g_free(html);
+}
+
+static void test_html1(gconstpointer data)
+{
+ char html_test[] = "EMS messages can contain italic, bold,"
+ " large, small and colored text";
+ const unsigned char attrs[] = { 0x19, 0x06, 0x20, 0x00,
+ 0x21, 0x04, 0x10, 0x00,
+ 0x27, 0x05, 0x04, 0x00,
+ 0x2E, 0x05, 0x08, 0x00,
+ 0x38, 0x07, 0x00, 0x2B };
+ const char filename[] = "html1.html";
+
+ do_html_test(html_test, strlen(html_test), attrs, 20, filename);
+}
+
+static void test_html2(gconstpointer data)
+{
+ char html_test[] = "Blue green green green";
+ const unsigned char attrs[] = { 0x00, 0x00, 0x00, 0x94,
+ 0x00, 0x04, 0x00, 0x96 };
+ const char filename[] = "html2.html";
+
+ do_html_test(html_test, strlen(html_test), attrs, 8, filename);
+}
+
/* Defined in TS 102.384 Section 27.22.4.1 */
static void test_display_text(gconstpointer data)
{
@@ -747,6 +974,14 @@ static void test_display_text(gconstpointer data)
check_duration(&command->display_text.duration, &test->duration);
check_text_attr(&command->display_text.text_attr,
&test->text_attr);
+
+ if (command->display_text.text_attr.len > 0)
+ do_html_test(command->display_text.text,
+ strlen(command->display_text.text),
+ command->display_text.text_attr.attributes,
+ command->display_text.text_attr.len,
+ test->test_name);
+
check_frame_id(&command->display_text.frame_id, &test->frame_id);
stk_command_free(command);
@@ -21913,6 +22148,28 @@ int main(int argc, char **argv)
&display_text_data_611, test_display_text);
g_test_add_data_func("/teststk/Display Text 7.1.1",
&display_text_data_711, test_display_text);
+ g_test_add_data_func("/teststk/HTML test 1",
+ NULL, test_html1);
+ g_test_add_data_func("/teststk/HTML test 2",
+ NULL, test_html2);
+ g_test_add_data_func("/teststk/Display Text 8.1.1",
+ &display_text_data_811, test_display_text);
+ g_test_add_data_func("/teststk/Display Text 8.2.1",
+ &display_text_data_821, test_display_text);
+ g_test_add_data_func("/teststk/Display Text 8.3.1",
+ &display_text_data_831, test_display_text);
+ g_test_add_data_func("/teststk/Display Text 8.4.1",
+ &display_text_data_841, test_display_text);
+ g_test_add_data_func("/teststk/Display Text 8.5.1",
+ &display_text_data_851, test_display_text);
+ g_test_add_data_func("/teststk/Display Text 8.6.1",
+ &display_text_data_861, test_display_text);
+ g_test_add_data_func("/teststk/Display Text 8.7.1",
+ &display_text_data_871, test_display_text);
+ g_test_add_data_func("/teststk/Display Text 8.8.1",
+ &display_text_data_881, test_display_text);
+ g_test_add_data_func("/teststk/Display Text 8.9.1",
+ &display_text_data_891, test_display_text);
g_test_add_data_func("/teststk/Display Text 9.1.1",
&display_text_data_911, test_display_text);
g_test_add_data_func("/teststk/Display Text 10.1.1",
--
1.6.6.1
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono