make keycmd a variable. new escape expansion syntax. delete
[uzbl-mobile] / tests / test-expand.c
index d83bbe5..7cc558b 100644 (file)
 
 extern Uzbl uzbl;
 
-extern gchar* expand(char*, guint, gboolean);
-extern gchar* expand_template(const char*, gboolean);
+extern gchar* expand(char*, guint);
 extern void make_var_to_name_hash(void);
 
 void
-test_URI (void) {
+test_keycmd (void) {
+    uzbl.state.keycmd = "gg winslow";
+    g_assert_cmpstr(expand("@keycmd", 0), ==, "gg winslow");
+}
+
+void
+test_uri (void) {
+    g_assert_cmpstr(expand("@uri", 0), ==, "");
+
     uzbl.state.uri = g_strdup("http://www.uzbl.org/");
-    g_assert_cmpstr(expand_template("URI", FALSE), ==, uzbl.state.uri);
+    g_assert_cmpstr(expand("@uri", 0), ==, uzbl.state.uri);
     g_free(uzbl.state.uri);
 }
 
 void
 test_LOAD_PROGRESS (void) {
     uzbl.gui.sbar.load_progress = 50;
-    g_assert_cmpstr(expand_template("LOAD_PROGRESS", FALSE), ==, "50");
+    g_assert_cmpstr(expand("@LOAD_PROGRESS", 0), ==, "50");
 }
 
 void
 test_LOAD_PROGRESSBAR (void) {
-    uzbl.gui.sbar.load_progress = 75;
     uzbl.gui.sbar.progress_w = 4;
+    progress_change_cb(NULL, 75, NULL);
 
-    uzbl.gui.sbar.progress_s = "*";
-    uzbl.gui.sbar.progress_u = "-";
-
-    g_assert_cmpstr(expand_template("LOAD_PROGRESSBAR", FALSE), ==, "***-");
+    g_assert_cmpstr(expand("@LOAD_PROGRESSBAR", 0), ==, "===ยท");
 }
 
 void
 test_TITLE (void) {
     uzbl.gui.main_title = "Lorem Ipsum";
-    g_assert_cmpstr(expand_template("TITLE", FALSE), ==, "Lorem Ipsum");
+    g_assert_cmpstr(expand("@TITLE", 0), ==, "Lorem Ipsum");
 }
 
 void
 test_SELECTED_URI (void) {
     uzbl.state.selected_url = "http://example.org/";
-    g_assert_cmpstr(expand_template("SELECTED_URI", FALSE), ==, "http://example.org/");
+    g_assert_cmpstr(expand("@SELECTED_URI", 0), ==, "http://example.org/");
 }
 
 void
 test_NAME (void) {
-    uzbl.state.instance_name = "12345";
-    g_assert_cmpstr(expand_template("NAME", FALSE), ==, "12345");
-}
-
-void
-test_KEYCMD (void) {
-    uzbl.state.keycmd = g_string_new("gg winslow");
-    g_assert_cmpstr(expand_template("KEYCMD", FALSE), ==, "gg winslow");
-    g_string_free(uzbl.state.keycmd, TRUE);
+    uzbl.state.instance_name = "testing";
+    g_assert_cmpstr(expand("@NAME", 0), ==, "testing");
 }
 
 void
 test_MODE (void) {
-    uzbl.behave.cmd_indicator = "C";
-    uzbl.behave.insert_indicator = "I";
-
-    uzbl.behave.insert_mode = 0;
-    g_assert_cmpstr(expand_template("MODE", FALSE), ==, "C");
+    set_insert_mode(FALSE);
+    g_assert_cmpstr(expand("@MODE", 0), ==, "C");
 
-    uzbl.behave.insert_mode = 1;
-    g_assert_cmpstr(expand_template("MODE", FALSE), ==, "I");
+    set_insert_mode(TRUE);
+    g_assert_cmpstr(expand("@MODE", 0), ==, "I");
 }
 
 void
-test_MSG (void) {
+test_status_message (void) {
     uzbl.gui.sbar.msg = "Hello from frosty Edmonton!";
-    g_assert_cmpstr(expand_template("MSG", FALSE), ==, "Hello from frosty Edmonton!");
+    g_assert_cmpstr(expand("@status_message", 0), ==, "Hello from frosty Edmonton!");
 }
 
 void
@@ -107,34 +101,17 @@ test_WEBKIT_VERSION (void) {
     g_string_append(expected, " ");
     g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
 
-    g_assert_cmpstr(expand("@WEBKIT_MAJOR @WEBKIT_MINOR @WEBKIT_MICRO", 0, FALSE), ==, g_string_free(expected, FALSE));
-}
-
-void
-test_UNAMEINFO (void) {
-    GString* expected = g_string_new("");
-
-    g_string_append(expected, uzbl.state.unameinfo.sysname);
-    g_string_append(expected, " ");
-    g_string_append(expected, uzbl.state.unameinfo.nodename);
-    g_string_append(expected, " ");
-    g_string_append(expected, uzbl.state.unameinfo.release);
-    g_string_append(expected, " ");
-    g_string_append(expected, uzbl.state.unameinfo.version);
-    g_string_append(expected, " ");
-    g_string_append(expected, uzbl.state.unameinfo.machine);
-
-    g_assert_cmpstr(expand("@SYSNAME @NODENAME @KERNREL @KERNVER @ARCH_SYSTEM", 0, FALSE), ==, g_string_free(expected, FALSE));
+    g_assert_cmpstr(expand("@WEBKIT_MAJOR @WEBKIT_MINOR @WEBKIT_MICRO", 0), ==, g_string_free(expected, FALSE));
 }
 
 void
 test_ARCH_UZBL (void) {
-    g_assert_cmpstr(expand("@ARCH_UZBL", 0, FALSE), ==, ARCH);
+    g_assert_cmpstr(expand("@ARCH_UZBL", 0), ==, ARCH);
 }
 
 void
 test_COMMIT (void) {
-    g_assert_cmpstr(expand("@COMMIT", 0, FALSE), ==, COMMIT);
+    g_assert_cmpstr(expand("@COMMIT", 0), ==, COMMIT);
 }
 
 void
@@ -161,22 +138,26 @@ test_cmd_useragent_full (void) {
     g_string_append(expected, itos(WEBKIT_MICRO_VERSION));
     g_string_append(expected, ") (");
 
-    g_string_append(expected, uzbl.state.unameinfo.sysname);
+    struct utsname unameinfo;
+    if(uname(&unameinfo) == -1)
+      g_printerr("Can't retrieve unameinfo. This test might fail.\n");
+
+    g_string_append(expected, unameinfo.sysname);
     g_string_append(expected, " ");
-    g_string_append(expected, uzbl.state.unameinfo.nodename);
+    g_string_append(expected, unameinfo.nodename);
     g_string_append(expected, " ");
-    g_string_append(expected, uzbl.state.unameinfo.release);
+    g_string_append(expected, unameinfo.release);
     g_string_append(expected, " ");
-    g_string_append(expected, uzbl.state.unameinfo.version);
+    g_string_append(expected, unameinfo.version);
     g_string_append(expected, " ");
-    g_string_append(expected, uzbl.state.unameinfo.machine);
+    g_string_append(expected, unameinfo.machine);
     g_string_append(expected, " [");
     g_string_append(expected, ARCH);
     g_string_append(expected, "]) (Commit ");
     g_string_append(expected, COMMIT);
     g_string_append(expected, ")");
 
-    set_var_value("useragent", "Uzbl (Webkit @WEBKIT_MAJOR.@WEBKIT_MINOR.@WEBKIT_MICRO) (@SYSNAME @NODENAME @KERNREL @KERNVER @ARCH_SYSTEM [@ARCH_UZBL]) (Commit @COMMIT)");
+    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)");
     g_assert_cmpstr(uzbl.net.useragent, ==, g_string_free(expected, FALSE));
 }
 
@@ -184,59 +165,71 @@ void
 test_escape_markup (void) {
     /* simple expansion */
     uzbl.state.uri = g_strdup("<&>");
-    g_assert_cmpstr(expand("@uri", 0, FALSE), ==, uzbl.state.uri);
-    g_assert_cmpstr(expand("@uri", 0, TRUE), ==, "&lt;&amp;&gt;");
+    g_assert_cmpstr(expand("@uri", 0), ==, uzbl.state.uri);
+    g_assert_cmpstr(expand("@[@uri]@", 0), ==, "&lt;&amp;&gt;");
 
     /* shell expansion */
-    g_assert_cmpstr(expand("@(echo -n '<&>')@", 0, FALSE), ==, "<&>");
-    g_assert_cmpstr(expand("@(echo -n '<&>')@", 0, TRUE), ==, "&lt;&amp;&gt;");
+    g_assert_cmpstr(expand("@(echo -n '<&>')@", 0), ==, "<&>");
+    g_assert_cmpstr(expand("@[@(echo -n '<&>')@]@", 0), ==, "&lt;&amp;&gt;");
 
     /* javascript expansion */
-    g_assert_cmpstr(expand("@<'<&>'>@", 0, FALSE), ==, "<&>");
-    g_assert_cmpstr(expand("@<'<&>'>@", 0, TRUE), ==, "&lt;&amp;&gt;");
+    g_assert_cmpstr(expand("@<'<&>'>@", 0), ==, "<&>");
+    g_assert_cmpstr(expand("@[@<'<&>'>@]@", 0), ==, "&lt;&amp;&gt;");
 
     g_free(uzbl.state.uri);
 }
 
+void
+test_escape_expansion (void) {
+    /* \@ -> @ */
+    g_assert_cmpstr(expand("\\@uri", 0), ==, "@uri");
+
+    /* \\\@ -> \@ */
+    g_assert_cmpstr(expand("\\\\\\@uri", 0), ==, "\\@uri");
+
+    /* \@(...)\@ -> @(...)@ */
+    g_assert_cmpstr(expand("\\@(echo hi)\\@", 0), ==, "@(echo hi)@");
+
+    /* \@<...>\@ -> @<...>@ */
+    g_assert_cmpstr(expand("\\@<\"hi\">\\@", 0), ==, "@<\"hi\">@");
+}
+
+void
+test_nested (void) {
+    uzbl.gui.sbar.msg = "xxx";
+    g_assert_cmpstr(expand("@<\"..@status_message..\">@", 0), ==, "..xxx..");
+    g_assert_cmpstr(expand("@<\"..\\@status_message..\">@", 0), ==, "..@status_message..");
+
+    g_assert_cmpstr(expand("@(echo ..@status_message..)@", 0), ==, "..xxx..");
+    g_assert_cmpstr(expand("@(echo ..\\@status_message..)@", 0), ==, "..@status_message..");
+}
+
 int
 main (int argc, char *argv[]) {
     g_type_init();
     g_test_init(&argc, &argv, NULL);
 
-    g_test_add_func("/test-expand/URI", test_URI);
-    g_test_add_func("/test-expand/LOAD_PROGRESS", test_LOAD_PROGRESS);
-    g_test_add_func("/test-expand/LOAD_PROGRESSBAR", test_LOAD_PROGRESSBAR);
-    g_test_add_func("/test-expand/TITLE", test_TITLE);
-    g_test_add_func("/test-expand/SELECTED_URI", test_SELECTED_URI);
-    g_test_add_func("/test-expand/NAME", test_NAME);
-    g_test_add_func("/test-expand/KEYCMD", test_KEYCMD);
-    g_test_add_func("/test-expand/MODE", test_MODE);
-    g_test_add_func("/test-expand/MSG", test_MSG);
-    g_test_add_func("/test-expand/WEBKIT_VERSION", test_WEBKIT_VERSION);
-    g_test_add_func("/test-expand/UNAMEINFO", test_UNAMEINFO);
-    g_test_add_func("/test-expand/ARCH_UZBL", test_ARCH_UZBL);
-    /* this only exists on _GNU_SOURCE i guess */
-    /* g_test_add_func("/test-expand/DOMAINNAME", test_DOMAINNAME); */
-    g_test_add_func("/test-expand/COMMIT", test_COMMIT);
+    g_test_add_func("/test-expand/@keycmd", test_keycmd);
+    g_test_add_func("/test-expand/@status_message", test_status_message);
+    g_test_add_func("/test-expand/@uri", test_uri);
+    g_test_add_func("/test-expand/@LOAD_PROGRESS", test_LOAD_PROGRESS);
+    g_test_add_func("/test-expand/@LOAD_PROGRESSBAR", test_LOAD_PROGRESSBAR);
+    g_test_add_func("/test-expand/@TITLE", test_TITLE);
+    g_test_add_func("/test-expand/@SELECTED_URI", test_SELECTED_URI);
+    g_test_add_func("/test-expand/@NAME", test_NAME);
+    g_test_add_func("/test-expand/@MODE", test_MODE);
+    g_test_add_func("/test-expand/@WEBKIT_*", test_WEBKIT_VERSION);
+    g_test_add_func("/test-expand/@ARCH_UZBL", test_ARCH_UZBL);
+    g_test_add_func("/test-expand/@COMMIT", test_COMMIT);
 
     g_test_add_func("/test-expand/cmd_useragent_simple", test_cmd_useragent_simple);
     g_test_add_func("/test-expand/cmd_useragent_full", test_cmd_useragent_full);
 
     g_test_add_func("/test-expand/escape_markup", test_escape_markup);
+    g_test_add_func("/test-expand/escape_expansion", test_escape_expansion);
+    g_test_add_func("/test-expand/nested", test_nested);
 
-    gtk_init(&argc, &argv);
-    if (!g_thread_supported ())
-        g_thread_init (NULL);
-
-    uzbl.net.soup_session = webkit_get_default_session();
-
-    if(uname(&uzbl.state.unameinfo) == -1)
-      g_printerr("Can't retrieve unameinfo. This test might fail.\n");
-
-    setup_scanner();
-    make_var_to_name_hash();
-
-    uzbl.gui.scrolled_win = create_browser();
+    initialize(argc, argv);
 
     return g_test_run();
 }