a84a413b2a5cc7c82c7eebe523a99ecccfe4ac81
[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 gchar* expand_template(const char*, gboolean);
32 extern void make_var_to_name_hash(void);
33
34 void
35 test_uri (void) {
36     g_assert_cmpstr(expand("@uri", 0, FALSE), ==, "");
37
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);
41 }
42
43 void
44 test_LOAD_PROGRESS (void) {
45     uzbl.gui.sbar.load_progress = 50;
46     g_assert_cmpstr(expand("@LOAD_PROGRESS", 0, FALSE), ==, "50");
47 }
48
49 void
50 test_LOAD_PROGRESSBAR (void) {
51     uzbl.gui.sbar.progress_w = 4;
52     progress_change_cb(NULL, 75, NULL);
53
54     g_assert_cmpstr(expand("@LOAD_PROGRESSBAR", 0, FALSE), ==, "===ยท");
55 }
56
57 void
58 test_TITLE (void) {
59     uzbl.gui.main_title = "Lorem Ipsum";
60     g_assert_cmpstr(expand("@TITLE", 0, 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("@SELECTED_URI", 0, 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.insert_mode = 0;
85     g_assert_cmpstr(expand_template("MODE", FALSE), ==, "C");
86
87     uzbl.behave.insert_mode = 1;
88     g_assert_cmpstr(expand_template("MODE", FALSE), ==, "I");
89 }
90
91 void
92 test_MSG (void) {
93     uzbl.gui.sbar.msg = "Hello from frosty Edmonton!";
94     g_assert_cmpstr(expand("@MSG", 0, FALSE), ==, "Hello from frosty Edmonton!");
95 }
96
97 void
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));
105
106     g_assert_cmpstr(expand("@WEBKIT_MAJOR @WEBKIT_MINOR @WEBKIT_MICRO", 0, FALSE), ==, g_string_free(expected, FALSE));
107 }
108
109 void
110 test_ARCH_UZBL (void) {
111     g_assert_cmpstr(expand("@ARCH_UZBL", 0, FALSE), ==, ARCH);
112 }
113
114 void
115 test_COMMIT (void) {
116     g_assert_cmpstr(expand("@COMMIT", 0, FALSE), ==, COMMIT);
117 }
118
119 void
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, ")");
128
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));
131 }
132
133 void
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, ") (");
142
143     struct utsname unameinfo;
144     if(uname(&unameinfo) == -1)
145       g_printerr("Can't retrieve unameinfo. This test might fail.\n");
146
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, ")");
161
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));
164 }
165
166 void
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), ==, "&lt;&amp;&gt;");
172
173     /* shell expansion */
174     g_assert_cmpstr(expand("@(echo -n '<&>')@", 0, FALSE), ==, "<&>");
175     g_assert_cmpstr(expand("@(echo -n '<&>')@", 0, TRUE), ==, "&lt;&amp;&gt;");
176
177     /* javascript expansion */
178     g_assert_cmpstr(expand("@<'<&>'>@", 0, FALSE), ==, "<&>");
179     g_assert_cmpstr(expand("@<'<&>'>@", 0, TRUE), ==, "&lt;&amp;&gt;");
180
181     g_free(uzbl.state.uri);
182 }
183
184 int
185 main (int argc, char *argv[]) {
186     g_type_init();
187     g_test_init(&argc, &argv, NULL);
188
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);
201
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);
204
205     g_test_add_func("/test-expand/escape_markup", test_escape_markup);
206
207     initialize(argc, argv);
208
209     return g_test_run();
210 }
211
212 /* vi: set et ts=4: */