Mercurial > dovecot > core-2.2
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 |
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 } |