annotate tests/test-save.c @ 501:23559c7ccf47

core: make sure everything start with mlk
author David Demelier <markand@malikania.fr>
date Tue, 28 Feb 2023 15:54:44 +0100
parents 773a082f0b91
children 793661cf1381
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
84
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * test-save.c -- test save routines
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
445
773a082f0b91 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 434
diff changeset
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr>
84
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <stdio.h>
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
434
4e78f045e8c0 rpg: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 422
diff changeset
21 #include <mlk/rpg/property.h>
4e78f045e8c0 rpg: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 422
diff changeset
22 #include <mlk/rpg/save.h>
84
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
24 #include <dt.h>
407
e6f972e04519 tests: don't use automatic feature
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
25
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
26 static void
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
27 cleanup(void)
84
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 {
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
29 remove("1.db");
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
30 remove("2.db");
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
31 }
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
32
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
33 static void
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
34 test_basics_read(void)
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
35 {
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
36 struct save db;
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
37
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 328
diff changeset
38 /* Non-existent should return error. */
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
39 DT_EQ_INT(save_open_path(&db, "1.db", SAVE_MODE_READ), -1);
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
40 save_finish(&db);
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
41 cleanup();
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
42 }
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
43
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
44 static void
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
45 test_basics_write(void)
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
46 {
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
47 struct save db[2] = {0};
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
48
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
49 /* Write should work on both non-existent and existent database. */
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
50 DT_EQ_INT(save_open_path(&db[0], "1.db", SAVE_MODE_WRITE), 0);
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
51 DT_EQ_INT(save_open_path(&db[1], "2.db", SAVE_MODE_WRITE), 0);
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
52
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
53 /* Update and create date must not be 0. */
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
54 DT_ASSERT(db[0].created > 0);
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
55 DT_ASSERT(db[0].updated > 0);
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
56 DT_ASSERT(db[1].created > 0);
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
57 DT_ASSERT(db[1].updated > 0);
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
58
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
59 save_finish(&db[0]);
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
60 save_finish(&db[1]);
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
61
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
62 /* Should work again. */
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
63 DT_ASSERT(save_open_path(&db[0], "1.db", SAVE_MODE_WRITE) == 0);
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
64 DT_ASSERT(save_open_path(&db[1], "2.db", SAVE_MODE_WRITE) == 0);
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
65 DT_ASSERT(db[0].created > 0);
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
66 DT_ASSERT(db[0].updated > 0);
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
67 DT_ASSERT(db[1].created > 0);
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
68 DT_ASSERT(db[1].updated > 0);
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
69
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
70 save_finish(&db[0]);
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
71 save_finish(&db[1]);
84
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 }
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
73
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 328
diff changeset
74 #if 0
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
75
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 328
diff changeset
76 RX_TEST_CASE(properties, set)
84
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 {
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
78 struct save db;
328
60a4f904da21 rpg: separate property from save
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
79 struct property prop;
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
80
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
81 DT_ASSERT(save_open_path(&db, "1.db", SAVE_MODE_WRITE) == 0);
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
82
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
83 /* Insert a new property 'state'. */
328
60a4f904da21 rpg: separate property from save
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
84 prop = (struct property){.key = "state", .value = "intro"};
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
85 DT_ASSERT(property_save(&prop, &db) == 0);
328
60a4f904da21 rpg: separate property from save
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
86 prop = (struct property){.key = "state"};
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
87 DT_ASSERT(property_load(&prop, &db) == 0);
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
88 GREATEST_ASSERT_STR_EQ(prop.value, "intro");
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
89
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
90 /* Now we replace the value. */
328
60a4f904da21 rpg: separate property from save
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
91 prop = (struct property){.key = "state", .value = "map"};
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
92 DT_ASSERT(property_save(&prop, &db) == 0);
328
60a4f904da21 rpg: separate property from save
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
93 prop = (struct property){.key = "state"};
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
94 DT_ASSERT(property_load(&prop, &db) == 0);
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
95 GREATEST_ASSERT_STR_EQ(prop.value, "map");
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
96
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
97 save_finish(&db);
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
98
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
99 GREATEST_PASS();
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
100 }
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
101
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
102 GREATEST_TEST
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
103 properties_notfound(void)
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
104 {
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
105 struct save db;
328
60a4f904da21 rpg: separate property from save
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
106 struct property prop = {.key = "state"};
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
107
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
108 DT_ASSERT(save_open_path(&db, "1.db", SAVE_MODE_WRITE) == 0);
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
109 DT_ASSERT(property_load(&prop, &db) < 0);
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
110 GREATEST_ASSERT_STR_EQ(prop.value, "");
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
111
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
112 GREATEST_PASS();
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
113 }
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
114
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
115 GREATEST_TEST
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
116 properties_remove(void)
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
117 {
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
118 struct save db;
328
60a4f904da21 rpg: separate property from save
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
119 struct property prop;
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
120
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
121 DT_ASSERT(save_open_path(&db, "1.db", SAVE_MODE_WRITE) == 0);
84
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
122
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 /* Insert a new property 'initialized'. */
328
60a4f904da21 rpg: separate property from save
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
124 prop = (struct property){.key = "state", .value = "intro"};
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
125 DT_ASSERT(property_save(&prop, &db) == 0);
328
60a4f904da21 rpg: separate property from save
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
126 prop = (struct property){.key = "state"};
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
127 DT_ASSERT(property_remove(&prop, &db) == 0);
328
60a4f904da21 rpg: separate property from save
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
128 prop = (struct property){.key = "state"};
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
129 DT_ASSERT(property_load(&prop, &db) < 0);
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
130 DT_EQ_STR(prop.value, "");
84
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
131
172
6250883b81f0 core: improve save module, closes #2507
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
132 GREATEST_PASS();
84
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 }
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
134
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 328
diff changeset
135 #endif
84
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
136
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 int
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
138 main(void)
84
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 {
422
b0579ae033ed core: use err.h in (action|drawable)-stack
David Demelier <markand@malikania.fr>
parents: 410
diff changeset
140 DT_RUN_EX(test_basics_read, cleanup, cleanup);
b0579ae033ed core: use err.h in (action|drawable)-stack
David Demelier <markand@malikania.fr>
parents: 410
diff changeset
141 DT_RUN_EX(test_basics_write, cleanup, cleanup);
410
1bf7d6669f0a tests: switch to libdt
David Demelier <markand@malikania.fr>
parents: 408
diff changeset
142 DT_SUMMARY();
84
a6c2067709ce core: implement basic save routines, closes #2476 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 }