2 * test program for uuid library
4 * written by nathan wagner and placed in the public domain
14 static int strbytes(char *s, unsigned char *d) {
19 if (*s == 0) return 0;
22 if (*s == '-' || *s == ':') s++;
24 if (sscanf(s, "%02x", &byte) != 1) {
33 void ufmt(pd_uuid_t *uuid, char *s) {
36 s += sprintf(s, "%02x", uuid->data[i]);
40 s += sprintf(s, "%02x", uuid->data[i]);
44 s += sprintf(s, "%02x", uuid->data[i]);
48 s += sprintf(s, "%02x", uuid->data[i]);
52 s += sprintf(s, "%02x", uuid->data[i]);
56 int str_ok(pd_uuid_t *uuid, char *s, char *name) {
59 is_string(s, fmt, name);
63 int main(int ac, char *av[]) {
65 struct pd_uuid_state s;
68 unsigned char hash[40];
70 char *url = "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
71 char *dns = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
72 char *oid = "6ba7b812-9dad-11d1-80b4-00c04fd430c8";
73 char *x500 = "6ba7b814-9dad-11d1-80b4-00c04fd430c8";
83 pd_uuid_init_state(0);
84 pd_uuid_make_v1mc(0, &uuid);
86 pd_uuid_init_state(&s);
87 pd_uuid_make_v1mc(&s, &uuid);
90 pd_uuid_init_state(&s);
91 pd_uuid_make_v1(0, &uuid);
94 pd_uuid_make_v1(&s, &uuid);
96 pd_uuid_init_state(&s);
97 pd_uuid_make_v4(0, &uuid);
100 pd_uuid_make_v4(&s, &uuid);
102 pd_uuid_set_string(&uuid, "6ba7b810-9dad-11d1-80b4-00c04fd430c8");
104 is_string("6ba7b810-9dad-11d1-80b4-00c04fd430c8", fmt, "t/f string");
106 ufmt(&pd_uuid_ns_x500, fmt);
107 is_string(x500, fmt, "pd_uuid_ns_x500");
109 ufmt(&pd_uuid_ns_oid, fmt);
110 is_string(oid, fmt, "pd_uuid_ns_oid");
112 ufmt(&pd_uuid_ns_url, fmt);
113 is_string(url, fmt, "pd_uuid_ns_url");
115 ufmt(&pd_uuid_ns_dns, fmt);
116 is_string(dns, fmt, "pd_uuid_ns_dns");
118 pd_uuid_make_v3(0, &uuid, &pd_uuid_ns_dns, "granicus.if.org", strlen("granicus.if.org"));
120 is_string("e6e8e9cb-78bd-33b3-b8ae-d442456e8169", fmt, "granicus.if.org (v3)");
121 pd_uuid_init_state(&s);
122 pd_uuid_make_v3(&s, &uuid, &pd_uuid_ns_dns, "granicus.if.org", strlen("granicus.if.org"));
124 is_string("e6e8e9cb-78bd-33b3-b8ae-d442456e8169", fmt, "granicus.if.org (v3)");
126 pd_uuid_make_v5(0, &uuid, &pd_uuid_ns_dns, "granicus.if.org", strlen("granicus.if.org"));
128 is_string("fc1d1ec9-f731-5bfb-854e-e38a4dbd9dd3", fmt, "granicus.if.org (v5)");
129 pd_uuid_init_state(&s);
130 pd_uuid_make_v5(&s, &uuid, &pd_uuid_ns_dns, "granicus.if.org", strlen("granicus.if.org"));
132 is_string("fc1d1ec9-f731-5bfb-854e-e38a4dbd9dd3", fmt, "granicus.if.org (v5)");
134 pd_uuid_copy(&uuid, ©);
136 is_string("fc1d1ec9-f731-5bfb-854e-e38a4dbd9dd3", fmt, "granicus.if.org (v5)");
138 ok(!pd_uuid_cmp(&uuid, ©), "uuid cmp copy");
140 strbytes("622e4fa57481e7ed5c9119e1ba69bf88255ca4a1", hash);
141 pd_set_uuid_hash(&uuid, hash, 5);
142 str_ok(&uuid, "622e4fa5-7481-57ed-9c91-19e1ba69bf88", "set from hash");
144 pd_uuid_make_v3(0, &uuid, &pd_uuid_ns_dns, "www.widgets.com", strlen("www.widgets.com"));
145 str_ok(&uuid, "3d813cbb-47fb-32ba-91df-831e1593ac29", "md5 dns");
146 pd_uuid_make_v5(0, &uuid, &pd_uuid_ns_dns, "www.widgets.com", strlen("www.widgets.com"));
147 str_ok(&uuid, "21f7f8de-8051-5b89-8680-0195ef798b6a", "md5 dns");
149 pd_uuid_rng_get_bytes(hash, 5);
151 /* try to get two in very short sequence */
152 pd_uuid_init_state(&s);
153 pd_uuid_make_v1(&s, &uuid);
154 pd_uuid_make_v1(&s, ©);
155 ok(pd_uuid_cmp(&uuid, ©), "uuid v1 different");
157 diag("v1a: %s", fmt);
159 diag("v1b: %s", fmt);