Mercurial > molko
annotate tests/test-inventory.c @ 182:f6497ec74b49
core: add alloc module, closes #2512
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 27 Oct 2020 16:54:18 +0100 |
parents | ce789473567e |
children |
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 } |