annotate tests/test-database.c @ 36:575c90cafc7e default tip @

imgupd: use id as filename
author David Demelier <markand@malikania.fr>
date Thu, 16 Mar 2023 12:56:46 +0100
parents 3e01d0147294
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * test-database.c -- test database functions
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
35
3e01d0147294 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 25
diff changeset
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr>
0
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <stdio.h>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <unistd.h>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #define GREATEST_USE_ABBREVS 0
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <greatest.h>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include "database.h"
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 #include "image.h"
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include "util.h"
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 #define TEST_DATABASE "test.db"
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 static void
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 setup(void *data)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 remove(TEST_DATABASE);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
35
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 if (!database_open(TEST_DATABASE))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 die("abort: could not open database");
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
38
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 (void)data;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
41
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 static void
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 finish(void *data)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 database_finish();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
46
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 (void)data;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
49
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 GREATEST_TEST
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 recents_empty(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 struct image images[10];
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 size_t max = 10;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
55
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 if (!database_recents(images, &max))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 GREATEST_ASSERT_EQ(max, 0);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 GREATEST_PASS();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 GREATEST_TEST
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 recents_one(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 struct image images[10];
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 size_t max = 10;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 struct image one = {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 .title = estrdup("test 1"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 .author = estrdup("unit test"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 .data = estrdup("PNG..."),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 .datasz = 6,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 .filename = estrdup("image.png"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 .duration = IMAGE_DURATION_HOUR,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 .visible = true
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
77
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 if (!database_insert(&one))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 if (!database_recents(images, &max))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
82
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 GREATEST_ASSERT_EQ(max, 1);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 GREATEST_ASSERT(images[0].id);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 GREATEST_ASSERT_STR_EQ(images[0].title, "test 1");
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 GREATEST_ASSERT_STR_EQ(images[0].author, "unit test");
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 GREATEST_ASSERT_MEM_EQ(images[0].data, "PNG...", 6);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 GREATEST_ASSERT_EQ(images[0].datasz, 6);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 GREATEST_ASSERT_STR_EQ(images[0].filename, "image.png");
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 GREATEST_ASSERT_EQ(images[0].duration, IMAGE_DURATION_HOUR);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 GREATEST_ASSERT(images[0].visible);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 GREATEST_PASS();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
94
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 GREATEST_TEST
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 recents_hidden(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 struct image images[10];
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 size_t max = 10;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 struct image one = {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 .title = estrdup("test 1"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 .author = estrdup("unit test"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 .data = estrdup("PNG..."),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 .datasz = 6,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 .filename = estrdup("image.png"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 .duration = IMAGE_DURATION_HOUR,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 .visible = false
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
109
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 if (!database_insert(&one))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 if (!database_recents(images, &max))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
114
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 GREATEST_ASSERT_EQ(max, 0);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 GREATEST_PASS();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 GREATEST_TEST
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 recents_many(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 static const int expected[] = { 2, 1, 0 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 struct image images[3];
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 size_t max = 3;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 struct image image = {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 .duration = IMAGE_DURATION_HOUR,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 .visible = true
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
129
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 for (int i = 0; i < 3; ++i) {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 image.title = estrdup(bprintf("test %d", i));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 image.author = estrdup(bprintf("unit test %d", i));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 image.data = estrdup(bprintf("PNG... %d", i));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 image.datasz = 8;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 image.filename = estrdup(bprintf("%d.png", i));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
136
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 if (!database_insert(&image))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
139
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 /* Sleep a little bit to avoid same timestamp. */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 sleep(2);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
143
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 if (!database_recents(images, &max))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
146
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 GREATEST_ASSERT_EQ(max, 3U);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
148
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 for (int i = 0; i < 3; ++i) {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 /* Selected in most recents first. */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 GREATEST_ASSERT(images[i].id);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 GREATEST_ASSERT_STR_EQ(images[i].title,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 bprintf("test %d", expected[i]));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 GREATEST_ASSERT_STR_EQ(images[i].author,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 bprintf("unit test %d", expected[i]));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 GREATEST_ASSERT_MEM_EQ(images[i].data,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 bprintf("PNG... %d", expected[i]), 6);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 GREATEST_ASSERT_EQ(images[i].datasz, 8);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 GREATEST_ASSERT_STR_EQ(images[i].filename,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 bprintf("%i.png", expected[i]));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 GREATEST_ASSERT_EQ(images[i].duration, IMAGE_DURATION_HOUR);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 GREATEST_ASSERT(images[i].visible);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
164
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 GREATEST_PASS();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
167
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 GREATEST_TEST
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 recents_limits(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 static const int expected[] = { 19, 18, 17 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 struct image images[3];
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 size_t max = 3;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 struct image image = {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 .duration = IMAGE_DURATION_HOUR,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 .visible = true
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
178
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 for (int i = 0; i < 20; ++i) {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 image.title = estrdup(bprintf("test %d", i));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 image.author = estrdup(bprintf("unit test %d", i));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 image.data = estrdup(bprintf("PNG... %d", i));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 image.datasz = 8;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 image.filename = estrdup(bprintf("%d.png", i));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
185
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 if (!database_insert(&image))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
188
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 /* Sleep a little bit to avoid same timestamp. */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 sleep(2);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
192
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 if (!database_recents(images, &max))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
195
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 GREATEST_ASSERT_EQ(max, 3U);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
197
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 for (int i = 0; i < 3; ++i) {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 /* Selected in most recents first. */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 GREATEST_ASSERT(images[i].id);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 GREATEST_ASSERT_STR_EQ(images[i].title,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 bprintf("test %d", expected[i]));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 GREATEST_ASSERT_STR_EQ(images[i].author,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 bprintf("unit test %d", expected[i]));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 GREATEST_ASSERT_MEM_EQ(images[i].data,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 bprintf("PNG... %d", expected[i]), 6);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 GREATEST_ASSERT_EQ(images[i].datasz, 8);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 GREATEST_ASSERT_STR_EQ(images[i].filename,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 bprintf("%i.png", expected[i]));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 GREATEST_ASSERT_EQ(images[i].duration, IMAGE_DURATION_HOUR);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 GREATEST_ASSERT(images[i].visible);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
213
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 GREATEST_PASS();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
216
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 GREATEST_SUITE(recents)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 GREATEST_SET_SETUP_CB(setup, NULL);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 GREATEST_SET_TEARDOWN_CB(finish, NULL);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 GREATEST_RUN_TEST(recents_empty);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 GREATEST_RUN_TEST(recents_one);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 GREATEST_RUN_TEST(recents_hidden);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
224 GREATEST_RUN_TEST(recents_many);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 GREATEST_RUN_TEST(recents_limits);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
227
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
228 GREATEST_TEST
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 get_basic(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 struct image original = {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 .title = estrdup("test 1"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 .author = estrdup("unit test"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 .data = estrdup("PNG..."),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 .datasz = 6,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
236 .filename = estrdup("image.png"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 .duration = IMAGE_DURATION_HOUR,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 .visible = false
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 struct image new = {0};
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
241
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 if (!database_insert(&original))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
243 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 if (!database_get(&new, original.id))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
246
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 GREATEST_ASSERT_STR_EQ(new.id, original.id);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 GREATEST_ASSERT_STR_EQ(new.title, original.title);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
249 GREATEST_ASSERT_STR_EQ(new.author, original.author);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 GREATEST_ASSERT_MEM_EQ(new.data, original.data, 6);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 GREATEST_ASSERT_EQ(new.datasz, original.datasz);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 GREATEST_ASSERT_STR_EQ(new.filename, original.filename);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 GREATEST_ASSERT_EQ(new.visible, original.visible);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 GREATEST_PASS();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
255 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
256
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 GREATEST_TEST
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
258 get_nonexistent(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
259 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 struct image new = {0};
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
261
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 GREATEST_ASSERT(!database_get(&new, "unknown"));
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 GREATEST_ASSERT(!new.id);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
264 GREATEST_ASSERT(!new.title);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 GREATEST_ASSERT(!new.author);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
266 GREATEST_ASSERT(!new.data);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
267 GREATEST_ASSERT(!new.datasz);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
268 GREATEST_ASSERT(!new.filename);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
269 GREATEST_ASSERT(!new.timestamp);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
270 GREATEST_ASSERT(!new.visible);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
271 GREATEST_PASS();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
272 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
273
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
274 GREATEST_SUITE(get)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
275 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
276 GREATEST_SET_SETUP_CB(setup, NULL);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
277 GREATEST_SET_TEARDOWN_CB(finish, NULL);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
278 GREATEST_RUN_TEST(get_basic);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
279 GREATEST_RUN_TEST(get_nonexistent);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
280 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
281
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
282 GREATEST_TEST
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
283 search_basic(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
285 struct image searched[3] = { 0 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
286 struct image originals[] = {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
287 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
288 .title = estrdup("Super Mario"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
289 .author = estrdup("Mario"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
290 .data = estrdup("PNG mario"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
291 .datasz = 9,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 .filename = "mario.png",
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
293 .duration = IMAGE_DURATION_HOUR,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
294 .visible = true
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
295 },
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
296 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
297 .title = estrdup("Super Luigi"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 .author = estrdup("Luigi"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
299 .data = estrdup("PNG luigi"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
300 .datasz = 9,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
301 .filename = "luigi.png",
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
302 .duration = IMAGE_DURATION_HOUR,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
303 .visible = true
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
304 },
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
305 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
306 size_t max = 3;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
307
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
308 for (int i = 0; i < 3; ++i)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
309 if (!database_insert(&originals[i]))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
310 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
311
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 /*
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
313 * Search:
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 *
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
315 * title = <any>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 * author = Mario,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
317 */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 if (!database_search(searched, &max, NULL, "Mario"))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
319 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
320
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
321 GREATEST_ASSERT_EQ(max, 1);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
322 GREATEST_ASSERT(searched[0].id);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
323 GREATEST_ASSERT_STR_EQ(searched[0].title, "Super Mario");
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
324 GREATEST_ASSERT_STR_EQ(searched[0].author, "Mario");
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
325 GREATEST_ASSERT_MEM_EQ(searched[0].data, "PNG mario", 9);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
326 GREATEST_ASSERT_EQ(searched[0].datasz, 9);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
327 GREATEST_ASSERT_STR_EQ(searched[0].filename, "mario.png");
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
328 GREATEST_ASSERT_EQ(searched[0].duration, IMAGE_DURATION_HOUR);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
329 GREATEST_ASSERT(searched[0].visible);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
330 GREATEST_PASS();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
331 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
332
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
333 GREATEST_TEST
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
334 search_notfound(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
335 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
336 struct image searched = {0};
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
337 struct image original = {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
338 .title = estrdup("Super Mario"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
339 .author = estrdup("Mario"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
340 .data = estrdup("PNG mario"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
341 .datasz = 9,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
342 .filename = "mario.png",
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
343 .duration = IMAGE_DURATION_HOUR,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
344 .visible = true
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
345 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
346 size_t max = 1;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
347
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
348 if (!database_insert(&original))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
349 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
350
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
351 /*
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
352 * Search:
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
353 *
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
354 * title = <any>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
355 * author = jean,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
356 */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
357 if (!database_search(&searched, &max, NULL, "jean"))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
358 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
359
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
360 GREATEST_ASSERT_EQ(max, 0);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
361 GREATEST_ASSERT(!searched.id);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
362 GREATEST_ASSERT(!searched.title);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
363 GREATEST_ASSERT(!searched.author);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
364 GREATEST_ASSERT(!searched.data);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
365 GREATEST_ASSERT(!searched.datasz);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
366 GREATEST_ASSERT(!searched.filename);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
367 GREATEST_ASSERT(!searched.timestamp);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
368 GREATEST_ASSERT(!searched.visible);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
369 GREATEST_PASS();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
370 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
371
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
372 GREATEST_TEST
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
373 search_private(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
374 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
375 struct image searched = {0};
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
376 struct image original = {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
377 .title = estrdup("Super Mario"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
378 .author = estrdup("Mario"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
379 .data = estrdup("PNG mario"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
380 .datasz = 9,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
381 .filename = "mario.png",
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
382 .duration = IMAGE_DURATION_HOUR,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
383 .visible = false
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
384 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
385 size_t max = 1;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
386
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
387 if (!database_insert(&original))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
388 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
389
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
390 /*
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
391 * Search:
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
392 *
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
393 * title = <any>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
394 * author = <any>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
395 */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
396 if (!database_search(&searched, &max, NULL, NULL))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
397 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
398
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
399 GREATEST_ASSERT_EQ(max, 0);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
400 GREATEST_ASSERT(!searched.id);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
401 GREATEST_ASSERT(!searched.title);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
402 GREATEST_ASSERT(!searched.author);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
403 GREATEST_ASSERT(!searched.data);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
404 GREATEST_ASSERT(!searched.datasz);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
405 GREATEST_ASSERT(!searched.filename);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
406 GREATEST_ASSERT(!searched.timestamp);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
407 GREATEST_ASSERT(!searched.visible);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
408 GREATEST_PASS();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
409 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
410
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
411 GREATEST_SUITE(search)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
412 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
413 GREATEST_SET_SETUP_CB(setup, NULL);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
414 GREATEST_SET_TEARDOWN_CB(finish, NULL);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
415 GREATEST_RUN_TEST(search_basic);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
416 GREATEST_RUN_TEST(search_notfound);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
417 GREATEST_RUN_TEST(search_private);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
418 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
419
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
420 GREATEST_TEST
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
421 clear_run(void)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
422 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
423 struct image searched = { 0 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
424 struct image originals[] = {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
425 /* Will be deleted */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
426 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
427 .title = estrdup("Super Mario"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
428 .author = estrdup("Mario"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
429 .data = estrdup("PNG mario"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
430 .datasz = 9,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
431 .filename = "mario.png",
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
432 .duration = IMAGE_DURATION_HOUR,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
433 .visible = true,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
434 .duration = 1
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
435 },
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
436 /* Will be deleted */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
437 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
438 .title = estrdup("Super Luigi"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
439 .author = estrdup("Luigi"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
440 .data = estrdup("PNG luigi"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
441 .datasz = 9,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
442 .filename = "mario.png",
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
443 .duration = IMAGE_DURATION_HOUR,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
444 .visible = true,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
445 .duration = 1
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
446 },
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
447 /* Will be kept */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
448 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
449 .title = estrdup("Bowser"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
450 .author = estrdup("Bowser"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
451 .data = estrdup("PNG bowser"),
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
452 .datasz = 10,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
453 .filename = "bowser.png",
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
454 .duration = IMAGE_DURATION_HOUR,
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
455 .visible = true
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
456 },
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
457 };
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
458 size_t max = 1;
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
459
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
460 for (int i = 0; i < 3; ++i)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
461 if (!database_insert(&originals[i]))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
462 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
463
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
464 /* Sleep 2 seconds to exceed the lifetime of Mario and Luigi images. */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
465 sleep(2);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
466 database_clear();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
467
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
468 /*
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
469 * Search:
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
470 *
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
471 * title = <any>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
472 * author = <any>
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
473 */
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
474 if (!database_search(&searched, &max, NULL, NULL))
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
475 GREATEST_FAIL();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
476
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
477 GREATEST_ASSERT_EQ(max, 1);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
478 GREATEST_ASSERT(searched.id);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
479 GREATEST_ASSERT_STR_EQ(searched.title, "Bowser");
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
480 GREATEST_ASSERT_STR_EQ(searched.author, "Bowser");
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
481 GREATEST_ASSERT_MEM_EQ(searched.data, "PNG bowser", 10);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
482 GREATEST_ASSERT_EQ(searched.datasz, 10);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
483 GREATEST_ASSERT_STR_EQ(searched.filename, "bowser.png");
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
484 GREATEST_ASSERT_EQ(searched.duration, IMAGE_DURATION_HOUR);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
485 GREATEST_ASSERT(searched.visible);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
486 GREATEST_PASS();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
487 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
488
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
489 GREATEST_SUITE(clear)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
490 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
491 GREATEST_SET_SETUP_CB(setup, NULL);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
492 GREATEST_SET_TEARDOWN_CB(finish, NULL);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
493 GREATEST_RUN_TEST(clear_run);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
494 }
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
495
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
496 GREATEST_MAIN_DEFS();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
497
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
498 int
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
499 main(int argc, char **argv)
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
500 {
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
501 GREATEST_MAIN_BEGIN();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
502 GREATEST_RUN_SUITE(recents);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
503 GREATEST_RUN_SUITE(get);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
504 GREATEST_RUN_SUITE(search);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
505 GREATEST_RUN_SUITE(clear);
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
506 GREATEST_MAIN_END();
f41e1b48510d misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
507 }