9b6bd95cde75857d75f984532f72aaca4b0a15e7
[uzbl-mobile] / tests / test-expand.c
1 /* -*- c-basic-offset: 4; -*- */
2 #define _POSIX_SOURCE
3
4 #include <gtk/gtk.h>
5 #include <gdk/gdkx.h>
6 #include <gdk/gdkkeysyms.h>
7 #include <sys/socket.h>
8 #include <sys/stat.h>
9 #include <sys/types.h>
10 #include <sys/un.h>
11 #include <sys/utsname.h>
12 #include <sys/time.h>
13 #include <webkit/webkit.h>
14 #include <libsoup/soup.h>
15 #include <JavaScriptCore/JavaScript.h>
16
17 #include <stdio.h>
18 #include <string.h>
19 #include <unistd.h>
20 #include <stdlib.h>
21 #include <errno.h>
22 #include <fcntl.h>
23 #include <signal.h>
24
25 #include <uzbl.h>
26 #include <config.h>
27
28 extern Uzbl uzbl;
29
30 extern gchar* expand_template(const char*, gboolean);
31
32 void
33 test_URI (void) {
34     uzbl.state.uri = g_strdup("http://www.uzbl.org/");
35     g_assert_cmpstr(expand_template("URI", FALSE), ==, uzbl.state.uri);
36     g_free(uzbl.state.uri);
37 }
38
39 void
40 test_LOAD_PROGRESS (void) {
41     uzbl.gui.sbar.load_progress = 50;
42     g_assert_cmpstr(expand_template("LOAD_PROGRESS", FALSE), ==, "50");
43 }
44
45 void
46 test_LOAD_PROGRESSBAR (void) {
47     uzbl.gui.sbar.load_progress = 75;
48     uzbl.gui.sbar.progress_w = 4;
49
50     uzbl.gui.sbar.progress_s = "*";
51     uzbl.gui.sbar.progress_u = "-";
52
53     g_assert_cmpstr(expand_template("LOAD_PROGRESSBAR", FALSE), ==, "***-");
54 }
55
56 void
57 test_TITLE (void) {
58     uzbl.gui.main_title = "Lorem Ipsum";
59     g_assert_cmpstr(expand_template("TITLE", FALSE), ==, "Lorem Ipsum");
60 }
61
62 void
63 test_SELECTED_URI (void) {
64     uzbl.state.selected_url = "http://example.org/";
65     g_assert_cmpstr(expand_template("SELECTED_URI", FALSE), ==, "http://example.org/");
66 }
67
68 void
69 test_NAME (void) {
70     uzbl.state.instance_name = "12345";
71     g_assert_cmpstr(expand_template("NAME", FALSE), ==, "12345");
72 }
73
74 void
75 test_KEYCMD (void) {
76     uzbl.state.keycmd = g_string_new("gg winslow");
77     g_assert_cmpstr(expand_template("KEYCMD", FALSE), ==, "gg winslow");
78     g_string_free(uzbl.state.keycmd, TRUE);
79 }
80
81 void
82 test_MODE (void) {
83     uzbl.behave.cmd_indicator = "C";
84     uzbl.behave.insert_indicator = "I";
85
86     uzbl.behave.insert_mode = 0;
87     g_assert_cmpstr(expand_template("MODE", FALSE), ==, "C");
88
89     uzbl.behave.insert_mode = 1;
90     g_assert_cmpstr(expand_template("MODE", FALSE), ==, "I");
91 }
92
93 void
94 test_MSG (void) {
95     uzbl.gui.sbar.msg = "Hello from frosty Edmonton!";
96     g_assert_cmpstr(expand_template("MSG", FALSE), ==, "Hello from frosty Edmonton!");
97 }
98
99 void
100 test_WEBKIT_VERSION (void) {
101     GString* expected = g_string_new("");
102     g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
103     g_string_append(expected, " ");
104     g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
105     g_string_append(expected, " ");
106     g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
107
108     g_assert_cmpstr(expand_template("WEBKIT_MAJOR WEBKIT_MINOR WEBKIT_MICRO", FALSE), ==, g_string_free(expected, FALSE));
109 }
110
111 void
112 test_UNAMEINFO (void) {
113     GString* expected = g_string_new("");
114
115     if(uname(&uzbl.state.unameinfo) == -1)
116       g_printerr("Can't retrieve unameinfo. This test might fail.\n");
117
118     g_string_append(expected, uzbl.state.unameinfo.sysname);
119     g_string_append(expected, " ");
120     g_string_append(expected, uzbl.state.unameinfo.nodename);
121     g_string_append(expected, " ");
122     g_string_append(expected, uzbl.state.unameinfo.release);
123     g_string_append(expected, " ");
124     g_string_append(expected, uzbl.state.unameinfo.version);
125     g_string_append(expected, " ");
126     g_string_append(expected, uzbl.state.unameinfo.machine);
127
128     g_assert_cmpstr(expand_template("SYSNAME NODENAME KERNREL KERNVER ARCH_SYSTEM", FALSE), ==, g_string_free(expected, FALSE));
129 }
130
131 void
132 test_ARCH_UZBL (void) {
133     g_assert_cmpstr(expand_template("ARCH_UZBL", FALSE), ==, ARCH);
134 }
135
136 void
137 test_COMMIT (void) {
138     g_assert_cmpstr(expand_template("COMMIT", FALSE), ==, COMMIT);
139 }
140
141 void
142 test_cmd_useragent (void) {
143     GString* expected = g_string_new("Uzbl (Webkit ");
144     g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
145     g_string_append(expected, ".");
146     g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
147     g_string_append(expected, ".");
148     g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
149     g_string_append(expected, " ");
150     g_string_append(expected, ARCH);
151     g_string_append(expected, ")");
152
153     set_var_value("useragent", "Uzbl (Webkit WEBKIT_MAJOR.WEBKIT_MINOR.WEBKIT_MICRO ARCH_UZBL)");
154     cmd_useragent();
155     g_assert_cmpstr(uzbl.net.useragent, ==, g_string_free(expected, FALSE));
156 }
157
158 int
159 main (int argc, char *argv[]) {
160     g_type_init();
161     g_test_init(&argc, &argv, NULL);
162
163     g_test_add_func("/test-expand/URI", test_URI);
164     g_test_add_func("/test-expand/LOAD_PROGRESS", test_LOAD_PROGRESS);
165     g_test_add_func("/test-expand/LOAD_PROGRESSBAR", test_LOAD_PROGRESSBAR);
166     g_test_add_func("/test-expand/TITLE", test_TITLE);
167     g_test_add_func("/test-expand/SELECTED_URI", test_SELECTED_URI);
168     g_test_add_func("/test-expand/NAME", test_NAME);
169     g_test_add_func("/test-expand/KEYCMD", test_KEYCMD);
170     g_test_add_func("/test-expand/MODE", test_MODE);
171     g_test_add_func("/test-expand/MSG", test_MSG);
172     g_test_add_func("/test-expand/WEBKIT_VERSION", test_WEBKIT_VERSION);
173     g_test_add_func("/test-expand/UNAMEINFO", test_UNAMEINFO);
174     g_test_add_func("/test-expand/ARCH_UZBL", test_ARCH_UZBL);
175     /* this only exists on _GNU_SOURCE i guess */
176     /* g_test_add_func("/test-expand/DOMAINNAME", test_DOMAINNAME); */
177     g_test_add_func("/test-expand/COMMIT", test_COMMIT);
178
179     g_test_add_func("/test-expand/cmd_useragent", test_cmd_useragent);
180
181     if (!g_thread_supported ())
182         g_thread_init (NULL);
183
184     uzbl.net.soup_session = webkit_get_default_session();
185     setup_scanner();
186     make_var_to_name_hash();
187
188     return g_test_run();
189 }
190
191 /* vi: set et ts=4: */