1*a161184eSdtucker /* $OpenBSD: test_hpdelim.c,v 1.2 2022/02/06 22:58:33 dtucker Exp $ */
269ebe3e4Sdtucker /*
369ebe3e4Sdtucker * Regress test for misc hpdelim() and co
469ebe3e4Sdtucker *
569ebe3e4Sdtucker * Placed in the public domain.
669ebe3e4Sdtucker */
769ebe3e4Sdtucker
869ebe3e4Sdtucker #include <sys/types.h>
969ebe3e4Sdtucker #include <stdio.h>
1069ebe3e4Sdtucker #include <stdint.h>
1169ebe3e4Sdtucker #include <stdlib.h>
1269ebe3e4Sdtucker #include <string.h>
1369ebe3e4Sdtucker
1469ebe3e4Sdtucker #include "test_helper.h"
1569ebe3e4Sdtucker
1669ebe3e4Sdtucker #include "log.h"
1769ebe3e4Sdtucker #include "misc.h"
1869ebe3e4Sdtucker #include "xmalloc.h"
1969ebe3e4Sdtucker
2069ebe3e4Sdtucker void test_hpdelim(void);
2169ebe3e4Sdtucker
2269ebe3e4Sdtucker void
test_hpdelim(void)2369ebe3e4Sdtucker test_hpdelim(void)
2469ebe3e4Sdtucker {
2569ebe3e4Sdtucker char *orig, *str, *cp, *port;
2669ebe3e4Sdtucker
2769ebe3e4Sdtucker #define START_STRING(x) orig = str = xstrdup(x)
2869ebe3e4Sdtucker #define DONE_STRING() free(orig)
2969ebe3e4Sdtucker
3069ebe3e4Sdtucker TEST_START("hpdelim host only");
3169ebe3e4Sdtucker START_STRING("host");
3269ebe3e4Sdtucker cp = hpdelim(&str);
3369ebe3e4Sdtucker ASSERT_STRING_EQ(cp, "host");
3469ebe3e4Sdtucker ASSERT_PTR_EQ(str, NULL);
3569ebe3e4Sdtucker DONE_STRING();
3669ebe3e4Sdtucker TEST_DONE();
3769ebe3e4Sdtucker
38*a161184eSdtucker TEST_START("hpdelim :port");
39*a161184eSdtucker START_STRING(":1234");
40*a161184eSdtucker cp = hpdelim(&str);
41*a161184eSdtucker ASSERT_STRING_EQ(cp, "");
42*a161184eSdtucker ASSERT_PTR_NE(str, NULL);
43*a161184eSdtucker port = hpdelim(&str);
44*a161184eSdtucker ASSERT_STRING_EQ(port, "1234");
45*a161184eSdtucker ASSERT_PTR_EQ(str, NULL);
46*a161184eSdtucker DONE_STRING();
47*a161184eSdtucker TEST_DONE();
48*a161184eSdtucker
4969ebe3e4Sdtucker TEST_START("hpdelim host:port");
5069ebe3e4Sdtucker START_STRING("host:1234");
5169ebe3e4Sdtucker cp = hpdelim(&str);
5269ebe3e4Sdtucker ASSERT_STRING_EQ(cp, "host");
5369ebe3e4Sdtucker ASSERT_PTR_NE(str, NULL);
5469ebe3e4Sdtucker port = hpdelim(&str);
5569ebe3e4Sdtucker ASSERT_STRING_EQ(port, "1234");
5669ebe3e4Sdtucker ASSERT_PTR_EQ(str, NULL);
5769ebe3e4Sdtucker DONE_STRING();
5869ebe3e4Sdtucker TEST_DONE();
5969ebe3e4Sdtucker
6069ebe3e4Sdtucker TEST_START("hpdelim [host]:port");
6169ebe3e4Sdtucker START_STRING("[::1]:1234");
6269ebe3e4Sdtucker cp = hpdelim(&str);
6369ebe3e4Sdtucker ASSERT_STRING_EQ(cp, "[::1]");
6469ebe3e4Sdtucker ASSERT_PTR_NE(str, NULL);
6569ebe3e4Sdtucker port = hpdelim(&str);
6669ebe3e4Sdtucker ASSERT_STRING_EQ(port, "1234");
6769ebe3e4Sdtucker ASSERT_PTR_EQ(str, NULL);
6869ebe3e4Sdtucker DONE_STRING();
6969ebe3e4Sdtucker TEST_DONE();
7069ebe3e4Sdtucker
7169ebe3e4Sdtucker TEST_START("hpdelim missing ] error");
7269ebe3e4Sdtucker START_STRING("[::1:1234");
7369ebe3e4Sdtucker cp = hpdelim(&str);
7469ebe3e4Sdtucker ASSERT_PTR_EQ(cp, NULL);
7569ebe3e4Sdtucker DONE_STRING();
7669ebe3e4Sdtucker TEST_DONE();
7769ebe3e4Sdtucker
7869ebe3e4Sdtucker }
79