comparison tests/test-tileset.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
children 76afe639fd72
comparison
equal deleted inserted replaced
214:82fd79d5019e 215:64f24b482722
1 /*
2 * test-tileset.c -- test tileset loader
3 *
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
5 *
6 * Permission to use, copy, modify, and/or distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18
19 #define GREATEST_USE_ABBREVS 0
20 #include <greatest.h>
21
22 #include <core/core.h>
23 #include <core/window.h>
24
25 #include <rpg/tileset-file.h>
26 #include <rpg/tileset.h>
27
28 GREATEST_TEST
29 test_basics_sample(void)
30 {
31 struct tileset_file loader = {0};
32 struct tileset tileset;
33
34 GREATEST_ASSERT(tileset_file_open(&loader, &tileset, DIRECTORY "sample-tileset.tileset"));
35 GREATEST_ASSERT_EQ(64U, tileset.sprite->cellw);
36 GREATEST_ASSERT_EQ(32U, tileset.sprite->cellh);
37
38 GREATEST_ASSERT_EQ(4, tileset.tiledefsz);
39
40 GREATEST_ASSERT_EQ(129, tileset.tiledefs[0].id);
41 GREATEST_ASSERT_EQ(8, tileset.tiledefs[0].x);
42 GREATEST_ASSERT_EQ(0, tileset.tiledefs[0].y);
43 GREATEST_ASSERT_EQ(56, tileset.tiledefs[0].w);
44 GREATEST_ASSERT_EQ(40, tileset.tiledefs[0].h);
45
46 GREATEST_ASSERT_EQ(130, tileset.tiledefs[1].id);
47 GREATEST_ASSERT_EQ(0, tileset.tiledefs[1].x);
48 GREATEST_ASSERT_EQ(0, tileset.tiledefs[1].y);
49 GREATEST_ASSERT_EQ(62, tileset.tiledefs[1].w);
50 GREATEST_ASSERT_EQ(40, tileset.tiledefs[1].h);
51
52 GREATEST_ASSERT_EQ(132, tileset.tiledefs[2].id);
53 GREATEST_ASSERT_EQ(0, tileset.tiledefs[2].x);
54 GREATEST_ASSERT_EQ(0, tileset.tiledefs[2].y);
55 GREATEST_ASSERT_EQ(64, tileset.tiledefs[2].w);
56 GREATEST_ASSERT_EQ(40, tileset.tiledefs[2].h);
57
58 GREATEST_ASSERT_EQ(133, tileset.tiledefs[3].id);
59 GREATEST_ASSERT_EQ(0, tileset.tiledefs[3].x);
60 GREATEST_ASSERT_EQ(0, tileset.tiledefs[3].y);
61 GREATEST_ASSERT_EQ(58, tileset.tiledefs[3].w);
62 GREATEST_ASSERT_EQ(40, tileset.tiledefs[3].h);
63
64 tileset_file_finish(&loader);
65
66 GREATEST_PASS();
67 }
68
69 GREATEST_SUITE(suite_basics)
70 {
71 GREATEST_RUN_TEST(test_basics_sample);
72 }
73
74 GREATEST_TEST
75 test_error_tilewidth(void)
76 {
77 struct tileset_file loader = {0};
78 struct tileset tileset = {0};
79
80 GREATEST_ASSERT(!tileset_file_open(&loader, &tileset, DIRECTORY "error-tilewidth.tileset"));
81 GREATEST_PASS();
82 }
83
84 GREATEST_TEST
85 test_error_tileheight(void)
86 {
87 struct tileset_file loader = {0};
88 struct tileset tileset = {0};
89
90 GREATEST_ASSERT(!tileset_file_open(&loader, &tileset, DIRECTORY "error-tileheight.tileset"));
91 GREATEST_PASS();
92 }
93
94 GREATEST_TEST
95 test_error_image(void)
96 {
97 struct tileset_file loader = {0};
98 struct tileset tileset = {0};
99
100 GREATEST_ASSERT(!tileset_file_open(&loader, &tileset, DIRECTORY "error-image.tileset"));
101 GREATEST_PASS();
102 }
103
104 GREATEST_SUITE(suite_errors)
105 {
106 GREATEST_RUN_TEST(test_error_tilewidth);
107 GREATEST_RUN_TEST(test_error_tileheight);
108 GREATEST_RUN_TEST(test_error_image);
109 }
110
111 GREATEST_MAIN_DEFS();
112
113 int
114 main(int argc, char **argv)
115 {
116 GREATEST_MAIN_BEGIN();
117
118 if (core_init() && window_open("test-tileset", 100, 100)) {
119 GREATEST_RUN_SUITE(suite_basics);
120 GREATEST_RUN_SUITE(suite_errors);
121 }
122
123 GREATEST_MAIN_END();
124
125 return 0;
126 }