Mercurial > molko
annotate tests/test-map.c @ 97:58133933ea17
window: expose some data to avoid functions
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 30 Mar 2020 20:10:00 +0200 |
parents | 04011a942e3b |
children | c7e993455985 |
rev | line source |
---|---|
42
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * test-map.c -- test map routines |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr> |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <greatest.h> |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 #include <error.h> |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #include <map.h> |
96 | 23 #include <panic.h> |
42
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 #include <sys.h> |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 #include <window.h> |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 static void |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 setup(void *data) |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 { |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 (void)data; |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 if (!sys_init()) |
95
e82eca4f8606
core: simplify error/panic routines
David Demelier <markand@malikania.fr>
parents:
42
diff
changeset
|
33 panic(); |
42
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 if (!window_init("Test map", 100, 100)) |
95
e82eca4f8606
core: simplify error/panic routines
David Demelier <markand@malikania.fr>
parents:
42
diff
changeset
|
35 panic(); |
42
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 } |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 static void |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 teardown(void *data) |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 { |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 (void)data; |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 |
97
58133933ea17
window: expose some data to avoid functions
David Demelier <markand@malikania.fr>
parents:
96
diff
changeset
|
43 window_finish(); |
58133933ea17
window: expose some data to avoid functions
David Demelier <markand@malikania.fr>
parents:
96
diff
changeset
|
44 sys_finish(); |
42
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 } |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 TEST |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 sample(void) |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 { |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 struct map map; |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 ASSERT(map_open(&map, sys_datapath("maps/sample-map.map"))); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 ASSERT_STR_EQ("This is a test map", map.title); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 ASSERT_EQ(2, map.width); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 ASSERT_EQ(2, map.height); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 ASSERT_EQ(32, map.tilewidth); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 ASSERT_EQ(16, map.tileheight); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 ASSERT_EQ(0, map.layers[0].tiles[0]); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 ASSERT_EQ(1, map.layers[0].tiles[1]); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 ASSERT_EQ(2, map.layers[0].tiles[2]); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 ASSERT_EQ(3, map.layers[0].tiles[3]); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 ASSERT_EQ(4, map.layers[1].tiles[0]); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 ASSERT_EQ(5, map.layers[1].tiles[1]); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 ASSERT_EQ(6, map.layers[1].tiles[2]); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 ASSERT_EQ(7, map.layers[1].tiles[3]); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 PASS(); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 } |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 TEST |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 error_title(void) |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 { |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 struct map map; |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 ASSERT(!map_open(&map, sys_datapath("maps/error-title.map"))); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 PASS(); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 } |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 TEST |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 error_width(void) |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 { |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 struct map map; |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 ASSERT(!map_open(&map, sys_datapath("maps/error-width.map"))); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 PASS(); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 } |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 TEST |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 error_height(void) |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 { |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 struct map map; |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 ASSERT(!map_open(&map, sys_datapath("maps/error-height.map"))); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 PASS(); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 } |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 TEST |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 error_tilewidth(void) |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 { |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 struct map map; |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 ASSERT(!map_open(&map, sys_datapath("maps/error-tilewidth.map"))); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 PASS(); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 } |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 TEST |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 error_tileheight(void) |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 { |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 struct map map; |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 ASSERT(!map_open(&map, sys_datapath("maps/error-tileheight.map"))); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 PASS(); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 } |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 SUITE(basics) |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 { |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 SET_SETUP(setup, NULL); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 SET_TEARDOWN(teardown, NULL); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 RUN_TEST(sample); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 } |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 SUITE(errors) |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 { |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 SET_SETUP(setup, NULL); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 SET_TEARDOWN(teardown, NULL); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 RUN_TEST(error_title); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 RUN_TEST(error_width); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 RUN_TEST(error_height); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 RUN_TEST(error_tilewidth); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
129 RUN_TEST(error_tileheight); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 } |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 GREATEST_MAIN_DEFS(); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
133 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 int |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
135 main(int argc, char **argv) |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
136 { |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 GREATEST_MAIN_BEGIN(); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
138 RUN_SUITE(basics); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
139 RUN_SUITE(errors); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
140 GREATEST_MAIN_END(); |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 return 0; |
22a09a5ee476
core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
143 } |