34 size_t len =
rndm(5,
MIN(max_length,
sizeof(
buf) - 1));
36 for (
size_t c = 0;
c < len;
c++) {
46 writer.
write(asset, sb);
52 loader.
load(br,
"dummy");
68 if (
rndm(0, 5 - depth) != 0) {
71 if (!single &&
rndm(0, 2) == 0) {
74 if (!single &&
rndm(0, 2) == 0) {
83 bool single =
rndm(0, 1) == 0;
88 list->total_chance += i->chance;
96 if (left ==
nullptr) {
97 fail_unless(right ==
nullptr,
"left treasure == null but right treasure != null");
100 fail_unless(right !=
nullptr,
"left treasure != null but right treasure == null");
103 fail_unless(left->
nrof == right->
nrof,
"different nrof %d %d", left->
nrof, right->
nrof);
108 if (left ==
nullptr) {
109 fail_unless(right ==
nullptr,
"left list == null but right list != null");
112 fail_unless(right !=
nullptr,
"left list != null but right list == null");
113 fail_unless(strcmp(left->
name, right->
name) == 0,
"left list name %s != right list name %s", left->
name, right->
name);
114 fail_unless(
equal(left->
items, right->
items),
"left list items != right list items");
129 auto loaded = trs.
find(generated->name);
130 fail_unless(loaded,
"Treasurelist should have been loaded!");
131 fail_unless(
equal(generated, loaded),
"loaded treasurelist isn't the same as generated one");
133 trs.
define(generated->name, generated);
144 anim->faces =
static_cast<const Face **
>(calloc(
anim->num_animations,
sizeof(
const Face *)));
145 for (uint8_t f = 0; f <
anim->num_animations; f++) {
162 fail_unless(loaded,
"face should have been loaded");
163 ck_assert_str_eq(
anim->name, loaded->name);
164 ck_assert_int_eq(
anim->num_animations, loaded->num_animations);
165 for (uint8_t f = 0; f <
anim->num_animations; f++) {
166 ck_assert_str_eq(
anim->faces[f]->name, loaded->faces[f]->name);
168 ck_assert_int_eq(
anim->facings, loaded->facings);
177 Face *face =
static_cast<Face *
>(calloc(1,
sizeof(
Face)));
179 if (
rndm(0, 10) == 0) {
185 if (
rndm(0, 3) == 0) {
189 if (
rndm(0, 3) == 0) {
205 ck_assert_int_eq(face->
magicmap, loaded->magicmap);
206 ck_assert_int_eq(face->
visibility, loaded->visibility);
208 ck_assert(loaded->smoothface);
209 ck_assert_str_eq(face->
smoothface->
name, loaded->smoothface->name);
211 ck_assert(loaded->smoothface ==
nullptr);
223 if (
rndm(0, 3) == 0) {
226 }
else if (
rndm(0, 2) == 0) {
227 c->minstep =
rndm(4, 15);
228 c->maxstep =
c->minstep;
229 }
else if (
rndm(0, 1)) {
230 c->maxstep =
rndm(4, 15);
232 c->minstep =
rndm(0, 14);
233 c->maxstep =
c->minstep +
rndm(1, 10);
241 s->step =
rndm(1, 50);
243 for (
int i =
rndm(0, 2); i != 0; i--) {
245 c->next = s->conditions;
255 q->quest_is_system =
rndm(0, 1);
256 q->quest_restart =
rndm(0, 1);
265 q->face =
faces.get(
"quest_generic.111");
267 for (
int i =
rndm(0, 5); i != 0; i--) {
277 ck_assert(rc ==
nullptr);
289 ck_assert(rs ==
nullptr);
298 ck_assert_int_eq(ls->
step, rs->
step);
314 ck_assert_str_eq(
quest->quest_description, loaded->quest_description);
315 ck_assert_str_eq(
quest->quest_title, loaded->quest_title);
316 if (
quest->quest_comment)
317 ck_assert_str_eq(
quest->quest_comment, loaded->quest_comment);
319 ck_assert(loaded->quest_comment ==
nullptr);
320 ck_assert_int_eq(
quest->quest_restart, loaded->quest_restart);
321 ck_assert_int_eq(
quest->quest_is_system, loaded->quest_is_system);
322 ck_assert(
quest->face == loaded->face);
323 ck_assert(
quest->parent == loaded->parent);
333 Suite *s = suite_create(
"asset_load_write");
334 TCase *tc_core = tcase_create(
"Core");
339 suite_add_tcase(s, tc_core);
340 tcase_add_loop_test(tc_core, test_treasure, 0, 25);
341 tcase_add_loop_test(tc_core, test_animation, 0, 25);
342 tcase_add_loop_test(tc_core, test_face, 0, 25);
343 tcase_add_loop_test(tc_core, test_quest, 0, 25);
351 SRunner *sr = srunner_create(s);
353 srunner_set_xml(sr, LOGDIR
"/unit/common/asset_load_write.xml");
354 srunner_set_log(sr, LOGDIR
"/unit/common/asset_load_write.out");
355 srunner_set_fork_status(sr, CK_NOFORK);
356 srunner_run_all(sr, CK_ENV);
357 nf = srunner_ntests_failed(sr);
359 return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;