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 }