]> pd.if.org Git - uuid/blobdiff - t/uuidgen.c
Removed unused node variable.
[uuid] / t / uuidgen.c
index 6fb3c56a40e44967a56f1c40643dc7ea81d87d87..e17b7e927621dbf67b1ba2a9140c27e173173340 100644 (file)
 #include "pduuid.h"
 #include "ctap.h"
 
+static int strbytes(char *s, unsigned char *d) {
+        unsigned int byte;
+        int i = 0;
+
+       if (!s) return 0;
+        if (*s == 0) return 0;
+
+       while (*s) {
+                if (*s == '-' || *s == ':') s++;
+
+                if (sscanf(s, "%02x", &byte) != 1) {
+                        return 0;
+                }
+                s += 2;
+                d[i++] = byte & 0xff;
+        }
+        return i;
+}
+
 void ufmt(pd_uuid_t *uuid, char *s) {
        int i;
        for (i=0;i<4;i++) {
@@ -42,8 +61,13 @@ int str_ok(pd_uuid_t *uuid, char *s, char *name) {
 }
 
 int main(int ac, char *av[]) {
-       pd_uuid_t uuid;
+       pd_uuid_t uuid, copy;
+       struct pd_uuid_state s;
+       pd_uuid_t idset[10];
+       int i;
+
        char fmt[37];
+       unsigned char hash[40];
 
        char *url = "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
        char *dns = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
@@ -56,39 +80,94 @@ int main(int ac, char *av[]) {
        srandom(time(0));
 #endif
 
-       plan(7);
+       plan(24);
+
+       pd_uuid_init_state(0);
+       pd_uuid_make_v1mc(0, &uuid);
+
+       pd_uuid_init_state(&s);
+       pd_uuid_make_v1mc(&s, &uuid);
 
+
+       pd_uuid_init_state(&s);
        pd_uuid_make_v1(0, &uuid);
        ufmt(&uuid, fmt);
        diag("v1: %s", fmt);
+       pd_uuid_make_v1(&s, &uuid);
 
+       pd_uuid_init_state(&s);
        pd_uuid_make_v4(0, &uuid);
        ufmt(&uuid, fmt);
        diag("v4: %s", fmt);
+       pd_uuid_make_v4(&s, &uuid);
 
        pd_uuid_set_string(&uuid, "6ba7b810-9dad-11d1-80b4-00c04fd430c8");
        ufmt(&uuid, fmt);
        is_string("6ba7b810-9dad-11d1-80b4-00c04fd430c8", fmt, "t/f string");
 
        ufmt(&pd_uuid_ns_x500, fmt);
-       is_string(x500, fmt, "pd_uuid_ns_x500()");
+       is_string(x500, fmt, "pd_uuid_ns_x500");
 
        ufmt(&pd_uuid_ns_oid, fmt);
-       is_string(oid, fmt, "pd_uuid_ns_oid()");
+       is_string(oid, fmt, "pd_uuid_ns_oid");
 
        ufmt(&pd_uuid_ns_url, fmt);
-       is_string(url, fmt, "pd_uuid_ns_url()");
+       is_string(url, fmt, "pd_uuid_ns_url");
 
        ufmt(&pd_uuid_ns_dns, fmt);
-       is_string(dns, fmt, "pd_uuid_ns_dns()");
+       is_string(dns, fmt, "pd_uuid_ns_dns");
 
        pd_uuid_make_v3(0, &uuid, &pd_uuid_ns_dns, "granicus.if.org", strlen("granicus.if.org"));
        ufmt(&uuid, fmt);
        is_string("e6e8e9cb-78bd-33b3-b8ae-d442456e8169", fmt, "granicus.if.org (v3)");
+       pd_uuid_init_state(&s);
+       pd_uuid_make_v3(&s, &uuid, &pd_uuid_ns_dns, "granicus.if.org", strlen("granicus.if.org"));
+       ufmt(&uuid, fmt);
+       is_string("e6e8e9cb-78bd-33b3-b8ae-d442456e8169", fmt, "granicus.if.org (v3)");
 
        pd_uuid_make_v5(0, &uuid, &pd_uuid_ns_dns, "granicus.if.org", strlen("granicus.if.org"));
        ufmt(&uuid, fmt);
        is_string("fc1d1ec9-f731-5bfb-854e-e38a4dbd9dd3", fmt, "granicus.if.org (v5)");
+       pd_uuid_init_state(&s);
+       pd_uuid_make_v5(&s, &uuid, &pd_uuid_ns_dns, "granicus.if.org", strlen("granicus.if.org"));
+       ufmt(&uuid, fmt);
+       is_string("fc1d1ec9-f731-5bfb-854e-e38a4dbd9dd3", fmt, "granicus.if.org (v5)");
+
+       pd_uuid_copy(&uuid, &copy);
+       ufmt(&copy, fmt);
+       is_string("fc1d1ec9-f731-5bfb-854e-e38a4dbd9dd3", fmt, "granicus.if.org (v5)");
+
+       ok(!pd_uuid_cmp(&uuid, &copy), "uuid cmp copy");
+
+       strbytes("622e4fa57481e7ed5c9119e1ba69bf88255ca4a1", hash);
+       pd_set_uuid_hash(&uuid, hash, 5);
+       str_ok(&uuid, "622e4fa5-7481-57ed-9c91-19e1ba69bf88", "set from hash");
+
+       pd_uuid_make_v3(0, &uuid, &pd_uuid_ns_dns, "www.widgets.com", strlen("www.widgets.com"));
+       str_ok(&uuid, "3d813cbb-47fb-32ba-91df-831e1593ac29", "md5 dns");
+       pd_uuid_make_v5(0, &uuid, &pd_uuid_ns_dns, "www.widgets.com", strlen("www.widgets.com"));
+       str_ok(&uuid, "21f7f8de-8051-5b89-8680-0195ef798b6a", "md5 dns");
+
+       pd_uuid_rng_get_bytes(hash, 5);
+
+       /* try to get two in very short sequence */
+       pd_uuid_init_state(&s);
+       pd_uuid_make_v1(&s, &uuid);
+       pd_uuid_make_v1(&s, &copy);
+       ok(pd_uuid_cmp(&uuid, &copy), "uuid v1 different");
+       ufmt(&uuid, fmt);
+       diag("v1a: %s", fmt);
+       ufmt(&copy, fmt);
+       diag("v1b: %s", fmt);
+
+       pd_uuid_init(&s, 0x1);
+       for (i=0;i<10;i++) {
+               pd_uuid_make_v1(&s, &idset[i]);
+       }
+       for (i=0;i<9;i++) {
+               ok(pd_uuid_cmp(&idset[i], &idset[i+1]), "id set %d != %d", i, i+1); 
+               pd_uuid_make_v1(&s, &idset[i]);
+       }
 
        return 0;
 }