test_end();
}
+static void test_message_delim(void) {
+ test_begin("message address detail parsing");
+
+ struct {
+ const char *delimiters;
+ const char *address;
+ const char *username;
+ const char *detail;
+ } tests[] = {
+ { "", "", "", "" },
+ { "", "test", "test", "" },
+ { "", "test+address", "test+address", "" },
+ { "", "test:address", "test:address", "" },
+ { "", "test-address:another+delim", "test-address:another+delim", "" },
+ { "", "test@domain", "test@domain", "" },
+ { "", "test+address@domain", "test+address@domain", "" },
+ { "", "test:address@domain", "test:address@domain", "" },
+ { "", "test-address:another+delim@domain", "test-address:another+delim@domain", "" },
+
+ { "+-:", "", "", "" },
+ { "+-:", "test", "test", "" },
+ { "+-:", "test+address", "test+address", "" },
+ { "+-:", "test+-:address", "test", "address" },
+ { "+-:", "test+-:address@domain", "test@domain", "address" },
+ };
+
+ for(size_t i = 0; i < N_ELEMENTS(tests); i++) {
+ const char *username, *detail;
+
+ message_detail_address_parse(tests[i].delimiters, tests[i].address,
+ &username, &detail);
+ test_assert_idx(strcmp(username, tests[i].username) == 0, i);
+ test_assert_idx(strcmp(detail, tests[i].detail) == 0, i);
+ }
+
+ test_end();
+}
+
int main(void)
{
static void (*test_functions[])(void) = {
test_message_address,
+ test_message_delim,
NULL
};
return test_run(test_functions);