annotate tests/test-inventory.c @ 129:9301c7c84471

core: implement basic drawables, closes #2491 @1h
author David Demelier <markand@malikania.fr>
date Tue, 06 Oct 2020 13:55:20 +0200
parents 789b23e01f52
children c577c15df07f
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
121
789b23e01f52 misc: reorganize hierarchy, closes #2490
David Demelier <markand@malikania.fr>
parents: 110
diff changeset
22 #include <core/item.h>
789b23e01f52 misc: reorganize hierarchy, closes #2490
David Demelier <markand@malikania.fr>
parents: 110
diff changeset
23 #include <core/inventory.h>
85
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 static struct item potion = {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 .name = "Potion",
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 .stackable = 64
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 };
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 static struct item elixir = {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 .name = "Elixir",
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 .stackable = 64
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 };
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
34
110
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
35 static struct item sword = {
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
36 .name = "Sword",
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
37 .stackable = 1
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
38 };
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
39
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
40 #define SET(iv, r, c, i, a) \
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
41 do { \
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
42 (iv)->items[(r)][(c)].item = (i); \
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
43 (iv)->items[(r)][(c)].amount = (a); \
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
44 } while (0) \
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
45
85
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 GREATEST_TEST
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 push_simple(void)
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 struct inventory inv = { 0 };
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 unsigned int left;
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 * [0][0] should contain 50 potions.
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 left = inventory_push(&inv, &potion, 50U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 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
58 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
59 inventory_clear(&inv);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
60
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 * [0][1] should contain 64 potions.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 * [0][2] should contain 10 potions.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 */
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 left = inventory_push(&inv, &potion, 74U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 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
68 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
69 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
70 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
71 inventory_clear(&inv);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 * 1. We push 10 potions
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 * 2. We push 10 more potions.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 *
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 * [0][0] should contain 20 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 left = inventory_push(&inv, &potion, 10U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 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
82 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
83 left = inventory_push(&inv, &potion, 10U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 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
86 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
87 inventory_clear(&inv);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 GREATEST_PASS();
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
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 GREATEST_TEST
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 push_full(void)
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 struct inventory inv = { 0 };
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 unsigned int left;
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
97
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 * Fill the inventory with
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 * - 29 x 64 potions
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 * - Last slot will have already 50 potions.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 *
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 * 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
105 */
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 for (int i = 0; i < 29; ++i) {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 left = inventory_push(&inv, &potion, 64U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 }
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
110
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 left = inventory_push(&inv, &potion, 50U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
113
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 * 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
116 */
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 left = inventory_push(&inv, &potion, 20U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 GREATEST_ASSERT_EQ(left, 6U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 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
120
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 GREATEST_PASS();
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
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 GREATEST_TEST
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 push_other(void)
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 struct inventory inv = { 0 };
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 unsigned int left;
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
129
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 * [0][0] should contain 30 potions.
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 left = inventory_push(&inv, &potion, 30U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 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
136 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
137
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 /*
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 * 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
140 * cell.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 *
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 * [0][0] should be untouched
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 * [0][1] should contain 30 elixir.
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 */
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 left = inventory_push(&inv, &elixir, 30U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 GREATEST_ASSERT_EQ(left, 0U);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 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
148 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
149 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
150 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
151
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 GREATEST_PASS();
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
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 GREATEST_SUITE(push)
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_RUN_TEST(push_simple);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 GREATEST_RUN_TEST(push_full);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 GREATEST_RUN_TEST(push_other);
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 }
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
161
110
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
162 GREATEST_TEST
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
163 sort_simple(void)
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
164 {
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
165 struct inventory inv = { 0 };
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 /*
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
168 * Create this inventory:
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 * 0 1 2 3 4 5 6 7 8 9
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
171 * 0 [ ] [P:10] [ ] [ ] [S: 1] [ ] [ ] [E:24] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
172 * 1 [ ] [ ] [P:12] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
173 * 2 [ ] [ ] [ ] [ ] [E: 8] [ ] [ ] [ ] [P: 5] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
174 */
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
175 SET(&inv, 0, 1, &potion, 10);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
176 SET(&inv, 0, 4, &sword, 1);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
177 SET(&inv, 0, 7, &elixir, 24);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
178 SET(&inv, 1, 2, &potion, 12);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
179 SET(&inv, 2, 4, &elixir, 8);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
180 SET(&inv, 2, 8, &potion, 5);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
181
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
182 /*
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
183 * Should look like this:
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 * 0 1 2 3 4 5 6 7 8 9
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
186 * 0 [E:32] [P:27] [S: 1] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
187 * 1 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
188 * 2 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
189 */
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
190 inventory_sort(&inv);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
191 GREATEST_ASSERT_EQ(inv.items[0][0].item, &elixir);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
192 GREATEST_ASSERT_EQ(inv.items[0][0].amount, 32U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
193 GREATEST_ASSERT_EQ(inv.items[0][1].item, &potion);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
194 GREATEST_ASSERT_EQ(inv.items[0][1].amount, 27U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
195 GREATEST_ASSERT_EQ(inv.items[0][2].item, &sword);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
196 GREATEST_ASSERT_EQ(inv.items[0][2].amount, 1U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
197
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
198 GREATEST_PASS();
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
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
201 GREATEST_TEST
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
202 sort_with_full(void)
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
203 {
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
204 struct inventory inv = { 0 };
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 /*
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
207 * Create this inventory:
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 * 0 1 2 3 4 5 6 7 8 9
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
210 * 0 [ ] [P:62] [ ] [ ] [S: 1] [ ] [ ] [E:64] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
211 * 1 [ ] [ ] [P:12] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
212 * 2 [ ] [ ] [ ] [ ] [E: 8] [ ] [ ] [ ] [P: 5] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
213 */
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
214 SET(&inv, 0, 1, &potion, 62);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
215 SET(&inv, 0, 4, &sword, 1);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
216 SET(&inv, 0, 7, &elixir, 64);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
217 SET(&inv, 1, 2, &potion, 12);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
218 SET(&inv, 2, 4, &elixir, 8);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
219 SET(&inv, 2, 8, &potion, 5);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
220
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
221 /*
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
222 * Should look like this:
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 * 0 1 2 3 4 5 6 7 8 9
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
225 * 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
226 * 1 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
227 * 2 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
228 */
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
229 inventory_sort(&inv);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
230 GREATEST_ASSERT_EQ(inv.items[0][0].item, &elixir);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
231 GREATEST_ASSERT_EQ(inv.items[0][0].amount, 64U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
232 GREATEST_ASSERT_EQ(inv.items[0][1].item, &elixir);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
233 GREATEST_ASSERT_EQ(inv.items[0][1].amount, 8U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
234 GREATEST_ASSERT_EQ(inv.items[0][2].item, &potion);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
235 GREATEST_ASSERT_EQ(inv.items[0][2].amount, 64U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
236 GREATEST_ASSERT_EQ(inv.items[0][3].item, &potion);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
237 GREATEST_ASSERT_EQ(inv.items[0][3].amount, 15U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
238 GREATEST_ASSERT_EQ(inv.items[0][4].item, &sword);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
239 GREATEST_ASSERT_EQ(inv.items[0][4].amount, 1U);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
240
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
241 GREATEST_PASS();
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
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
244 GREATEST_SUITE(sort)
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_RUN_TEST(sort_simple);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
247 GREATEST_RUN_TEST(sort_with_full);
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
248 }
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
249
85
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 GREATEST_MAIN_DEFS();
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
251
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 int
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 main(int argc, char **argv)
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 {
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
255 GREATEST_MAIN_BEGIN();
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 GREATEST_RUN_SUITE(push);
110
d3bc14c1e243 inventory: add sorting algorithms
David Demelier <markand@malikania.fr>
parents: 85
diff changeset
257 GREATEST_RUN_SUITE(sort);
85
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
258 GREATEST_MAIN_END();
34e91215ec5a core: implement basic parts of inventories, closes #2483
David Demelier <markand@malikania.fr>
parents:
diff changeset
259 }