test for full useragent expansion
[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 extern void make_var_to_name_hash(void);
32
33 void
34 test_URI (void) {
35     uzbl.state.uri = g_strdup("http://www.uzbl.org/");
36     g_assert_cmpstr(expand_template("URI", FALSE), ==, uzbl.state.uri);
37     g_free(uzbl.state.uri);
38 }
39
40 void
41 test_LOAD_PROGRESS (void) {
42     uzbl.gui.sbar.load_progress = 50;
43     g_assert_cmpstr(expand_template("LOAD_PROGRESS", FALSE), ==, "50");
44 }
45
46 void
47 test_LOAD_PROGRESSBAR (void) {
48     uzbl.gui.sbar.load_progress = 75;
49     uzbl.gui.sbar.progress_w = 4;
50
51     uzbl.gui.sbar.progress_s = "*";
52     uzbl.gui.sbar.progress_u = "-";
53
54     g_assert_cmpstr(expand_template("LOAD_PROGRESSBAR", FALSE), ==, "***-");
55 }
56
57 void
58 test_TITLE (void) {
59     uzbl.gui.main_title = "Lorem Ipsum";
60     g_assert_cmpstr(expand_template("TITLE", FALSE), ==, "Lorem Ipsum");
61 }
62
63 void
64 test_SELECTED_URI (void) {
65     uzbl.state.selected_url = "http://example.org/";
66     g_assert_cmpstr(expand_template("SELECTED_URI", FALSE), ==, "http://example.org/");
67 }
68
69 void
70 test_NAME (void) {
71     uzbl.state.instance_name = "12345";
72     g_assert_cmpstr(expand_template("NAME", FALSE), ==, "12345");
73 }
74
75 void
76 test_KEYCMD (void) {
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);
80 }
81
82 void
83 test_MODE (void) {
84     uzbl.behave.cmd_indicator = "C";
85     uzbl.behave.insert_indicator = "I";
86
87     uzbl.behave.insert_mode = 0;
88     g_assert_cmpstr(expand_template("MODE", FALSE), ==, "C");
89
90     uzbl.behave.insert_mode = 1;
91     g_assert_cmpstr(expand_template("MODE", FALSE), ==, "I");
92 }
93
94 void
95 test_MSG (void) {
96     uzbl.gui.sbar.msg = "Hello from frosty Edmonton!";
97     g_assert_cmpstr(expand_template("MSG", FALSE), ==, "Hello from frosty Edmonton!");
98 }
99
100 void
101 test_WEBKIT_VERSION (void) {
102     GString* expected = g_string_new("");
103     g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
104     g_string_append(expected, " ");
105     g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
106     g_string_append(expected, " ");
107     g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
108
109     g_assert_cmpstr(expand_template("WEBKIT_MAJOR WEBKIT_MINOR WEBKIT_MICRO", FALSE), ==, g_string_free(expected, FALSE));
110 }
111
112 void
113 test_UNAMEINFO (void) {
114     GString* expected = g_string_new("");
115
116     if(uname(&uzbl.state.unameinfo) == -1)
117       g_printerr("Can't retrieve unameinfo. This test might fail.\n");
118
119     g_string_append(expected, uzbl.state.unameinfo.sysname);
120     g_string_append(expected, " ");
121     g_string_append(expected, uzbl.state.unameinfo.nodename);
122     g_string_append(expected, " ");
123     g_string_append(expected, uzbl.state.unameinfo.release);
124     g_string_append(expected, " ");
125     g_string_append(expected, uzbl.state.unameinfo.version);
126     g_string_append(expected, " ");
127     g_string_append(expected, uzbl.state.unameinfo.machine);
128
129     g_assert_cmpstr(expand_template("SYSNAME NODENAME KERNREL KERNVER ARCH_SYSTEM", FALSE), ==, g_string_free(expected, FALSE));
130 }
131
132 void
133 test_ARCH_UZBL (void) {
134     g_assert_cmpstr(expand_template("ARCH_UZBL", FALSE), ==, ARCH);
135 }
136
137 void
138 test_COMMIT (void) {
139     g_assert_cmpstr(expand_template("COMMIT", FALSE), ==, COMMIT);
140 }
141
142 void
143 test_cmd_useragent_simple (void) {
144     GString* expected = g_string_new("Uzbl (Webkit ");
145     g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
146     g_string_append(expected, ".");
147     g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
148     g_string_append(expected, ".");
149     g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
150     g_string_append(expected, ")");
151
152     set_var_value("useragent", "Uzbl (Webkit WEBKIT_MAJOR.WEBKIT_MINOR.WEBKIT_MICRO)");
153     g_assert_cmpstr(uzbl.net.useragent, ==, g_string_free(expected, FALSE));
154 }
155
156 void
157 test_cmd_useragent_full (void) {
158     GString* expected = g_string_new("Uzbl (Webkit ");
159     g_string_append(expected, itos(WEBKIT_MAJOR_VERSION));
160     g_string_append(expected, ".");
161     g_string_append(expected, itos(WEBKIT_MINOR_VERSION));
162     g_string_append(expected, ".");
163     g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
164     g_string_append(expected, ") (");
165
166     g_string_append(expected, uzbl.state.unameinfo.sysname);
167     g_string_append(expected, " ");
168     g_string_append(expected, uzbl.state.unameinfo.nodename);
169     g_string_append(expected, " ");
170     g_string_append(expected, uzbl.state.unameinfo.release);
171     g_string_append(expected, " ");
172     g_string_append(expected, uzbl.state.unameinfo.version);
173     g_string_append(expected, " ");
174     g_string_append(expected, uzbl.state.unameinfo.machine);
175     g_string_append(expected, " [");
176     g_string_append(expected, ARCH);
177     g_string_append(expected, "]) (Commit ");
178     g_string_append(expected, COMMIT);
179     g_string_append(expected, ")");
180
181     set_var_value("useragent", "Uzbl (Webkit WEBKIT_MAJOR.WEBKIT_MINOR.WEBKIT_MICRO) (SYSNAME NODENAME KERNREL KERNVER ARCH_SYSTEM [ARCH_UZBL]) (Commit COMMIT)");
182     g_assert_cmpstr(uzbl.net.useragent, ==, g_string_free(expected, FALSE));
183 }
184
185 int
186 main (int argc, char *argv[]) {
187     g_type_init();
188     g_test_init(&argc, &argv, NULL);
189
190     g_test_add_func("/test-expand/URI", test_URI);
191     g_test_add_func("/test-expand/LOAD_PROGRESS", test_LOAD_PROGRESS);
192     g_test_add_func("/test-expand/LOAD_PROGRESSBAR", test_LOAD_PROGRESSBAR);
193     g_test_add_func("/test-expand/TITLE", test_TITLE);
194     g_test_add_func("/test-expand/SELECTED_URI", test_SELECTED_URI);
195     g_test_add_func("/test-expand/NAME", test_NAME);
196     g_test_add_func("/test-expand/KEYCMD", test_KEYCMD);
197     g_test_add_func("/test-expand/MODE", test_MODE);
198     g_test_add_func("/test-expand/MSG", test_MSG);
199     g_test_add_func("/test-expand/WEBKIT_VERSION", test_WEBKIT_VERSION);
200     g_test_add_func("/test-expand/UNAMEINFO", test_UNAMEINFO);
201     g_test_add_func("/test-expand/ARCH_UZBL", test_ARCH_UZBL);
202     /* this only exists on _GNU_SOURCE i guess */
203     /* g_test_add_func("/test-expand/DOMAINNAME", test_DOMAINNAME); */
204     g_test_add_func("/test-expand/COMMIT", test_COMMIT);
205
206     g_test_add_func("/test-expand/cmd_useragent_simple", test_cmd_useragent_simple);
207     g_test_add_func("/test-expand/cmd_useragent_full", test_cmd_useragent_full);
208
209     if (!g_thread_supported ())
210         g_thread_init (NULL);
211
212     uzbl.net.soup_session = webkit_get_default_session();
213     setup_scanner();
214     make_var_to_name_hash();
215
216     return g_test_run();
217 }
218
219 /* vi: set et ts=4: */