1 /* -*- c-basic-offset: 4; -*- */
6 #include <gdk/gdkkeysyms.h>
7 #include <sys/socket.h>
11 #include <sys/utsname.h>
13 #include <webkit/webkit.h>
14 #include <libsoup/soup.h>
15 #include <JavaScriptCore/JavaScript.h>
30 extern gchar* expand(char*, guint);
31 extern void make_var_to_name_hash(void);
35 uzbl.state.keycmd = "gg winslow";
36 g_assert_cmpstr(expand("@keycmd", 0), ==, "gg winslow");
41 g_assert_cmpstr(expand("@uri", 0), ==, "");
43 uzbl.state.uri = g_strdup("http://www.uzbl.org/");
44 g_assert_cmpstr(expand("@uri", 0), ==, uzbl.state.uri);
45 g_free(uzbl.state.uri);
49 test_LOAD_PROGRESS (void) {
50 uzbl.gui.sbar.load_progress = 50;
51 g_assert_cmpstr(expand("@LOAD_PROGRESS", 0), ==, "50");
55 test_LOAD_PROGRESSBAR (void) {
56 uzbl.gui.sbar.progress_w = 4;
57 progress_change_cb(NULL, 75, NULL);
59 g_assert_cmpstr(expand("@LOAD_PROGRESSBAR", 0), ==, "===ยท");
64 uzbl.gui.main_title = "Lorem Ipsum";
65 g_assert_cmpstr(expand("@TITLE", 0), ==, "Lorem Ipsum");
69 test_SELECTED_URI (void) {
70 uzbl.state.selected_url = "http://example.org/";
71 g_assert_cmpstr(expand("@SELECTED_URI", 0), ==, "http://example.org/");
76 uzbl.state.instance_name = "testing";
77 g_assert_cmpstr(expand("@NAME", 0), ==, "testing");
82 set_var_value("insert_mode", "0");
83 g_assert_cmpstr(expand("@MODE", 0), ==, "C");
85 set_var_value("insert_mode", "1");
86 g_assert_cmpstr(expand("@MODE", 0), ==, "I");
90 test_status_message (void) {
91 uzbl.gui.sbar.msg = "Hello from frosty Edmonton!";
92 g_assert_cmpstr(expand("@status_message", 0), ==, "Hello from frosty Edmonton!");
96 test_WEBKIT_VERSION (void) {
97 GString* expected = g_string_new("");
98 g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
99 g_string_append(expected, " ");
100 g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
101 g_string_append(expected, " ");
102 g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
104 g_assert_cmpstr(expand("@WEBKIT_MAJOR @WEBKIT_MINOR @WEBKIT_MICRO", 0), ==, g_string_free(expected, FALSE));
108 test_ARCH_UZBL (void) {
109 g_assert_cmpstr(expand("@ARCH_UZBL", 0), ==, ARCH);
114 g_assert_cmpstr(expand("@COMMIT", 0), ==, uzbl.info.commit);
118 test_cmd_useragent_simple (void) {
119 GString* expected = g_string_new("Uzbl (Webkit ");
120 g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
121 g_string_append(expected, ".");
122 g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
123 g_string_append(expected, ".");
124 g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
125 g_string_append(expected, ")");
127 set_var_value("useragent", "Uzbl (Webkit @WEBKIT_MAJOR.@WEBKIT_MINOR.@WEBKIT_MICRO)");
128 g_assert_cmpstr(uzbl.net.useragent, ==, g_string_free(expected, FALSE));
132 test_cmd_useragent_full (void) {
133 GString* expected = g_string_new("Uzbl (Webkit ");
134 g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
135 g_string_append(expected, ".");
136 g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
137 g_string_append(expected, ".");
138 g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
139 g_string_append(expected, ") (");
141 struct utsname unameinfo;
142 if(uname(&unameinfo) == -1)
143 g_printerr("Can't retrieve unameinfo. This test might fail.\n");
145 g_string_append(expected, unameinfo.sysname);
146 g_string_append(expected, " ");
147 g_string_append(expected, unameinfo.nodename);
148 g_string_append(expected, " ");
149 g_string_append(expected, unameinfo.release);
150 g_string_append(expected, " ");
151 g_string_append(expected, unameinfo.version);
152 g_string_append(expected, " ");
153 g_string_append(expected, unameinfo.machine);
154 g_string_append(expected, " [");
155 g_string_append(expected, ARCH);
156 g_string_append(expected, "]) (Commit ");
157 g_string_append(expected, uzbl.info.commit);
158 g_string_append(expected, ")");
160 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)");
161 g_assert_cmpstr(uzbl.net.useragent, ==, g_string_free(expected, FALSE));
165 test_escape_markup (void) {
166 /* simple expansion */
167 uzbl.state.uri = g_strdup("<&>");
168 g_assert_cmpstr(expand("@uri", 0), ==, uzbl.state.uri);
169 g_assert_cmpstr(expand("@[@uri]@", 0), ==, "<&>");
171 /* shell expansion */
172 g_assert_cmpstr(expand("@(echo -n '<&>')@", 0), ==, "<&>");
173 g_assert_cmpstr(expand("@[@(echo -n '<&>')@]@", 0), ==, "<&>");
175 /* javascript expansion */
176 g_assert_cmpstr(expand("@<'<&>'>@", 0), ==, "<&>");
177 g_assert_cmpstr(expand("@[@<'<&>'>@]@", 0), ==, "<&>");
179 g_free(uzbl.state.uri);
183 test_escape_expansion (void) {
185 g_assert_cmpstr(expand("\\@uri", 0), ==, "@uri");
188 g_assert_cmpstr(expand("\\\\\\@uri", 0), ==, "\\@uri");
190 /* \@(...)\@ -> @(...)@ */
191 g_assert_cmpstr(expand("\\@(echo hi)\\@", 0), ==, "@(echo hi)@");
193 /* \@<...>\@ -> @<...>@ */
194 g_assert_cmpstr(expand("\\@<\"hi\">\\@", 0), ==, "@<\"hi\">@");
199 uzbl.gui.sbar.msg = "xxx";
200 g_assert_cmpstr(expand("@<\"..@status_message..\">@", 0), ==, "..xxx..");
201 g_assert_cmpstr(expand("@<\"..\\@status_message..\">@", 0), ==, "..@status_message..");
203 g_assert_cmpstr(expand("@(echo ..@status_message..)@", 0), ==, "..xxx..");
204 g_assert_cmpstr(expand("@(echo ..\\@status_message..)@", 0), ==, "..@status_message..");
208 main (int argc, char *argv[]) {
210 g_test_init(&argc, &argv, NULL);
212 g_test_add_func("/test-expand/@keycmd", test_keycmd);
213 g_test_add_func("/test-expand/@status_message", test_status_message);
214 g_test_add_func("/test-expand/@uri", test_uri);
215 g_test_add_func("/test-expand/@LOAD_PROGRESS", test_LOAD_PROGRESS);
216 g_test_add_func("/test-expand/@LOAD_PROGRESSBAR", test_LOAD_PROGRESSBAR);
217 g_test_add_func("/test-expand/@TITLE", test_TITLE);
218 g_test_add_func("/test-expand/@SELECTED_URI", test_SELECTED_URI);
219 g_test_add_func("/test-expand/@NAME", test_NAME);
220 g_test_add_func("/test-expand/@MODE", test_MODE);
221 g_test_add_func("/test-expand/@WEBKIT_*", test_WEBKIT_VERSION);
222 g_test_add_func("/test-expand/@ARCH_UZBL", test_ARCH_UZBL);
223 g_test_add_func("/test-expand/@COMMIT", test_COMMIT);
225 g_test_add_func("/test-expand/cmd_useragent_simple", test_cmd_useragent_simple);
226 g_test_add_func("/test-expand/cmd_useragent_full", test_cmd_useragent_full);
228 g_test_add_func("/test-expand/escape_markup", test_escape_markup);
229 g_test_add_func("/test-expand/escape_expansion", test_escape_expansion);
230 g_test_add_func("/test-expand/nested", test_nested);
232 initialize(argc, argv);
237 /* vi: set et ts=4: */