Mercurial > molko
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 } |