#include "configuration.h"
#include "addr.h"
#include "base64.h"
+#include "url.h"
static int tests, errors;
static int fail_first;
static void test_mime(void) {
char *t, *n, *v;
struct vector parts[1];
+ struct kvp *k;
fprintf(stderr, "test_mime\n");
- t = n = v = 0;
- insist(!mime_content_type("text/plain", &t, &n, &v));
+ t = 0;
+ k = 0;
+ insist(!mime_content_type("text/plain", &t, &k));
check_string(t, "text/plain");
- insist(n == 0);
- insist(v == 0);
+ insist(k == 0);
- insist(mime_content_type("TEXT ((broken) comment", &t, &n, &v) < 0);
- insist(mime_content_type("TEXT ((broken) comment\\", &t, &n, &v) < 0);
+ insist(mime_content_type("TEXT ((broken) comment", &t, &k) < 0);
+ insist(mime_content_type("TEXT ((broken) comment\\", &t, &k) < 0);
- t = n = v = 0;
- insist(!mime_content_type("TEXT ((nested)\\ comment) /plain", &t, &n, &v));
+ t = 0;
+ k = 0;
+ insist(!mime_content_type("TEXT ((nested)\\ comment) /plain", &t, &k));
check_string(t, "text/plain");
- insist(n == 0);
- insist(v == 0);
+ insist(k == 0);
- t = n = v = 0;
- insist(!mime_content_type(" text/plain ; Charset=\"utf-\\8\"", &t, &n, &v));
+ t = 0;
+ k = 0;
+ insist(!mime_content_type(" text/plain ; Charset=\"utf-\\8\"", &t, &k));
check_string(t, "text/plain");
- check_string(n, "charset");
- check_string(v, "utf-8");
+ insist(k != 0);
+ insist(k->next == 0);
+ check_string(k->name, "charset");
+ check_string(k->value, "utf-8");
- t = n = v = 0;
- insist(!mime_content_type("text/plain;charset = ISO-8859-1 ", &t, &n, &v));
+ t = 0;
+ k = 0;
+ insist(!mime_content_type("text/plain;charset = ISO-8859-1 ", &t, &k));
+ insist(k != 0);
+ insist(k->next == 0);
check_string(t, "text/plain");
- check_string(n, "charset");
- check_string(v, "ISO-8859-1");
+ check_string(k->name, "charset");
+ check_string(k->value, "ISO-8859-1");
t = n = v = 0;
insist(!mime_rfc2388_content_disposition("form-data; name=\"field1\"", &t, &n, &v));
check_string(mime_qp("x =\r\ny"), "x y");
check_string(mime_qp("x = \r\ny"), "x y");
+ check_string(mime_to_qp(""), "");
+ check_string(mime_to_qp("foobar\n"), "foobar\n");
+ check_string(mime_to_qp("foobar \n"), "foobar=20\n");
+ check_string(mime_to_qp("foobar\t\n"), "foobar=09\n");
+ check_string(mime_to_qp("foobar \t \n"), "foobar=20=09=20\n");
+ check_string(mime_to_qp(" foo=bar"), " foo=3Dbar\n");
+ check_string(mime_to_qp("copyright \xC2\xA9"), "copyright =C2=A9\n");
+ check_string(mime_to_qp("foo\nbar\nbaz\n"), "foo\nbar\nbaz\n");
+ check_string(mime_to_qp("wibble wobble wibble wobble wibble wobble wibble wobble wibble wobble wibble"), "wibble wobble wibble wobble wibble wobble wibble wobble wibble wobble wibb=\nle\n");
+
/* from RFC2045 */
check_string(mime_qp("Now's the time =\r\n"
"for all folk to come=\r\n"
0
};
+ printf("test_addr\n");
+
a.n = 1;
a.s = (char **)s;
s[0] = "smtp";
check_string(name, "host localhost service nntp");
}
+static void test_url(void) {
+ struct url p;
+
+ printf("test_url\n");
+
+ insist(parse_url("http://www.example.com/example/path", &p) == 0);
+ check_string(p.scheme, "http");
+ check_string(p.host, "www.example.com");
+ insist(p.port == -1);
+ check_string(p.path, "/example/path");
+ insist(p.query == 0);
+
+ insist(parse_url("https://www.example.com:82/example%2fpath?+query+", &p) == 0);
+ check_string(p.scheme, "https");
+ check_string(p.host, "www.example.com");
+ insist(p.port == 82);
+ check_string(p.path, "/example/path");
+ check_string(p.query, "+query+");
+}
+
int main(void) {
mem_init();
fail_first = !!getenv("FAIL_FIRST");
/* selection.c */
test_selection();
test_hash();
+ test_url();
fprintf(stderr, "%d errors out of %d tests\n", errors, tests);
return !!errors;
}