annotate tests/test-tileset.c @ 313:dbfe05b88627

cmake: bring back for good It's just too complicated to get portability done right using pure GNU make and since we're targeting more OSes than Linux we have to incorporate some portability bits.
author David Demelier <markand@malikania.fr>
date Wed, 22 Sep 2021 07:19:32 +0200
parents 196264679079
children d01e83210ca2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
215
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * test-tileset.c -- test tileset loader
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #define GREATEST_USE_ABBREVS 0
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <greatest.h>
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <core/core.h>
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <core/window.h>
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <rpg/tileset-file.h>
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 #include <rpg/tileset.h>
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 GREATEST_TEST
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 test_basics_sample(void)
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 {
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 struct tileset_file loader = {0};
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 struct tileset tileset;
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 241
diff changeset
34 GREATEST_ASSERT(tileset_file_open(&loader, &tileset, DIRECTORY "sample-tileset.tileset") == 0);
215
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 GREATEST_ASSERT_EQ(64U, tileset.sprite->cellw);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 GREATEST_ASSERT_EQ(32U, tileset.sprite->cellh);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 GREATEST_ASSERT_EQ(4, tileset.tiledefsz);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
39
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 GREATEST_ASSERT_EQ(129, tileset.tiledefs[0].id);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 GREATEST_ASSERT_EQ(8, tileset.tiledefs[0].x);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 GREATEST_ASSERT_EQ(0, tileset.tiledefs[0].y);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 GREATEST_ASSERT_EQ(56, tileset.tiledefs[0].w);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 GREATEST_ASSERT_EQ(40, tileset.tiledefs[0].h);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 GREATEST_ASSERT_EQ(130, tileset.tiledefs[1].id);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 GREATEST_ASSERT_EQ(0, tileset.tiledefs[1].x);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 GREATEST_ASSERT_EQ(0, tileset.tiledefs[1].y);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 GREATEST_ASSERT_EQ(62, tileset.tiledefs[1].w);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 GREATEST_ASSERT_EQ(40, tileset.tiledefs[1].h);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 GREATEST_ASSERT_EQ(132, tileset.tiledefs[2].id);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 GREATEST_ASSERT_EQ(0, tileset.tiledefs[2].x);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 GREATEST_ASSERT_EQ(0, tileset.tiledefs[2].y);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 GREATEST_ASSERT_EQ(64, tileset.tiledefs[2].w);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 GREATEST_ASSERT_EQ(40, tileset.tiledefs[2].h);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 GREATEST_ASSERT_EQ(133, tileset.tiledefs[3].id);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 GREATEST_ASSERT_EQ(0, tileset.tiledefs[3].x);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 GREATEST_ASSERT_EQ(0, tileset.tiledefs[3].y);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 GREATEST_ASSERT_EQ(58, tileset.tiledefs[3].w);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 GREATEST_ASSERT_EQ(40, tileset.tiledefs[3].h);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 tileset_file_finish(&loader);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
65
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 GREATEST_PASS();
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 }
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 GREATEST_SUITE(suite_basics)
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 {
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 GREATEST_RUN_TEST(test_basics_sample);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 }
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
73
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 GREATEST_TEST
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 test_error_tilewidth(void)
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 {
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 struct tileset_file loader = {0};
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 struct tileset tileset = {0};
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
79
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 241
diff changeset
80 GREATEST_ASSERT(tileset_file_open(&loader, &tileset, DIRECTORY "error-tilewidth.tileset") < 0);
215
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 GREATEST_PASS();
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 }
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
83
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 GREATEST_TEST
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 test_error_tileheight(void)
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 {
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 struct tileset_file loader = {0};
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 struct tileset tileset = {0};
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 241
diff changeset
90 GREATEST_ASSERT(tileset_file_open(&loader, &tileset, DIRECTORY "error-tileheight.tileset") < 0);
215
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 GREATEST_PASS();
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 }
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
93
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 GREATEST_TEST
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 test_error_image(void)
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 {
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 struct tileset_file loader = {0};
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 struct tileset tileset = {0};
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 241
diff changeset
100 GREATEST_ASSERT(tileset_file_open(&loader, &tileset, DIRECTORY "error-image.tileset") < 0);
215
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 GREATEST_PASS();
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 }
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
103
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 GREATEST_SUITE(suite_errors)
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 {
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 GREATEST_RUN_TEST(test_error_tilewidth);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 GREATEST_RUN_TEST(test_error_tileheight);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 GREATEST_RUN_TEST(test_error_image);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 }
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
110
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 GREATEST_MAIN_DEFS();
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
112
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 int
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 main(int argc, char **argv)
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 {
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 GREATEST_MAIN_BEGIN();
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
117
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 241
diff changeset
118 if (core_init("fr.malikania", "test") == 0 && window_open("test-tileset", 100, 100)) {
215
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 GREATEST_RUN_SUITE(suite_basics);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 GREATEST_RUN_SUITE(suite_errors);
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 }
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
122
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 GREATEST_MAIN_END();
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
124
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 return 0;
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 }