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, gboolean);
31 extern gchar* expand_template(const char*, gboolean);
32 extern void make_var_to_name_hash(void);
36 uzbl.state.uri = g_strdup("http://www.uzbl.org/");
37 g_assert_cmpstr(expand_template("URI", FALSE), ==, uzbl.state.uri);
38 g_free(uzbl.state.uri);
42 test_LOAD_PROGRESS (void) {
43 uzbl.gui.sbar.load_progress = 50;
44 g_assert_cmpstr(expand_template("LOAD_PROGRESS", FALSE), ==, "50");
48 test_LOAD_PROGRESSBAR (void) {
49 uzbl.gui.sbar.load_progress = 75;
50 uzbl.gui.sbar.progress_w = 4;
52 uzbl.gui.sbar.progress_s = "*";
53 uzbl.gui.sbar.progress_u = "-";
55 g_assert_cmpstr(expand_template("LOAD_PROGRESSBAR", FALSE), ==, "***-");
60 uzbl.gui.main_title = "Lorem Ipsum";
61 g_assert_cmpstr(expand_template("TITLE", FALSE), ==, "Lorem Ipsum");
65 test_SELECTED_URI (void) {
66 uzbl.state.selected_url = "http://example.org/";
67 g_assert_cmpstr(expand_template("SELECTED_URI", FALSE), ==, "http://example.org/");
72 uzbl.state.instance_name = "12345";
73 g_assert_cmpstr(expand_template("NAME", FALSE), ==, "12345");
78 uzbl.state.keycmd = g_string_new("gg winslow");
79 g_assert_cmpstr(expand_template("KEYCMD", FALSE), ==, "gg winslow");
80 g_string_free(uzbl.state.keycmd, TRUE);
85 uzbl.behave.cmd_indicator = "C";
86 uzbl.behave.insert_indicator = "I";
88 uzbl.behave.insert_mode = 0;
89 g_assert_cmpstr(expand_template("MODE", FALSE), ==, "C");
91 uzbl.behave.insert_mode = 1;
92 g_assert_cmpstr(expand_template("MODE", FALSE), ==, "I");
97 uzbl.gui.sbar.msg = "Hello from frosty Edmonton!";
98 g_assert_cmpstr(expand_template("MSG", FALSE), ==, "Hello from frosty Edmonton!");
102 test_WEBKIT_VERSION (void) {
103 GString* expected = g_string_new("");
104 g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
105 g_string_append(expected, " ");
106 g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
107 g_string_append(expected, " ");
108 g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
110 g_assert_cmpstr(expand("@WEBKIT_MAJOR @WEBKIT_MINOR @WEBKIT_MICRO", 0, FALSE), ==, g_string_free(expected, FALSE));
114 test_UNAMEINFO (void) {
115 GString* expected = g_string_new("");
117 g_string_append(expected, uzbl.state.unameinfo.sysname);
118 g_string_append(expected, " ");
119 g_string_append(expected, uzbl.state.unameinfo.nodename);
120 g_string_append(expected, " ");
121 g_string_append(expected, uzbl.state.unameinfo.release);
122 g_string_append(expected, " ");
123 g_string_append(expected, uzbl.state.unameinfo.version);
124 g_string_append(expected, " ");
125 g_string_append(expected, uzbl.state.unameinfo.machine);
127 g_assert_cmpstr(expand("@SYSNAME @NODENAME @KERNREL @KERNVER @ARCH_SYSTEM", 0, FALSE), ==, g_string_free(expected, FALSE));
131 test_ARCH_UZBL (void) {
132 g_assert_cmpstr(expand("@ARCH_UZBL", 0, FALSE), ==, ARCH);
137 g_assert_cmpstr(expand("@COMMIT", 0, FALSE), ==, COMMIT);
141 test_cmd_useragent_simple (void) {
142 GString* expected = g_string_new("Uzbl (Webkit ");
143 g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
144 g_string_append(expected, ".");
145 g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
146 g_string_append(expected, ".");
147 g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
148 g_string_append(expected, ")");
150 set_var_value("useragent", "Uzbl (Webkit @WEBKIT_MAJOR.@WEBKIT_MINOR.@WEBKIT_MICRO)");
151 g_assert_cmpstr(uzbl.net.useragent, ==, g_string_free(expected, FALSE));
155 test_cmd_useragent_full (void) {
156 GString* expected = g_string_new("Uzbl (Webkit ");
157 g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
158 g_string_append(expected, ".");
159 g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
160 g_string_append(expected, ".");
161 g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
162 g_string_append(expected, ") (");
164 g_string_append(expected, uzbl.state.unameinfo.sysname);
165 g_string_append(expected, " ");
166 g_string_append(expected, uzbl.state.unameinfo.nodename);
167 g_string_append(expected, " ");
168 g_string_append(expected, uzbl.state.unameinfo.release);
169 g_string_append(expected, " ");
170 g_string_append(expected, uzbl.state.unameinfo.version);
171 g_string_append(expected, " ");
172 g_string_append(expected, uzbl.state.unameinfo.machine);
173 g_string_append(expected, " [");
174 g_string_append(expected, ARCH);
175 g_string_append(expected, "]) (Commit ");
176 g_string_append(expected, COMMIT);
177 g_string_append(expected, ")");
179 set_var_value("useragent", "Uzbl (Webkit @WEBKIT_MAJOR.@WEBKIT_MINOR.@WEBKIT_MICRO) (@SYSNAME @NODENAME @KERNREL @KERNVER @ARCH_SYSTEM [@ARCH_UZBL]) (Commit @COMMIT)");
180 g_assert_cmpstr(uzbl.net.useragent, ==, g_string_free(expected, FALSE));
184 test_escape_markup (void) {
185 /* simple expansion */
186 uzbl.state.uri = g_strdup("<&>");
187 g_assert_cmpstr(expand("@uri", 0, FALSE), ==, uzbl.state.uri);
188 g_assert_cmpstr(expand("@uri", 0, TRUE), ==, "<&>");
190 /* shell expansion */
191 g_assert_cmpstr(expand("@(echo -n '<&>')@", 0, FALSE), ==, "<&>");
192 g_assert_cmpstr(expand("@(echo -n '<&>')@", 0, TRUE), ==, "<&>");
194 /* javascript expansion */
195 g_assert_cmpstr(expand("@<'<&>'>@", 0, FALSE), ==, "<&>");
196 g_assert_cmpstr(expand("@<'<&>'>@", 0, TRUE), ==, "<&>");
198 g_free(uzbl.state.uri);
202 main (int argc, char *argv[]) {
204 g_test_init(&argc, &argv, NULL);
206 g_test_add_func("/test-expand/URI", test_URI);
207 g_test_add_func("/test-expand/LOAD_PROGRESS", test_LOAD_PROGRESS);
208 g_test_add_func("/test-expand/LOAD_PROGRESSBAR", test_LOAD_PROGRESSBAR);
209 g_test_add_func("/test-expand/TITLE", test_TITLE);
210 g_test_add_func("/test-expand/SELECTED_URI", test_SELECTED_URI);
211 g_test_add_func("/test-expand/NAME", test_NAME);
212 g_test_add_func("/test-expand/KEYCMD", test_KEYCMD);
213 g_test_add_func("/test-expand/MODE", test_MODE);
214 g_test_add_func("/test-expand/MSG", test_MSG);
215 g_test_add_func("/test-expand/WEBKIT_VERSION", test_WEBKIT_VERSION);
216 g_test_add_func("/test-expand/UNAMEINFO", test_UNAMEINFO);
217 g_test_add_func("/test-expand/ARCH_UZBL", test_ARCH_UZBL);
218 /* this only exists on _GNU_SOURCE i guess */
219 /* g_test_add_func("/test-expand/DOMAINNAME", test_DOMAINNAME); */
220 g_test_add_func("/test-expand/COMMIT", test_COMMIT);
222 g_test_add_func("/test-expand/cmd_useragent_simple", test_cmd_useragent_simple);
223 g_test_add_func("/test-expand/cmd_useragent_full", test_cmd_useragent_full);
225 g_test_add_func("/test-expand/escape_markup", test_escape_markup);
227 gtk_init(&argc, &argv);
228 if (!g_thread_supported ())
229 g_thread_init (NULL);
231 uzbl.net.soup_session = webkit_get_default_session();
233 if(uname(&uzbl.state.unameinfo) == -1)
234 g_printerr("Can't retrieve unameinfo. This test might fail.\n");
237 make_var_to_name_hash();
239 uzbl.gui.scrolled_win = create_browser();
244 /* vi: set et ts=4: */