annotate tests/test-inventory.c @ 184:c92957c3b82b

core: add texture_set_(alpha|color)_mod functions Apply either an alpha transparency modulation or a color on the texture.
author David Demelier <markand@malikania.fr>
date Mon, 02 Nov 2020 18:35:44 +0100
parents ce789473567e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
85
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * test-inventory.c -- test inventory functions
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #define GREATEST_USE_ABBREVS 0
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <greatest.h>
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
175
ce789473567e rpg: disable inventory for now and add item.c
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
22 #if 0
ce789473567e rpg: disable inventory for now and add item.c
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
23
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
24 #include <rpg/item.h>
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
25 #include <rpg/inventory.h>
85
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 static struct item potion = {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 .name = "Potion",
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 .stackable = 64
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 };
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 static struct item elixir = {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 .name = "Elixir",
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 .stackable = 64
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 };
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
110
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
37 static struct item sword = {
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
38 .name = "Sword",
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
39 .stackable = 1
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
40 };
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
41
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
42 #define SET(iv, r, c, i, a) \
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
43 do { \
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
44 (iv)->items[(r)][(c)].item = (i); \
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
45 (iv)->items[(r)][(c)].amount = (a); \
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
46 } while (0) \
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
47
85
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 GREATEST_TEST
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 push_simple(void)
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 struct inventory inv = { 0 };
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 unsigned int left;
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
53
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 * [0][0] should contain 50 potions.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 */
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 left = inventory_push(&inv, &potion, 50U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 GREATEST_ASSERT_EQ(inv.items[0][0].item, &potion);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 GREATEST_ASSERT_EQ(inv.items[0][0].amount, 50U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 inventory_clear(&inv);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 * [0][1] should contain 64 potions.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 * [0][2] should contain 10 potions.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 */
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 left = inventory_push(&inv, &potion, 74U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 GREATEST_ASSERT_EQ(inv.items[0][0].item, &potion);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 GREATEST_ASSERT_EQ(inv.items[0][0].amount, 64U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 GREATEST_ASSERT_EQ(inv.items[0][1].item, &potion);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 GREATEST_ASSERT_EQ(inv.items[0][1].amount, 10U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 inventory_clear(&inv);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 * 1. We push 10 potions
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 * 2. We push 10 more potions.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 *
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 * [0][0] should contain 20 potions.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 */
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 left = inventory_push(&inv, &potion, 10U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 GREATEST_ASSERT_EQ(inv.items[0][0].item, &potion);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 GREATEST_ASSERT_EQ(inv.items[0][0].amount, 10U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 left = inventory_push(&inv, &potion, 10U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 GREATEST_ASSERT_EQ(inv.items[0][0].item, &potion);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 GREATEST_ASSERT_EQ(inv.items[0][0].amount, 20U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 inventory_clear(&inv);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
90
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 GREATEST_PASS();
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 }
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
93
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 GREATEST_TEST
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 push_full(void)
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 struct inventory inv = { 0 };
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 unsigned int left;
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 * Fill the inventory with
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 *
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 * - 29 x 64 potions
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 * - Last slot will have already 50 potions.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 *
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 * This means the maximum potions to push is only 14.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 */
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 for (int i = 0; i < 29; ++i) {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 left = inventory_push(&inv, &potion, 64U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 }
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
112
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 left = inventory_push(&inv, &potion, 50U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
115
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 * Try to add 20 potions, only 14 should be pushed.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 */
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 left = inventory_push(&inv, &potion, 20U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 GREATEST_ASSERT_EQ(left, 6U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 GREATEST_ASSERT_EQ(inv.items[2][9].amount, 64U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
122
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 GREATEST_PASS();
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 }
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
125
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 GREATEST_TEST
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 push_other(void)
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 struct inventory inv = { 0 };
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 unsigned int left;
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
131
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 * [0][0] should contain 30 potions.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 */
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 left = inventory_push(&inv, &potion, 30U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 GREATEST_ASSERT_EQ(inv.items[0][0].item, &potion);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 GREATEST_ASSERT_EQ(inv.items[0][0].amount, 30U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
139
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 * Since elixir is not a potion, it should be pushed into an other
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 * cell.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 *
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 * [0][0] should be untouched
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 * [0][1] should contain 30 elixir.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 */
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 left = inventory_push(&inv, &elixir, 30U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 GREATEST_ASSERT_EQ(inv.items[0][0].item, &potion);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 GREATEST_ASSERT_EQ(inv.items[0][0].amount, 30U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 GREATEST_ASSERT_EQ(inv.items[0][1].item, &elixir);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 GREATEST_ASSERT_EQ(inv.items[0][1].amount, 30U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
153
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 GREATEST_PASS();
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 }
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
156
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 GREATEST_SUITE(push)
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 GREATEST_RUN_TEST(push_simple);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 GREATEST_RUN_TEST(push_full);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 GREATEST_RUN_TEST(push_other);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 }
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
163
110
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
164 GREATEST_TEST
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
165 sort_simple(void)
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
166 {
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
167 struct inventory inv = { 0 };
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
168
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
169 /*
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
170 * Create this inventory:
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
171 *
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
172 * 0 1 2 3 4 5 6 7 8 9
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
173 * 0 [ ] [P:10] [ ] [ ] [S: 1] [ ] [ ] [E:24] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
174 * 1 [ ] [ ] [P:12] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
175 * 2 [ ] [ ] [ ] [ ] [E: 8] [ ] [ ] [ ] [P: 5] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
176 */
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
177 SET(&inv, 0, 1, &potion, 10);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
178 SET(&inv, 0, 4, &sword, 1);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
179 SET(&inv, 0, 7, &elixir, 24);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
180 SET(&inv, 1, 2, &potion, 12);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
181 SET(&inv, 2, 4, &elixir, 8);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
182 SET(&inv, 2, 8, &potion, 5);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
183
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
184 /*
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
185 * Should look like this:
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
186 *
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
187 * 0 1 2 3 4 5 6 7 8 9
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
188 * 0 [E:32] [P:27] [S: 1] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
189 * 1 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
190 * 2 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
191 */
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
192 inventory_sort(&inv);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
193 GREATEST_ASSERT_EQ(inv.items[0][0].item, &elixir);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
194 GREATEST_ASSERT_EQ(inv.items[0][0].amount, 32U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
195 GREATEST_ASSERT_EQ(inv.items[0][1].item, &potion);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
196 GREATEST_ASSERT_EQ(inv.items[0][1].amount, 27U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
197 GREATEST_ASSERT_EQ(inv.items[0][2].item, &sword);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
198 GREATEST_ASSERT_EQ(inv.items[0][2].amount, 1U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
199
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
200 GREATEST_PASS();
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
201 }
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
202
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
203 GREATEST_TEST
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
204 sort_with_full(void)
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
205 {
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
206 struct inventory inv = { 0 };
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
207
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
208 /*
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
209 * Create this inventory:
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
210 *
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
211 * 0 1 2 3 4 5 6 7 8 9
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
212 * 0 [ ] [P:62] [ ] [ ] [S: 1] [ ] [ ] [E:64] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
213 * 1 [ ] [ ] [P:12] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
214 * 2 [ ] [ ] [ ] [ ] [E: 8] [ ] [ ] [ ] [P: 5] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
215 */
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
216 SET(&inv, 0, 1, &potion, 62);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
217 SET(&inv, 0, 4, &sword, 1);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
218 SET(&inv, 0, 7, &elixir, 64);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
219 SET(&inv, 1, 2, &potion, 12);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
220 SET(&inv, 2, 4, &elixir, 8);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
221 SET(&inv, 2, 8, &potion, 5);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
222
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
223 /*
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
224 * Should look like this:
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
225 *
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
226 * 0 1 2 3 4 5 6 7 8 9
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
227 * 0 [E:64] [E: 8] [P:64] [P:10] [S: 1] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
228 * 1 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
229 * 2 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
230 */
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
231 inventory_sort(&inv);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
232 GREATEST_ASSERT_EQ(inv.items[0][0].item, &elixir);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
233 GREATEST_ASSERT_EQ(inv.items[0][0].amount, 64U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
234 GREATEST_ASSERT_EQ(inv.items[0][1].item, &elixir);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
235 GREATEST_ASSERT_EQ(inv.items[0][1].amount, 8U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
236 GREATEST_ASSERT_EQ(inv.items[0][2].item, &potion);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
237 GREATEST_ASSERT_EQ(inv.items[0][2].amount, 64U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
238 GREATEST_ASSERT_EQ(inv.items[0][3].item, &potion);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
239 GREATEST_ASSERT_EQ(inv.items[0][3].amount, 15U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
240 GREATEST_ASSERT_EQ(inv.items[0][4].item, &sword);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
241 GREATEST_ASSERT_EQ(inv.items[0][4].amount, 1U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
242
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
243 GREATEST_PASS();
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
244 }
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
245
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
246 GREATEST_SUITE(sort)
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
247 {
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
248 GREATEST_RUN_TEST(sort_simple);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
249 GREATEST_RUN_TEST(sort_with_full);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
250 }
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
251
85
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 GREATEST_MAIN_DEFS();
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
253
175
ce789473567e rpg: disable inventory for now and add item.c
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
254 #endif
ce789473567e rpg: disable inventory for now and add item.c
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
255
85
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 int
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 main(int argc, char **argv)
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
258 {
175
ce789473567e rpg: disable inventory for now and add item.c
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
259 #if 0
85
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 GREATEST_MAIN_BEGIN();
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 GREATEST_RUN_SUITE(push);
110
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
262 GREATEST_RUN_SUITE(sort);
85
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 GREATEST_MAIN_END();
175
ce789473567e rpg: disable inventory for now and add item.c
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
264 #endif
ce789473567e rpg: disable inventory for now and add item.c
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
265 return 0;
85
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
266 }