silly me, @MSG -> @status_message
[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(char*, guint, gboolean);
31 extern void make_var_to_name_hash(void);
32
33 void
34 test_keycmd (void) {
35     uzbl.state.keycmd = g_string_new("gg winslow");
36     g_assert_cmpstr(expand("@keycmd", 0, FALSE), ==, "gg winslow");
37     g_string_free(uzbl.state.keycmd, TRUE);
38 }
39
40 void
41 test_uri (void) {
42     g_assert_cmpstr(expand("@uri", 0, FALSE), ==, "");
43
44     uzbl.state.uri = g_strdup("http://www.uzbl.org/");
45     g_assert_cmpstr(expand("@uri", 0, FALSE), ==, uzbl.state.uri);
46     g_free(uzbl.state.uri);
47 }
48
49 void
50 test_LOAD_PROGRESS (void) {
51     uzbl.gui.sbar.load_progress = 50;
52     g_assert_cmpstr(expand("@LOAD_PROGRESS", 0, FALSE), ==, "50");
53 }
54
55 void
56 test_LOAD_PROGRESSBAR (void) {
57     uzbl.gui.sbar.progress_w = 4;
58     progress_change_cb(NULL, 75, NULL);
59
60     g_assert_cmpstr(expand("@LOAD_PROGRESSBAR", 0, FALSE), ==, "===ยท");
61 }
62
63 void
64 test_TITLE (void) {
65     uzbl.gui.main_title = "Lorem Ipsum";
66     g_assert_cmpstr(expand("@TITLE", 0, FALSE), ==, "Lorem Ipsum");
67 }
68
69 void
70 test_SELECTED_URI (void) {
71     uzbl.state.selected_url = "http://example.org/";
72     g_assert_cmpstr(expand("@SELECTED_URI", 0, FALSE), ==, "http://example.org/");
73 }
74
75 void
76 test_NAME (void) {
77     uzbl.state.instance_name = "testing";
78     g_assert_cmpstr(expand("@NAME", 0, FALSE), ==, "testing");
79 }
80
81 void
82 test_MODE (void) {
83     set_insert_mode(FALSE);
84     g_assert_cmpstr(expand("@MODE", 0, FALSE), ==, "C");
85
86     set_insert_mode(TRUE);
87     g_assert_cmpstr(expand("@MODE", 0, FALSE), ==, "I");
88 }
89
90 void
91 test_status_message (void) {
92     uzbl.gui.sbar.msg = "Hello from frosty Edmonton!";
93     g_assert_cmpstr(expand("@status_message", 0, FALSE), ==, "Hello from frosty Edmonton!");
94 }
95
96 void
97 test_WEBKIT_VERSION (void) {
98     GString* expected = g_string_new("");
99     g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
100     g_string_append(expected, " ");
101     g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
102     g_string_append(expected, " ");
103     g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
104
105     g_assert_cmpstr(expand("@WEBKIT_MAJOR @WEBKIT_MINOR @WEBKIT_MICRO", 0, FALSE), ==, g_string_free(expected, FALSE));
106 }
107
108 void
109 test_ARCH_UZBL (void) {
110     g_assert_cmpstr(expand("@ARCH_UZBL", 0, FALSE), ==, ARCH);
111 }
112
113 void
114 test_COMMIT (void) {
115     g_assert_cmpstr(expand("@COMMIT", 0, FALSE), ==, COMMIT);
116 }
117
118 void
119 test_cmd_useragent_simple (void) {
120     GString* expected = g_string_new("Uzbl (Webkit ");
121     g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
122     g_string_append(expected, ".");
123     g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
124     g_string_append(expected, ".");
125     g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
126     g_string_append(expected, ")");
127
128     set_var_value("useragent", "Uzbl (Webkit @WEBKIT_MAJOR.@WEBKIT_MINOR.@WEBKIT_MICRO)");
129     g_assert_cmpstr(uzbl.net.useragent, ==, g_string_free(expected, FALSE));
130 }
131
132 void
133 test_cmd_useragent_full (void) {
134     GString* expected = g_string_new("Uzbl (Webkit ");
135     g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
136     g_string_append(expected, ".");
137     g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
138     g_string_append(expected, ".");
139     g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
140     g_string_append(expected, ") (");
141
142     struct utsname unameinfo;
143     if(uname(&unameinfo) == -1)
144       g_printerr("Can't retrieve unameinfo. This test might fail.\n");
145
146     g_string_append(expected, unameinfo.sysname);
147     g_string_append(expected, " ");
148     g_string_append(expected, unameinfo.nodename);
149     g_string_append(expected, " ");
150     g_string_append(expected, unameinfo.release);
151     g_string_append(expected, " ");
152     g_string_append(expected, unameinfo.version);
153     g_string_append(expected, " ");
154     g_string_append(expected, unameinfo.machine);
155     g_string_append(expected, " [");
156     g_string_append(expected, ARCH);
157     g_string_append(expected, "]) (Commit ");
158     g_string_append(expected, COMMIT);
159     g_string_append(expected, ")");
160
161     set_var_value("useragent", "Uzbl (Webkit @WEBKIT_MAJOR.@WEBKIT_MINOR.@WEBKIT_MICRO) (@(uname -s)@ @(uname -n)@ @(uname -r)@ @(uname -v)@ @(uname -m)@ [@ARCH_UZBL]) (Commit @COMMIT)");
162     g_assert_cmpstr(uzbl.net.useragent, ==, g_string_free(expected, FALSE));
163 }
164
165 void
166 test_escape_markup (void) {
167     /* simple expansion */
168     uzbl.state.uri = g_strdup("<&>");
169     g_assert_cmpstr(expand("@uri", 0, FALSE), ==, uzbl.state.uri);
170     g_assert_cmpstr(expand("@uri", 0, TRUE), ==, "&lt;&amp;&gt;");
171
172     /* shell expansion */
173     g_assert_cmpstr(expand("@(echo -n '<&>')@", 0, FALSE), ==, "<&>");
174     g_assert_cmpstr(expand("@(echo -n '<&>')@", 0, TRUE), ==, "&lt;&amp;&gt;");
175
176     /* javascript expansion */
177     g_assert_cmpstr(expand("@<'<&>'>@", 0, FALSE), ==, "<&>");
178     g_assert_cmpstr(expand("@<'<&>'>@", 0, TRUE), ==, "&lt;&amp;&gt;");
179
180     g_free(uzbl.state.uri);
181 }
182
183 void
184 test_escape_expansion (void) {
185     /* \@ -> @ */
186     g_assert_cmpstr(expand("\\@uri", 0, FALSE), ==, "@uri");
187
188     /* \\\@ -> \@ */
189     g_assert_cmpstr(expand("\\\\\\@uri", 0, FALSE), ==, "\\@uri");
190
191     /* \@(...)\@ -> @(...)@ */
192     g_assert_cmpstr(expand("\\@(echo hi)\\@", 0, FALSE), ==, "@(echo hi)@");
193
194     /* \@<...>\@ -> @<...>@ */
195     g_assert_cmpstr(expand("\\@<\"hi\">\\@", 0, FALSE), ==, "@<\"hi\">@");
196 }
197
198 void
199 test_nested (void) {
200     uzbl.gui.sbar.msg = "xxx";
201     g_assert_cmpstr(expand("@<\"..@status_message..\">@", 0, FALSE), ==, "..xxx..");
202     g_assert_cmpstr(expand("@<\"..\\@status_message..\">@", 0, FALSE), ==, "..@status_message..");
203
204     g_assert_cmpstr(expand("@(echo ..@status_message..)@", 0, FALSE), ==, "..xxx..");
205     g_assert_cmpstr(expand("@(echo ..\\@status_message..)@", 0, FALSE), ==, "..@status_message..");
206 }
207
208 int
209 main (int argc, char *argv[]) {
210     g_type_init();
211     g_test_init(&argc, &argv, NULL);
212
213 //    g_test_add_func("/test-expand/@keycmd", test_keycmd);
214     g_test_add_func("/test-expand/@status_message", test_status_message);
215     g_test_add_func("/test-expand/@uri", test_uri);
216     g_test_add_func("/test-expand/@LOAD_PROGRESS", test_LOAD_PROGRESS);
217     g_test_add_func("/test-expand/@LOAD_PROGRESSBAR", test_LOAD_PROGRESSBAR);
218     g_test_add_func("/test-expand/@TITLE", test_TITLE);
219     g_test_add_func("/test-expand/@SELECTED_URI", test_SELECTED_URI);
220     g_test_add_func("/test-expand/@NAME", test_NAME);
221     g_test_add_func("/test-expand/@MODE", test_MODE);
222     g_test_add_func("/test-expand/@WEBKIT_*", test_WEBKIT_VERSION);
223     g_test_add_func("/test-expand/@ARCH_UZBL", test_ARCH_UZBL);
224     g_test_add_func("/test-expand/@COMMIT", test_COMMIT);
225
226     g_test_add_func("/test-expand/cmd_useragent_simple", test_cmd_useragent_simple);
227     g_test_add_func("/test-expand/cmd_useragent_full", test_cmd_useragent_full);
228
229     g_test_add_func("/test-expand/escape_markup", test_escape_markup);
230     g_test_add_func("/test-expand/escape_expansion", test_escape_expansion);
231     g_test_add_func("/test-expand/nested", test_nested);
232
233     initialize(argc, argv);
234
235     return g_test_run();
236 }
237
238 /* vi: set et ts=4: */