src/url_test.c
author Tero Marttila <terom@fixme.fi>
Sat, 13 Dec 2008 19:55:50 +0200
branchnew-evsql
changeset 53 0d6e07f4c9a1
parent 18 b12e78767248
permissions -rw-r--r--
separate evsql documentation
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#include <stdlib.h>
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
#include <stdio.h>
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
#include <string.h>
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
#include "lib/url.h"
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
16
74fb62022fb3 starting to work
Tero Marttila <terom@fixme.fi>
parents: 15
diff changeset
     8
#define FAIL(...) do { printf("FAIL: "); printf(__VA_ARGS__); printf("\n"); return -1; } while (0)
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
17
0a024b29b16d more tests and tweaks
Tero Marttila <terom@fixme.fi>
parents: 16
diff changeset
    10
struct url_schema
0a024b29b16d more tests and tweaks
Tero Marttila <terom@fixme.fi>
parents: 16
diff changeset
    11
    basic_http = { 1, { "http" } },
18
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    12
    svn_ssh = { 2, { "svn", "ssh" } },
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    13
    schema_unix = { 1, { "unix" } }
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    14
    ;
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    15
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    16
struct url_opts
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    17
    opts_single = { 1, { { "key0", "val0" } } },
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    18
    opts_multi = { 2, { { "key0", "val0" }, { "key1", "val1" } } },
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    19
    opts_nullval = { 1, { { "keyN", NULL } } }
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    20
    ;
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
struct url_test {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
    const char *url;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
    const struct url expected;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
} url_tests[] = {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
    {   "localhost:http",   {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
        NULL, NULL, NULL, "localhost", "http", NULL, NULL
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
    } },
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
16
74fb62022fb3 starting to work
Tero Marttila <terom@fixme.fi>
parents: 15
diff changeset
    30
    {   "http://example.com/path",  {
74fb62022fb3 starting to work
Tero Marttila <terom@fixme.fi>
parents: 15
diff changeset
    31
        &basic_http, NULL, NULL, "example.com", NULL, "path", NULL 
74fb62022fb3 starting to work
Tero Marttila <terom@fixme.fi>
parents: 15
diff changeset
    32
    } },
17
0a024b29b16d more tests and tweaks
Tero Marttila <terom@fixme.fi>
parents: 16
diff changeset
    33
0a024b29b16d more tests and tweaks
Tero Marttila <terom@fixme.fi>
parents: 16
diff changeset
    34
    {   "svn+ssh://user:passwd@someplace:someport/something",   {
0a024b29b16d more tests and tweaks
Tero Marttila <terom@fixme.fi>
parents: 16
diff changeset
    35
        &svn_ssh, "user", "passwd", "someplace", "someport", "something"
0a024b29b16d more tests and tweaks
Tero Marttila <terom@fixme.fi>
parents: 16
diff changeset
    36
    } },
0a024b29b16d more tests and tweaks
Tero Marttila <terom@fixme.fi>
parents: 16
diff changeset
    37
0a024b29b16d more tests and tweaks
Tero Marttila <terom@fixme.fi>
parents: 16
diff changeset
    38
    {   "user@:service/",   {
0a024b29b16d more tests and tweaks
Tero Marttila <terom@fixme.fi>
parents: 16
diff changeset
    39
        NULL, "user", NULL, NULL, "service", NULL
0a024b29b16d more tests and tweaks
Tero Marttila <terom@fixme.fi>
parents: 16
diff changeset
    40
    } },
18
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    41
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    42
    {   "unix:////tmp/foo.sock",    {
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    43
        &schema_unix, NULL, NULL, NULL, NULL, "/tmp/foo.sock"
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    44
    } },
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    45
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    46
    {   "unix:///tmp/foo.sock", {
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    47
        &schema_unix, NULL, NULL, NULL, NULL, "tmp/foo.sock"
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    48
    } },
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    49
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    50
    {   "/tmp/foo.sock",    {
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    51
        NULL, NULL, NULL, NULL, NULL, "tmp/foo.sock"
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    52
    } },
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    53
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    54
    {   "?key0=val0",   {
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    55
        NULL, NULL, NULL, NULL, NULL, NULL, &opts_single
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    56
    } },
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    57
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    58
    {   "http://foo.com/index.php?key0=val0&key1=val1",  {
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    59
        &basic_http, NULL, NULL, "foo.com", NULL, "index.php", &opts_multi
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    60
    } },
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    61
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    62
    {   "example.org:81/?keyN", {
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    63
        NULL, NULL, NULL, "example.org", "81", NULL, &opts_nullval
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    64
    } },
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    65
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
    {   NULL,               {   } },
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
};
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
int cmp_url_str (const char *field, const char *test, const char *real) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
    if (!test) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
        if (real)
