annotate src/lib/test-guid.c @ 22955:812e5c961328

fts: Indexing virtual mailbox didn't always index the last mails
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 03 May 2018 18:33:00 +0300
parents cb108f786fb4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22713
cb108f786fb4 Updated copyright notices to include the year 2018.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 22399
diff changeset
1 /* Copyright (c) 2014-2018 Dovecot authors, see the included COPYING file */
17979
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "test-lib.h"
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 #include "guid.h"
22135
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
5 #include "ioloop.h"
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
6
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
7 /*
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
8 * We want earlier timestamps to compare as < with later timestamps, but
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
9 * guid_128_cmp() doesn't do that because the timestamps in the guid are
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
10 * stored in little-endian byte order.
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
11 */
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
12 static int reverse_guid_128_cmp(const guid_128_t a, const guid_128_t b)
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
13 {
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
14 int i;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
15
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
16 for (i = GUID_128_SIZE - 1; i >= 0; i--)
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
17 if (a[i] != b[i])
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
18 return (int)a[i] - (int)b[i];
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
19
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
20 return 0;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
21 }
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
22
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
23 static bool guid_128_has_sane_nsecs(const guid_128_t g)
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
24 {
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
25 unsigned long nsecs;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
26
22399
0c0a372ccdc1 global: use new byte ordering API
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 22135
diff changeset
27 nsecs = le32_to_cpu_unaligned(g);
22135
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
28
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
29 return nsecs < 1000000000UL;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
30 }
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
31
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
32 static inline void set_fake_time(time_t sec, long usec)
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
33 {
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
34 ioloop_timeval.tv_sec = sec;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
35 ioloop_timeval.tv_usec = usec;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
36 }
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
37
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
38 /*
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
39 * We muck with the ioloop_timeval in various ways and make sure that the
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
40 * guids that get generated make sense. To make sure that the guid
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
41 * generation code takes up our faked timestamp, we use a far-away time (Jan
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
42 * 1 2038) as the base time. We don't want to go beyond 32-bit signed
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
43 * time_t for the base time to avoid issues on systems with 32-bit signed
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
44 * time_t.
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
45 *
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
46 * While guids really only need to be unique, here we actually enforce that
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
47 * they are increasing (as defined by reverse_guid_128_cmp()). If guids are
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
48 * always increasing, they will always be unique.
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
49 */
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
50 static void test_ioloop_guid_128_generate(void)
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
51 {
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
52 const time_t basetime = 2145909600; /* Jan 1 2038 */
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
53 struct timeval saved_ioloop_timeval;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
54 guid_128_t guids[2];
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
55 int i;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
56
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
57 /* save the ioloop_timeval before we start messing with it */
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
58 saved_ioloop_timeval = ioloop_timeval;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
59
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
60 /*
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
61 * Generating multiple guids within a microsecond should keep
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
62 * incrementing them.
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
63 */
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
64 test_begin("guid_128_generate() increasing guid within a usec");
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
65 set_fake_time(basetime, 0);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
66 guid_128_generate(guids[1]);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
67 for (i = 0; i < 10; i++) {
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
68 const int this = i % 2;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
69 const int prev = 1 - this;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
70
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
71 guid_128_generate(guids[this]);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
72
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
73 test_assert(reverse_guid_128_cmp(guids[prev], guids[this]) < 0);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
74 test_assert(guid_128_has_sane_nsecs(guids[this]));
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
75 }
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
76 test_end();
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
77
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
78 /*
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
79 * If the current time changes by +1 usec, so should the guids.
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
80 */
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
81 test_begin("guid_128_generate() increasing guid with usec fast-forward");
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
82 for (i = 0; i < 10; i++) {
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
83 const int this = i % 2;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
84 const int prev = 1 - this;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
85
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
86 set_fake_time(basetime, 1 + i);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
87 guid_128_generate(guids[this]);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
88
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
89 test_assert(reverse_guid_128_cmp(guids[prev], guids[this]) < 0);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
90 test_assert(guid_128_has_sane_nsecs(guids[this]));
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
91 }
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
92 test_end();
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
93
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
94 /*
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
95 * If the current time changes by +1 sec, so should the guids.
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
96 */
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
97 test_begin("guid_128_generate() increasing guid with sec fast-forward");
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
98 for (i = 0; i < 10; i++) {
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
99 const int this = i % 2;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
100 const int prev = 1 - this;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
101
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
102 set_fake_time(basetime + 1 + i, 0);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
103 guid_128_generate(guids[this]);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
104
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
105 test_assert(reverse_guid_128_cmp(guids[prev], guids[this]) < 0);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
106 test_assert(guid_128_has_sane_nsecs(guids[this]));
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
107 }
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
108 test_end();
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
109
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
110 /*
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
111 * Requesting enough guids should increment the seconds but always
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
112 * produce valid nsecs.
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
113 *
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
114 * (Set a time that leaves us 1000 guids before seconds overflow and
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
115 * then ask for 2500 guids.)
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
116 */
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
117 test_begin("guid_128_generate() proper guid nsec overflow");
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
118 set_fake_time(basetime + 11, 999999L);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
119 for (i = 0; i < 2500; i++) {
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
120 const int this = i % 2;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
121 const int prev = 1 - this;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
122
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
123 guid_128_generate(guids[this]);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
124 test_assert(reverse_guid_128_cmp(guids[prev], guids[this]) < 0);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
125 test_assert(guid_128_has_sane_nsecs(guids[this]));
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
126 }
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
127 test_end();
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
128
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
129 /*
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
130 * When ahead by 1500 guids (see previous test), +1 usec shouldn't
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
131 * have any effect.
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
132 */
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
133 test_begin("guid_128_generate() no effect with increasing time when ahead");
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
134 set_fake_time(basetime + 12, 0);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
135 guid_128_generate(guids[0]);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
136 test_assert(reverse_guid_128_cmp(guids[1], guids[0]) < 0);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
137 test_assert(guid_128_has_sane_nsecs(guids[0]));
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
138 test_end();
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
139
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
140 /* not a test - just set a more convenient time */
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
141 set_fake_time(basetime + 15, 500);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
142 guid_128_generate(guids[1]);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
143 test_assert(reverse_guid_128_cmp(guids[0], guids[1]) < 0);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
144 test_assert(guid_128_has_sane_nsecs(guids[1]));
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
145
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
146 /*
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
147 * Time going backwards by 1 usec should have no effect on guids.
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
148 */
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
149 test_begin("guid_128_generate() usec time-travel still increasing");
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
150 set_fake_time(basetime + 15, 499);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
151 guid_128_generate(guids[0]);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
152 test_assert(reverse_guid_128_cmp(guids[1], guids[0]) < 0);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
153 test_assert(guid_128_has_sane_nsecs(guids[0]));
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
154 test_end();
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
155
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
156 /*
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
157 * Time going backwards by 1 sec should have no effect on guids.
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
158 */
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
159 test_begin("guid_128_generate() sec time-travel still increasing");
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
160 set_fake_time(basetime + 14, 499);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
161 guid_128_generate(guids[1]);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
162 test_assert(reverse_guid_128_cmp(guids[0], guids[1]) < 0);
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
163 test_assert(guid_128_has_sane_nsecs(guids[1]));
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
164 test_end();
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
165
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
166 /* restore the previously saved value just in case */
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
167 ioloop_timeval = saved_ioloop_timeval;
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
168 }
17979
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
169
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
170 void test_guid(void)
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
171 {
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
172 static const guid_128_t test_guid =
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
173 { 0x01, 0x23, 0x45, 0x67, 0x89,
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
174 0xab, 0xcd, 0xef,
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
175 0xAB, 0xCD, 0xEF,
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
176 0x00, 0x00, 0x00, 0x00, 0x00 };
18136
ff30ec13fcb7 lib: guid - centralise a 'reset to the empty value' helper function
Phil Carmody <phil@dovecot.fi>
parents: 17979
diff changeset
177 guid_128_t guid1, guid2, guid3;
17979
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
178 const char *str;
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
179 char guidbuf[GUID_128_SIZE*2 + 2];
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
180 unsigned int i;
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
181
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
182 test_begin("guid_128_generate()");
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
183 guid_128_generate(guid1);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
184 guid_128_generate(guid2);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
185 test_assert(!guid_128_equals(guid1, guid2));
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
186 test_assert(guid_128_cmp(guid1, guid2) != 0);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
187 test_end();
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
188
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
189 test_begin("guid_128_is_empty()");
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
190 test_assert(!guid_128_is_empty(guid1));
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
191 test_assert(!guid_128_is_empty(guid2));
18136
ff30ec13fcb7 lib: guid - centralise a 'reset to the empty value' helper function
Phil Carmody <phil@dovecot.fi>
parents: 17979
diff changeset
192 guid_128_generate(guid3);
ff30ec13fcb7 lib: guid - centralise a 'reset to the empty value' helper function
Phil Carmody <phil@dovecot.fi>
parents: 17979
diff changeset
193 guid_128_empty(guid3);
ff30ec13fcb7 lib: guid - centralise a 'reset to the empty value' helper function
Phil Carmody <phil@dovecot.fi>
parents: 17979
diff changeset
194 test_assert(guid_128_is_empty(guid3));
17979
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
195 test_end();
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
196
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
197 test_begin("guid_128_copy()");
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
198 guid_128_copy(guid3, guid1);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
199 test_assert(guid_128_equals(guid3, guid1));
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
200 test_assert(!guid_128_equals(guid3, guid2));
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
201 guid_128_copy(guid3, guid2);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
202 test_assert(!guid_128_equals(guid3, guid1));
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
203 test_assert(guid_128_equals(guid3, guid2));
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
204 test_end();
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
205
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
206 test_begin("guid_128_to_string()");
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
207 str = guid_128_to_string(guid1);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
208 test_assert(guid_128_from_string(str, guid3) == 0);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
209 test_assert(guid_128_equals(guid3, guid1));
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
210 test_end();
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
211
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
212 test_begin("guid_128_from_string()");
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
213 /* empty */
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
214 memset(guidbuf, '0', GUID_128_SIZE*2);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
215 guidbuf[GUID_128_SIZE*2] = '\0';
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
216 guidbuf[GUID_128_SIZE*2+1] = '\0';
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
217 test_assert(guid_128_from_string(guidbuf, guid3) == 0);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
218 test_assert(guid_128_is_empty(guid3));
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
219 /* too large */
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
220 guidbuf[GUID_128_SIZE*2] = '0';
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
221 test_assert(guid_128_from_string(guidbuf, guid3) < 0);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
222 /* too small */
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
223 guidbuf[GUID_128_SIZE*2-1] = '\0';
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
224 test_assert(guid_128_from_string(guidbuf, guid3) < 0);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
225 /* reset to normal */
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
226 guidbuf[GUID_128_SIZE*2-1] = '0';
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
227 guidbuf[GUID_128_SIZE*2] = '\0';
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
228 test_assert(guid_128_from_string(guidbuf, guid3) == 0);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
229 /* upper + lowercase hex chars */
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
230 i_assert(GUID_128_SIZE*2 > 16 + 6);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
231 for (i = 0; i < 10; i++)
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
232 guidbuf[i] = '0' + i;
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
233 for (i = 0; i < 6; i++)
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
234 guidbuf[10 + i] = 'a' + i;
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
235 for (i = 0; i < 6; i++)
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
236 guidbuf[16 + i] = 'A' + i;
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
237 test_assert(guid_128_from_string(guidbuf, guid3) == 0);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
238 test_assert(guid_128_equals(guid3, test_guid));
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
239 /* non-hex chars */
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
240 guidbuf[0] = 'g';
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
241 test_assert(guid_128_from_string(guidbuf, guid3) < 0);
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
242 guidbuf[0] = ' ';
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
243 test_assert(guid_128_from_string(guidbuf, guid3) < 0);
21833
ed5cbeee2ec7 lib: Add uuid support to guid
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21390
diff changeset
244
ed5cbeee2ec7 lib: Add uuid support to guid
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21390
diff changeset
245 test_assert(guid_128_from_uuid_string("fee0ceac-0327-11e7-ad39-52540078f374", guid3) == 0);
ed5cbeee2ec7 lib: Add uuid support to guid
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21390
diff changeset
246 test_assert(guid_128_from_uuid_string("fee0ceac032711e7ad3952540078f374", guid2) == 0);
ed5cbeee2ec7 lib: Add uuid support to guid
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21390
diff changeset
247 test_assert(guid_128_cmp(guid3, guid2) == 0);
ed5cbeee2ec7 lib: Add uuid support to guid
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21390
diff changeset
248 test_assert(guid_128_from_uuid_string("{fee0ceac-0327-11e7-ad39-52540078f374}", guid2) == 0);
ed5cbeee2ec7 lib: Add uuid support to guid
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21390
diff changeset
249 test_assert(guid_128_cmp(guid3, guid2) == 0);
ed5cbeee2ec7 lib: Add uuid support to guid
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21390
diff changeset
250 test_assert(strcmp(guid_128_to_uuid_string(guid3, FORMAT_RECORD), "fee0ceac-0327-11e7-ad39-52540078f374")==0);
ed5cbeee2ec7 lib: Add uuid support to guid
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21390
diff changeset
251 test_assert(strcmp(guid_128_to_uuid_string(guid3, FORMAT_COMPACT), "fee0ceac032711e7ad3952540078f374")==0);
ed5cbeee2ec7 lib: Add uuid support to guid
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21390
diff changeset
252 test_assert(strcmp(guid_128_to_uuid_string(guid3, FORMAT_MICROSOFT), "{fee0ceac-0327-11e7-ad39-52540078f374}")==0);
ed5cbeee2ec7 lib: Add uuid support to guid
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21390
diff changeset
253 /* failure test */
ed5cbeee2ec7 lib: Add uuid support to guid
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21390
diff changeset
254 test_assert(guid_128_from_uuid_string("fe-e0ceac-0327-11e7-ad39-52540078f374", guid3) < 0);
ed5cbeee2ec7 lib: Add uuid support to guid
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21390
diff changeset
255
17979
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
256 test_end();
22135
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
257
6feb39dacf28 lib: test for guid_128_generate() time handling
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents: 21833
diff changeset
258 test_ioloop_guid_128_generate();
17979
07c709075598 lib: Added unit tests for guid_128_*()
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
259 }