Mercurial > molko
comparison tests/test-map.c @ 215:64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
While here:
- Add CMake macros,
- Update maps,
- Add more tests.
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 17 Nov 2020 20:08:42 +0100 |
parents | adcbb7ccfdee |
children | 76afe639fd72 |
comparison
equal
deleted
inserted
replaced
214:82fd79d5019e | 215:64f24b482722 |
---|---|
27 | 27 |
28 #include <rpg/map-file.h> | 28 #include <rpg/map-file.h> |
29 #include <rpg/map.h> | 29 #include <rpg/map.h> |
30 | 30 |
31 GREATEST_TEST | 31 GREATEST_TEST |
32 test_sample(void) | 32 test_basics_sample(void) |
33 { | 33 { |
34 struct map_file loader = {0}; | 34 struct map_file loader = {0}; |
35 struct map map = {0}; | 35 struct map map = {0}; |
36 | 36 |
37 GREATEST_ASSERT(map_file_open(&loader, DIRECTORY "sample-map.map", &map)); | 37 GREATEST_ASSERT(map_file_open(&loader, &map, DIRECTORY "sample-map.map")); |
38 GREATEST_ASSERT_STR_EQ("This is a test map", map.title); | 38 GREATEST_ASSERT_STR_EQ("This is a test map", map.title); |
39 GREATEST_ASSERT_EQ(2, map.w); | 39 GREATEST_ASSERT_EQ(4, map.columns); |
40 GREATEST_ASSERT_EQ(2, map.h); | 40 GREATEST_ASSERT_EQ(2, map.rows); |
41 GREATEST_ASSERT_EQ(32, map.tile_w); | 41 |
42 GREATEST_ASSERT_EQ(16, map.tile_h); | |
43 GREATEST_ASSERT_EQ(0, map.layers[0].tiles[0]); | 42 GREATEST_ASSERT_EQ(0, map.layers[0].tiles[0]); |
44 GREATEST_ASSERT_EQ(1, map.layers[0].tiles[1]); | 43 GREATEST_ASSERT_EQ(1, map.layers[0].tiles[1]); |
45 GREATEST_ASSERT_EQ(2, map.layers[0].tiles[2]); | 44 GREATEST_ASSERT_EQ(2, map.layers[0].tiles[2]); |
46 GREATEST_ASSERT_EQ(3, map.layers[0].tiles[3]); | 45 GREATEST_ASSERT_EQ(3, map.layers[0].tiles[3]); |
47 GREATEST_ASSERT_EQ(4, map.layers[1].tiles[0]); | 46 GREATEST_ASSERT_EQ(4, map.layers[0].tiles[4]); |
48 GREATEST_ASSERT_EQ(5, map.layers[1].tiles[1]); | 47 GREATEST_ASSERT_EQ(5, map.layers[0].tiles[5]); |
49 GREATEST_ASSERT_EQ(6, map.layers[1].tiles[2]); | 48 GREATEST_ASSERT_EQ(6, map.layers[0].tiles[6]); |
50 GREATEST_ASSERT_EQ(7, map.layers[1].tiles[3]); | 49 GREATEST_ASSERT_EQ(7, map.layers[0].tiles[7]); |
51 GREATEST_ASSERT_EQ(2, map.tiledefsz); | 50 |
52 GREATEST_ASSERT_EQ(0, map.tiledefs[0].id); | 51 GREATEST_ASSERT_EQ(8, map.layers[1].tiles[0]); |
53 GREATEST_ASSERT_EQ(10, map.tiledefs[0].x); | 52 GREATEST_ASSERT_EQ(9, map.layers[1].tiles[1]); |
54 GREATEST_ASSERT_EQ(12, map.tiledefs[0].y); | 53 GREATEST_ASSERT_EQ(10, map.layers[1].tiles[2]); |
55 GREATEST_ASSERT_EQ(5, map.tiledefs[0].w); | 54 GREATEST_ASSERT_EQ(11, map.layers[1].tiles[3]); |
56 GREATEST_ASSERT_EQ(7, map.tiledefs[0].h); | 55 GREATEST_ASSERT_EQ(12, map.layers[1].tiles[4]); |
57 GREATEST_ASSERT_EQ(2, map.tiledefs[1].id); | 56 GREATEST_ASSERT_EQ(13, map.layers[1].tiles[5]); |
58 GREATEST_ASSERT_EQ(12, map.tiledefs[1].x); | 57 GREATEST_ASSERT_EQ(14, map.layers[1].tiles[6]); |
59 GREATEST_ASSERT_EQ(14, map.tiledefs[1].y); | 58 GREATEST_ASSERT_EQ(15, map.layers[1].tiles[7]); |
60 GREATEST_ASSERT_EQ(8, map.tiledefs[1].w); | 59 |
61 GREATEST_ASSERT_EQ(10, map.tiledefs[1].h); | 60 GREATEST_ASSERT_EQ(64U, map.tileset->sprite->cellw); |
61 GREATEST_ASSERT_EQ(32U, map.tileset->sprite->cellh); | |
62 | |
63 GREATEST_ASSERT_EQ(4, map.tileset->tiledefsz); | |
64 | |
65 GREATEST_ASSERT_EQ(129, map.tileset->tiledefs[0].id); | |
66 GREATEST_ASSERT_EQ(8, map.tileset->tiledefs[0].x); | |
67 GREATEST_ASSERT_EQ(0, map.tileset->tiledefs[0].y); | |
68 GREATEST_ASSERT_EQ(56, map.tileset->tiledefs[0].w); | |
69 GREATEST_ASSERT_EQ(40, map.tileset->tiledefs[0].h); | |
70 | |
71 GREATEST_ASSERT_EQ(130, map.tileset->tiledefs[1].id); | |
72 GREATEST_ASSERT_EQ(0, map.tileset->tiledefs[1].x); | |
73 GREATEST_ASSERT_EQ(0, map.tileset->tiledefs[1].y); | |
74 GREATEST_ASSERT_EQ(62, map.tileset->tiledefs[1].w); | |
75 GREATEST_ASSERT_EQ(40, map.tileset->tiledefs[1].h); | |
76 | |
77 GREATEST_ASSERT_EQ(132, map.tileset->tiledefs[2].id); | |
78 GREATEST_ASSERT_EQ(0, map.tileset->tiledefs[2].x); | |
79 GREATEST_ASSERT_EQ(0, map.tileset->tiledefs[2].y); | |
80 GREATEST_ASSERT_EQ(64, map.tileset->tiledefs[2].w); | |
81 GREATEST_ASSERT_EQ(40, map.tileset->tiledefs[2].h); | |
82 | |
83 GREATEST_ASSERT_EQ(133, map.tileset->tiledefs[3].id); | |
84 GREATEST_ASSERT_EQ(0, map.tileset->tiledefs[3].x); | |
85 GREATEST_ASSERT_EQ(0, map.tileset->tiledefs[3].y); | |
86 GREATEST_ASSERT_EQ(58, map.tileset->tiledefs[3].w); | |
87 GREATEST_ASSERT_EQ(40, map.tileset->tiledefs[3].h); | |
62 | 88 |
63 map_finish(&map); | 89 map_finish(&map); |
64 map_file_finish(&loader); | 90 map_file_finish(&loader); |
65 | 91 |
66 GREATEST_PASS(); | 92 GREATEST_PASS(); |
70 test_error_title(void) | 96 test_error_title(void) |
71 { | 97 { |
72 struct map_file loader = {0}; | 98 struct map_file loader = {0}; |
73 struct map map = {0}; | 99 struct map map = {0}; |
74 | 100 |
75 GREATEST_ASSERT(!map_file_open(&loader, DIRECTORY "error-title.map", &map)); | 101 GREATEST_ASSERT(!map_file_open(&loader, &map, DIRECTORY "error-title.map")); |
76 | 102 |
77 map_finish(&map); | 103 map_finish(&map); |
78 map_file_finish(&loader); | 104 map_file_finish(&loader); |
79 | 105 |
80 GREATEST_PASS(); | 106 GREATEST_PASS(); |
81 } | 107 } |
82 | 108 |
83 GREATEST_TEST | 109 GREATEST_TEST |
84 test_error_width(void) | 110 test_error_columns(void) |
85 { | 111 { |
86 struct map_file loader = {0}; | 112 struct map_file loader = {0}; |
87 struct map map = {0}; | 113 struct map map = {0}; |
88 | 114 |
89 GREATEST_ASSERT(!map_file_open(&loader, DIRECTORY "error-width.map", &map)); | 115 GREATEST_ASSERT(!map_file_open(&loader, &map, DIRECTORY "error-columns.map")); |
90 | 116 |
91 map_finish(&map); | 117 map_finish(&map); |
92 map_file_finish(&loader); | 118 map_file_finish(&loader); |
93 | 119 |
94 GREATEST_PASS(); | 120 GREATEST_PASS(); |
95 } | 121 } |
96 | 122 |
97 GREATEST_TEST | 123 GREATEST_TEST |
98 test_error_height(void) | 124 test_error_rows(void) |
99 { | 125 { |
100 struct map_file loader = {0}; | 126 struct map_file loader = {0}; |
101 struct map map = {0}; | 127 struct map map = {0}; |
102 | 128 |
103 GREATEST_ASSERT(!map_file_open(&loader, DIRECTORY "error-height.map", &map)); | 129 GREATEST_ASSERT(!map_file_open(&loader, &map, DIRECTORY "error-rows.map")); |
104 | 130 |
105 map_finish(&map); | 131 map_finish(&map); |
106 map_file_finish(&loader); | 132 map_file_finish(&loader); |
107 | 133 |
108 GREATEST_PASS(); | 134 GREATEST_PASS(); |
109 } | 135 } |
110 | 136 |
111 GREATEST_TEST | 137 GREATEST_SUITE(suite_basics) |
112 test_error_tilewidth(void) | |
113 { | 138 { |
114 struct map_file loader = {0}; | 139 GREATEST_RUN_TEST(test_basics_sample); |
115 struct map map = {0}; | |
116 | |
117 GREATEST_ASSERT(!map_file_open(&loader, DIRECTORY "error-tilewidth.map", &map)); | |
118 | |
119 map_finish(&map); | |
120 map_file_finish(&loader); | |
121 | |
122 GREATEST_PASS(); | |
123 } | 140 } |
124 | 141 |
125 GREATEST_TEST | 142 GREATEST_SUITE(suite_errors) |
126 test_error_tileheight(void) | |
127 { | |
128 struct map_file loader = {0}; | |
129 struct map map = {0}; | |
130 | |
131 GREATEST_ASSERT(!map_file_open(&loader, DIRECTORY "error-tileheight.map", &map)); | |
132 | |
133 map_finish(&map); | |
134 map_file_finish(&loader); | |
135 | |
136 GREATEST_PASS(); | |
137 } | |
138 | |
139 GREATEST_SUITE(basics) | |
140 { | |
141 GREATEST_RUN_TEST(test_sample); | |
142 } | |
143 | |
144 GREATEST_SUITE(errors) | |
145 { | 143 { |
146 GREATEST_RUN_TEST(test_error_title); | 144 GREATEST_RUN_TEST(test_error_title); |
147 GREATEST_RUN_TEST(test_error_width); | 145 GREATEST_RUN_TEST(test_error_columns); |
148 GREATEST_RUN_TEST(test_error_height); | 146 GREATEST_RUN_TEST(test_error_rows); |
149 GREATEST_RUN_TEST(test_error_tilewidth); | |
150 GREATEST_RUN_TEST(test_error_tileheight); | |
151 } | 147 } |
152 | 148 |
153 GREATEST_MAIN_DEFS(); | 149 GREATEST_MAIN_DEFS(); |
154 | 150 |
155 int | 151 int |
162 * window and all of the API. As tests sometime run on headless machine | 158 * window and all of the API. As tests sometime run on headless machine |
163 * we will skip if it fails to initialize. | 159 * we will skip if it fails to initialize. |
164 */ | 160 */ |
165 | 161 |
166 if (core_init() && window_open("test-map", 100, 100)) { | 162 if (core_init() && window_open("test-map", 100, 100)) { |
167 GREATEST_RUN_SUITE(basics); | 163 GREATEST_RUN_SUITE(suite_basics); |
168 GREATEST_RUN_SUITE(errors); | 164 GREATEST_RUN_SUITE(suite_errors); |
169 } | 165 } |
170 | 166 |
171 GREATEST_MAIN_END(); | 167 GREATEST_MAIN_END(); |
172 | 168 |
173 return 0; | 169 return 0; |