src/url_test.c
author Tero Marttila <terom@fixme.fi>
Wed, 08 Oct 2008 22:05:13 +0300
changeset 15 a8d183e79ed9
child 16 74fb62022fb3
permissions -rw-r--r--
look ma, it compiles\!
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
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
#define FAIL(...) do { printf("FAIL: "); printf(__VA_ARGS__); return -1; } while (0)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
struct url_test {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
    const char *url;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
    const struct url expected;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
} url_tests[] = {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
    {   "localhost:http",   {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
        NULL, NULL, NULL, "localhost", "http", NULL, NULL
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
    } },
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
/*    {   "http://example.com/path",  {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
        { 1, { "http" } }, NULL, NULL, "example.com", NULL, "path", NULL 
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
    
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
    {   NULL,               {   } },
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
};
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
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
    27
    if (!test) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
        if (real)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
            FAIL("%s: shouldn't be present", field);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
    } else if (!real) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
        FAIL("%s: missing", field);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
    } else {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
        if (strcmp(test, real) != 0)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
            FAIL("%s: differs: %s -> %s", field, test, real);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
    }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
    // ok
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
    return 0;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
}
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
int cmp_url (const struct url *test, const struct url *real) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
    int i;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
    // test schema
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
    if (!test->schema) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
        if (real->schema)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
            FAIL("test has no schema, but real does");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
    } else if (!real->schema) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
        FAIL("test has a schema, but real doesn't");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
    } else {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
        if (test->schema->count != test->schema->count)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
            FAIL("inconsistent scheme count");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
        
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
        for (i = 0; i < test->schema->count; i++) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
            if (strcmp(test->schema->list[i], real->schema->list[i]) != 0)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
                FAIL("differing scheme #%d", i);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
        }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
    }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
    
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
    // test username
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
    if (cmp_url_str("username", test->username, real->username))
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
        goto error;
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
    // test password
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
    if (cmp_url_str("password", test->password, real->password))
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
        goto error;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
    // test hostname
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
    if (cmp_url_str("hostname", test->hostname, real->hostname))
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
        goto error;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
    // test service
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
    if (cmp_url_str("service", test->service, real->service))
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
        goto error;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
    // test path
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
    if (cmp_url_str("path", test->path, real->path))
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
        goto error;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
    // test query
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
    if (!test->opts) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
        if (real->opts)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
            FAIL("test has no opts, but real does");
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
    } else if (!real->opts) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
        FAIL("test has opts, but real doesn't");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
    } else {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
        if (test->opts->count != test->opts->count)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
            FAIL("inconsistent opts count");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
        
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
        for (i = 0; i < test->opts->count; i++) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
            if (strcmp(test->opts->list[i]->key, real->opts->list[i]->key) != 0)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
                FAIL("differing scheme key #%d", i);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    99
            
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
            if (strcmp(test->opts->list[i]->value, real->opts->list[i]->value) != 0)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
                FAIL("differing scheme value #%d", i);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
        }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   103
    }
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
    // ok
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   106
    return 0;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   107
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   108
error:
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   109
    return -1;
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
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   112
void print_url_part (const char *field, const char *val) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
    if (val) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   114
        printf("%s=%s ", field, val);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   115
    }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   116
}
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   117
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   118
void print_url (const struct url *url) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   119
    int i;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   120
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   121
    if (url->schema) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   122
        printf("schema=");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   123
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   124
        for (i = 0; i < url->schema->count; i++) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   125
            if (i > 0)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   126
                printf("+");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   127
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   128
            printf("%s", url->schema->list[i]);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   129
        }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   130
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   131
        printf(" ");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   132
    }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   133
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   134
    print_url_part("username", url->username);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   135
    print_url_part("password", url->password);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   136
    print_url_part("hostname", url->hostname);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   137
    print_url_part("service", url->service);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   138
    print_url_part("path", url->path);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   139
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   140
    if (url->opts) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   141
        printf("opts: ");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   142
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   143
        for (i = 0; i < url->opts->count; i++) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   144
            printf("%s=%s ", url->opts->list[i]->key, url->opts->list[i]->value);
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
    printf("\n");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   149
}
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
void usage (const char *exec_name) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   152
    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
   153
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   154
    exit(EXIT_FAILURE);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   155
}
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   156
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   157
int main (int argc, char **argv) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   158
    const struct url_test *test;
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   159
    struct url url;
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
    if (argc > 1)
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   162
        usage(argv[0]);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   163
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   164
    // run the tests
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   165
    for (test = url_tests; test->url; test++) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   166
        // first output the URL we are handling...
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   167
        printf("%s... ", test->url);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   168
        fflush(stdout);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   169
        
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   170
        // parse the URL
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   171
        memset(&url, 0, sizeof(url));
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   172
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   173
        if (url_parse(&url, test->url)) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   174
            printf("FATAL: url_parse failed\n");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   175
            return EXIT_FAILURE;
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
        
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   178
        // compare it
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   179
        if (cmp_url(&test->expected, &url)) {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   180
            printf("\texpected: ");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   181
            print_url(&test->expected);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   182
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   183
            printf("\tresult:   ");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   184
            print_url(&url);
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   185
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   186
        } else {
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   187
            printf("OK\n\t");
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   188
            print_url(&url);
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
    }
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   191
}
a8d183e79ed9 look ma, it compiles\!
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   192