GRU - Generic Reusable Utilities
network/gru_uri_format_test.c

URI formatting example

#include <stdbool.h>
#include <stdlib.h>
bool test1() {
gru_uri_t uri = {0};
uri.scheme = "test";
uri.host = "localhost";
uri.port = 90;
uri.path = "/root/path";
char *uri_str = gru_uri_simple_format(&uri, &status);
if (!uri_str) {
fprintf(stderr, "%s", status.message);
return false;
}
if (strcmp(uri_str, "test://localhost:90/root/path") != 0) {
fprintf(stderr, "Test 1 failed due to invalid URI: %s", uri_str);
free(uri_str);
return false;
}
free(uri_str);
return true;
}
bool test2() {
gru_uri_t uri = {0};
uri.scheme = "test";
uri.host = "localhost";
uri.port = 0;
uri.path = "/root/path";
char *uri_str = gru_uri_simple_format(&uri, &status);
if (!uri_str) {
fprintf(stderr, "%s", status.message);
return false;
}
if (strcmp(uri_str, "test://localhost/root/path") != 0) {
fprintf(stderr, "Test 2 failed due to invalid URI: %s", uri_str);
free(uri_str);
return false;
}
free(uri_str);
return true;
}
bool test3() {
gru_uri_t uri = {0};
uri.scheme = "test";
uri.host = "localhost";
uri.port = 0;
uri.path = NULL;
char *uri_str = gru_uri_simple_format(&uri, &status);
if (!uri_str) {
fprintf(stderr, "%s", status.message);
return false;
}
if (strcmp(uri_str, "test://localhost") != 0) {
fprintf(stderr, "Test 3 failed due to invalid URI: %s", uri_str);
free(uri_str);
return false;
}
free(uri_str);
return true;
}
bool test4() {
gru_uri_t uri = {0};
uri.scheme = "test";
uri.host = "localhost";
uri.port = 99;
uri.path = NULL;
char *uri_str = gru_uri_simple_format(&uri, &status);
if (!uri_str) {
fprintf(stderr, "%s", status.message);
return false;
}
if (strcmp(uri_str, "test://localhost:99") != 0) {
fprintf(stderr, "Test 4 failed due to invalid URI: %s", uri_str);
free(uri_str);
return false;
}
free(uri_str);
return true;
}
bool test5() {
gru_uri_t uri = {0};
uri.scheme = "test";
uri.host = "2620:52:0:2880:223:7dff:fe4a:743d";
uri.port = 99;
uri.path = NULL;
char *uri_str = gru_uri_simple_format(&uri, &status);
if (!uri_str) {
fprintf(stderr, "%s", status.message);
return false;
}
if (strcmp(uri_str, "test://[2620:52:0:2880:223:7dff:fe4a:743d]:99") != 0) {
fprintf(stderr, "Test 5 failed due to invalid URI: %s", uri_str);
free(uri_str);
return false;
}
free(uri_str);
return true;
}
int main(int argc, char **argv) {
// TODO: Not my best work. To be refactored ...
if (test1()) {
if (test2()) {
if (test3()) {
if (test4()) {
if (test5()) {
return EXIT_SUCCESS;
}
}
}
}
}
return EXIT_FAILURE;
}
int main(int argc, char **argv)
Definition: gru_list_test.c:198
gru_export gru_status_t gru_status_new()
Copyright 2016 Otavio Rodolfo Piske.
Definition: gru_status.c:18
char * gru_uri_simple_format(const gru_uri_t *uri, gru_status_t *status)
Definition: gru_uri.c:225
bool test1()
Copyright 2017 Otavio Rodolfo Piske.
Definition: gru_uri_format_test.c:22
bool test2()
Definition: gru_uri_format_test.c:48
bool test4()
Definition: gru_uri_format_test.c:100
bool test3()
Definition: gru_uri_format_test.c:74
bool test5()
Definition: gru_uri_format_test.c:126
Status type.
Definition: gru_status.h:47
char * message
Definition: gru_status.h:48
Definition: gru_uri.h:60
char * host
Definition: gru_uri.h:62
uint16_t port
Definition: gru_uri.h:64
char * path
Definition: gru_uri.h:63
char * scheme
Definition: gru_uri.h:61