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 g_assert_cmpstr(expand("@uri", 0, FALSE), ==, "");
38 uzbl.state.uri = g_strdup("http://www.uzbl.org/");
39 g_assert_cmpstr(expand("@uri", 0, FALSE), ==, uzbl.state.uri);
40 g_free(uzbl.state.uri);
44 test_LOAD_PROGRESS (void) {
45 uzbl.gui.sbar.load_progress = 50;
46 g_assert_cmpstr(expand("@LOAD_PROGRESS", 0, FALSE), ==, "50");
50 test_LOAD_PROGRESSBAR (void) {
51 uzbl.gui.sbar.progress_w = 4;
52 progress_change_cb(NULL, 75, NULL);
54 g_assert_cmpstr(expand("@LOAD_PROGRESSBAR", 0, FALSE), ==, "===ยท");
59 uzbl.gui.main_title = "Lorem Ipsum";
60 g_assert_cmpstr(expand("@TITLE", 0, FALSE), ==, "Lorem Ipsum");
64 test_SELECTED_URI (void) {
65 uzbl.state.selected_url = "http://example.org/";
66 g_assert_cmpstr(expand("@SELECTED_URI", 0, FALSE), ==, "http://example.org/");
71 uzbl.state.instance_name = "12345";
72 g_assert_cmpstr(expand_template("NAME", FALSE), ==, "12345");
77 uzbl.state.keycmd = g_string_new("gg winslow");
78 g_assert_cmpstr(expand_template("KEYCMD", FALSE), ==, "gg winslow");
79 g_string_free(uzbl.state.keycmd, TRUE);
84 uzbl.behave.insert_mode = 0;
85 g_assert_cmpstr(expand_template("MODE", FALSE), ==, "C");
87 uzbl.behave.insert_mode = 1;
88 g_assert_cmpstr(expand_template("MODE", FALSE), ==, "I");
93 uzbl.gui.sbar.msg = "Hello from frosty Edmonton!";
94 g_assert_cmpstr(expand("@MSG", 0, FALSE), ==, "Hello from frosty Edmonton!");
98 test_WEBKIT_VERSION (void) {
99 GString* expected = g_string_new("");
100 g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
101 g_string_append(expected, " ");
102 g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
103 g_string_append(expected, " ");
104 g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
106 g_assert_cmpstr(expand("@WEBKIT_MAJOR @WEBKIT_MINOR @WEBKIT_MICRO", 0, FALSE), ==, g_string_free(expected, FALSE));
110 test_ARCH_UZBL (void) {
111 g_assert_cmpstr(expand("@ARCH_UZBL", 0, FALSE), ==, ARCH);
116 g_assert_cmpstr(expand("@COMMIT", 0, FALSE), ==, COMMIT);
120 test_cmd_useragent_simple (void) {
121 GString* expected = g_string_new("Uzbl (Webkit ");
122 g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
123 g_string_append(expected, ".");
124 g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
125 g_string_append(expected, ".");
126 g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
127 g_string_append(expected, ")");
129 set_var_value("useragent", "Uzbl (Webkit @WEBKIT_MAJOR.@WEBKIT_MINOR.@WEBKIT_MICRO)");
130 g_assert_cmpstr(uzbl.net.useragent, ==, g_string_free(expected, FALSE));
134 test_cmd_useragent_full (void) {
135 GString* expected = g_string_new("Uzbl (Webkit ");
136 g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
137 g_string_append(expected, ".");
138 g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
139 g_string_append(expected, ".");
140 g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
141 g_string_append(expected, ") (");
143 struct utsname unameinfo;
144 if(uname(&unameinfo) == -1)
145 g_printerr("Can't retrieve unameinfo. This test might fail.\n");
147 g_string_append(expected, unameinfo.sysname);
148 g_string_append(expected, " ");
149 g_string_append(expected, unameinfo.nodename);
150 g_string_append(expected, " ");
151 g_string_append(expected, unameinfo.release);
152 g_string_append(expected, " ");
153 g_string_append(expected, unameinfo.version);
154 g_string_append(expected, " ");
155 g_string_append(expected, unameinfo.machine);
156 g_string_append(expected, " [");
157 g_string_append(expected, ARCH);
158 g_string_append(expected, "]) (Commit ");
159 g_string_append(expected, COMMIT);
160 g_string_append(expected, ")");
162 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)");
163 g_assert_cmpstr(uzbl.net.useragent, ==, g_string_free(expected, FALSE));
167 test_escape_markup (void) {
168 /* simple expansion */
169 uzbl.state.uri = g_strdup("<&>");
170 g_assert_cmpstr(expand("@uri", 0, FALSE), ==, uzbl.state.uri);
171 g_assert_cmpstr(expand("@uri", 0, TRUE), ==, "<&>");
173 /* shell expansion */
174 g_assert_cmpstr(expand("@(echo -n '<&>')@", 0, FALSE), ==, "<&>");
175 g_assert_cmpstr(expand("@(echo -n '<&>')@", 0, TRUE), ==, "<&>");
177 /* javascript expansion */
178 g_assert_cmpstr(expand("@<'<&>'>@", 0, FALSE), ==, "<&>");
179 g_assert_cmpstr(expand("@<'<&>'>@", 0, TRUE), ==, "<&>");
181 g_free(uzbl.state.uri);
185 main (int argc, char *argv[]) {
187 g_test_init(&argc, &argv, NULL);
189 g_test_add_func("/test-expand/@uri", test_uri);
190 g_test_add_func("/test-expand/@LOAD_PROGRESS", test_LOAD_PROGRESS);
191 g_test_add_func("/test-expand/@LOAD_PROGRESSBAR", test_LOAD_PROGRESSBAR);
192 g_test_add_func("/test-expand/@TITLE", test_TITLE);
193 g_test_add_func("/test-expand/@SELECTED_URI", test_SELECTED_URI);
194 g_test_add_func("/test-expand/NAME", test_NAME);
195 g_test_add_func("/test-expand/KEYCMD", test_KEYCMD);
196 g_test_add_func("/test-expand/MODE", test_MODE);
197 g_test_add_func("/test-expand/MSG", test_MSG);
198 g_test_add_func("/test-expand/@WEBKIT_*", test_WEBKIT_VERSION);
199 g_test_add_func("/test-expand/@ARCH_UZBL", test_ARCH_UZBL);
200 g_test_add_func("/test-expand/@COMMIT", test_COMMIT);
202 g_test_add_func("/test-expand/cmd_useragent_simple", test_cmd_useragent_simple);
203 g_test_add_func("/test-expand/cmd_useragent_full", test_cmd_useragent_full);
205 g_test_add_func("/test-expand/escape_markup", test_escape_markup);
207 initialize(argc, argv);
212 /* vi: set et ts=4: */