28 #include "url_parser.c"
29 #include "unit_test.h"
49 struct data *dat =
data;
58 struct data *dat =
data;
63 strncat(dat->
url, protocol, length);
64 strcat(dat->
url,
"://");
70 struct data *dat =
data;
75 strncat(dat->
url, host, length);
81 struct data *dat =
data;
86 strcat(dat->
url,
":");
87 strncat(dat->
url, port, length);
94 struct data *dat =
data;
97 char *expect = dat->
path;
100 for (i = 0; i < dat->
cur_path; i++) {
101 expect = &expect[strlen(expect)+1];
105 char *got = malloc((length+1)*
sizeof(
char));
106 strncpy(got, seg, length);
112 strcat(dat->
url,
"/");
113 strncat(dat->
url, seg, length);
122 struct data *dat =
data;
128 char *expect = malloc(
sizeof(
char));
130 char *ptr = dat->
path;
132 for (i = 0; i < dat->
cur_path; i++) {
133 len += strlen(ptr) + 1;
134 expect = realloc(expect, len*
sizeof(
char));
137 ptr = &ptr[strlen(ptr)+1];
141 char *got = malloc((length+1)*
sizeof(
char));
143 strncpy(got, seg, length);
156 const char*
key,
size_t key_length,
157 const char*
value,
size_t value_length)
161 struct data *dat =
data;
162 char *expect_key = dat->
key;
163 char *expect_val = dat->
value;
167 expect_key = &expect_key[strlen(expect_key)+1];
168 expect_val = &expect_val[strlen(expect_val)+1];
171 ASSERT_EQUAL(strncmp(value, expect_val, value_length), 0);
175 else strcat(dat->
url,
"&");
176 strncat(dat->
url, key, key_length);
177 strcat(dat->
url,
"=");
178 strncat(dat->
url, value, value_length);
181 TEST_START(
"url_parser.c")
207 data.
url = malloc((strlen(
url)+1)*sizeof(
char));
224 TEST(non chunked url parsing with no port)
230 data.
host = "localhost";
232 data.
path = "device\0tv";
234 data.
key = "
id\0brand";
235 data.cur_key_value = 0;
236 data.
value = "1\0Apple";
239 data.url = malloc((strlen(url)+1)*sizeof(
char));
256 TEST(chunked url parsing)
260 char*
url2 = "tv?
id=1&brand=Apple";
264 data.
host = "localhost";
266 data.
path = "device\0tv";
268 data.
key = "
id\0brand";
269 data.cur_key_value = 0;
270 data.
value = "1\0Apple";
273 data.url = malloc((strlen(
url1)+strlen(
url2)+1)*sizeof(
char));
297 data.
host = "localhost";
302 data.cur_key_value = 0;
306 data.url = malloc((strlen(url)+1)*sizeof(
char));
329 data.
host = "localhost";
334 data.cur_key_value = 0;
338 data.url = malloc((strlen(url)+1)*sizeof(
char));
357 char *url = "/devices/";
363 data.path = "devices\0";
366 data.cur_key_value = 0;
370 data.url = malloc((strlen(url)+1)*sizeof(
char));
398 data.cur_key_value = 0;
402 data.url = malloc((1+1)*sizeof(
char));
ASSERT_STR_EQUAL(data.url, url)
#define UP_SETTINGS_DEFAULT
settings on_path_complete
ASSERT_EQUAL(data.count, 2)
Settings struct for the URL Parser.
hpd_error_t up_create(struct up **instance, struct up_settings *settings, const hpd_module_t *context, void *data)
Create URL parser instance.
struct up_settings settings
up_add_chunk(instance, url, strlen(url))