Mercurial > molko
comparison tests/test-save-quest.c @ 330:e0657709fbe3
rpg: add support for basic quests
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 06 Oct 2021 13:54:16 +0200 |
parents | |
children | f5a5bbb77122 |
comparison
equal
deleted
inserted
replaced
329:ea4a3af71c18 | 330:e0657709fbe3 |
---|---|
1 /* | |
2 * test-save-quest.c -- test save routines | |
3 * | |
4 * Copyright (c) 2020-2021 David Demelier <markand@malikania.fr> | |
5 * | |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
19 #include <stdio.h> | |
20 | |
21 #define GREATEST_USE_ABBREVS 0 | |
22 #include <greatest.h> | |
23 | |
24 #include <core/util.h> | |
25 | |
26 #include <rpg/quest.h> | |
27 #include <rpg/save.h> | |
28 | |
29 static struct save db; | |
30 | |
31 static void | |
32 clean(void *data) | |
33 { | |
34 (void)data; | |
35 | |
36 save_finish(&db); | |
37 remove("quest.db"); | |
38 } | |
39 | |
40 static void | |
41 setup(void *data) | |
42 { | |
43 (void)data; | |
44 | |
45 if (save_open_path(&db, "quest.db", SAVE_MODE_WRITE) < 0) | |
46 exit(1); | |
47 } | |
48 | |
49 GREATEST_TEST | |
50 basics_load(void) | |
51 { | |
52 struct quest_step steps[] = { | |
53 { | |
54 .name = "0001.01-kill-ten-moko", | |
55 .description = "Kill 10 mokos de las llanuras.", | |
56 .percent = 100 | |
57 }, | |
58 { | |
59 .name = "0001.02-bring-beer-to-molko", | |
60 .description = "Bring beer to Molko.", | |
61 .percent = 50 | |
62 } | |
63 }; | |
64 struct quest quest = { | |
65 .name = "0001-getting-started", | |
66 .description = "Initial quest for adventurer.", | |
67 .steps = steps, | |
68 .stepsz = UTIL_SIZE(steps) | |
69 }; | |
70 | |
71 GREATEST_ASSERT_EQ(quest_save(&quest, &db), 0); | |
72 | |
73 /* Reset to inspect. */ | |
74 steps[0].percent = steps[1].percent = 0; | |
75 GREATEST_ASSERT_EQ(quest_load(&quest, &db), 0); | |
76 GREATEST_ASSERT_EQ(steps[0].percent, 100); | |
77 GREATEST_ASSERT_EQ(steps[1].percent, 50); | |
78 | |
79 GREATEST_PASS(); | |
80 } | |
81 | |
82 GREATEST_SUITE(suite_basics) | |
83 { | |
84 GREATEST_SET_SETUP_CB(setup, NULL); | |
85 GREATEST_SET_TEARDOWN_CB(clean, NULL); | |
86 GREATEST_RUN_TEST(basics_load); | |
87 } | |
88 | |
89 GREATEST_MAIN_DEFS(); | |
90 | |
91 int | |
92 main(int argc, char **argv) | |
93 { | |
94 GREATEST_MAIN_BEGIN(); | |
95 GREATEST_RUN_SUITE(suite_basics); | |
96 GREATEST_MAIN_END(); | |
97 } |