Mercurial > molko
annotate tests/test-inventory.c @ 145:7f1af54bb35a
core: rework label alignment, closes #2494 @1h
Now labels can be positioned on a bounding box with much more convenient
possibilities.
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 14 Oct 2020 18:11:38 +0200 |
parents | 789b23e01f52 |
children | c577c15df07f |
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 } |