16
74fb62022fb3 starting to work
Tero Marttila <terom@fixme.fi>
parents: 15
diff changeset
    72
            FAIL("%s shouldn't be present", field);
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
    } else if (!real) {
16
74fb62022fb3 starting to work
Tero Marttila <terom@fixme.fi>
parents: 15
diff changeset
    75
        FAIL("%s is missing", field);
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
    } else {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
        if (strcmp(test, real) != 0)
16
74fb62022fb3 starting to work
Tero Marttila <terom@fixme.fi>
parents: 15
diff changeset
    79
            FAIL("%s differs: %s -> %s", field, test, real);
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
    }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
    // ok
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
    return 0;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
}
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
int cmp_url (const struct url *test, const struct url *real) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
    int i;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
    // test schema
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
    if (!test->schema) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
        if (real->schema)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
            FAIL("test has no schema, but real does");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
    } else if (!real->schema) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
        FAIL("test has a schema, but real doesn't");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
    } else {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
        if (test->schema->count != test->schema->count)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    99
            FAIL("inconsistent scheme count");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
        
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
        for (i = 0; i < test->schema->count; i++) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
            if (strcmp(test->schema->list[i], real->schema->list[i]) != 0)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   103
                FAIL("differing scheme #%d", i);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   104
        }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   105
    }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   106
    
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   107
    // test username
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   108
    if (cmp_url_str("username", test->username, real->username))
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   109
        goto error;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   110
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   111
    // test password
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   112
    if (cmp_url_str("password", test->password, real->password))
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
        goto error;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   114
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   115
    // test hostname
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   116
    if (cmp_url_str("hostname", test->hostname, real->hostname))
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   117
        goto error;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   118
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   119
    // test service
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   120
    if (cmp_url_str("service", test->service, real->service))
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   121
        goto error;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   122
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   123
    // test path
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   124
    if (cmp_url_str("path", test->path, real->path))
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   125
        goto error;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   126
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   127
    // test query
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   128
    if (!test->opts) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   129
        if (real->opts)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   130
            FAIL("test has no opts, but real does");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   131
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   132
    } else if (!real->opts) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   133
        FAIL("test has opts, but real doesn't");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   134
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   135
    } else {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   136
        if (test->opts->count != test->opts->count)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   137
            FAIL("inconsistent opts count");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   138
        
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   139
        for (i = 0; i < test->opts->count; i++) {
18
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
   140
            if (cmp_url_str("opt key", test->opts->list[i].key, real->opts->list[i].key))
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
   141
                FAIL("differing opt key #%d", i);
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   142
            
18
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
   143
            if (cmp_url_str("opt value", test->opts->list[i].value, real->opts->list[i].value))
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
   144
                FAIL("differing opt value #%d", i);
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   145
        }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   146
    }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   147
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   148
    // ok
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   149
    return 0;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   150
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   151
error:
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   152
    return -1;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   153
}
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   154
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   155
void usage (const char *exec_name) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   156
    printf("Usage: %s\n\n\tNo arguments are accepted\n", exec_name);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   157
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   158
    exit(EXIT_FAILURE);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   159
}
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   160
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   161
int main (int argc, char **argv) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   162
    const struct url_test *test;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   163
    struct url url;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   164
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   165
    if (argc > 1)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   166
        usage(argv[0]);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   167
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   168
    // run the tests
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   169
    for (test = url_tests; test->url; test++) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   170
        // first output the URL we are handling...
16
74fb62022fb3 starting to work
Tero Marttila <terom@fixme.fi>
parents: 15
diff changeset
   171
        printf("%-80s - ", test->url);
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   172
        fflush(stdout);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   173
        
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   174
        // parse the URL
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   175
        memset(&url, 0, sizeof(url));
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   176
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   177
        if (url_parse(&url, test->url)) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   178
            printf("FATAL: url_parse failed\n");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   179
            return EXIT_FAILURE;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   180
        }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   181
        
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   182
        // compare it
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   183
        if (cmp_url(&test->expected, &url)) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   184
            printf("\texpected: ");
16
74fb62022fb3 starting to work
Tero Marttila <terom@fixme.fi>
parents: 15
diff changeset
   185
            url_dump(&test->expected, stdout);
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   186
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   187
            printf("\tresult:   ");
16
74fb62022fb3 starting to work
Tero Marttila <terom@fixme.fi>
parents: 15
diff changeset
   188
            url_dump(&url, stdout);
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   189
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   190
        } else {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   191
            printf("OK\n\t");
16
74fb62022fb3 starting to work
Tero Marttila <terom@fixme.fi>
parents: 15
diff changeset
   192
            url_dump(&url, stdout);
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   193
        }
18
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
   194
b12e78767248 url_test is starting to be properly functional
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
   195
        printf("\n");
15
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   196
    }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   197
}
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   198