diff --git a/src/kernel/curse.test.c b/src/kernel/curse.test.c index 577d6551a..7f8bb4db2 100644 --- a/src/kernel/curse.test.c +++ b/src/kernel/curse.test.c @@ -1,15 +1,27 @@ #include -#include "types.h" -#include "curse.h" +#include #include #include +#include #include #include +#include +#include +#include +#include +#include #include +#include "curse.h" + +#include +#include +#include + #include + static void test_curse(CuTest * tc) { attrib *attrs = NULL; @@ -83,6 +95,58 @@ static void test_bad_dreams(CuTest *tc) { test_cleanup(); } +static void test_memstream(CuTest *tc) { + storage store; + stream out = { 0 }; + char buf[1024]; + int val=0; + + mstream_init(&out); + binstore_init(&store, &out); + store.handle.data = &out; + + WRITE_INT(&store, 999999); + WRITE_TOK(&store, "fortytwo"); + WRITE_INT(&store, 42); + + out.api->rewind(out.handle); + READ_INT(&store, &val); + READ_TOK(&store, buf, 1024); + CuAssertIntEquals(tc, 999999, val); + CuAssertStrEquals(tc, "fortytwo", buf); + READ_INT(&store, &val); + CuAssertIntEquals(tc, 42, val); + mstream_done(&out); +} + +static void test_write_flag(CuTest *tc) { + curse_fixture fix; + storage store; + char buf[1024]; + stream out = { 0 }; + size_t len; + + mstream_init(&out); + binstore_init(&store, &out); + store.handle.data = &out; + + setup_curse(&fix, "gbdream"); + fix.c->flags = 42 | CURSE_ISNEW; + curse_write(fix.r->attribs, fix.r, &store); + out.api->rewind(out.handle); + len = out.api->read(out.handle, buf, sizeof(buf)); + buf[len] = '\0'; + out.api->rewind(out.handle); + curse_read(fix.r->attribs, fix.r, &store); + CuAssertIntEquals(tc, 42 | CURSE_ISNEW, ((curse *) fix.r->attribs->data.v)->flags); + global.data_version = RELEASE_VERSION; + CuAssertIntEquals(tc, RELEASE_VERSION, global.data_version); + + mstream_done(&out); + binstore_done(&store); + test_cleanup(); +} + CuSuite *get_curse_suite(void) { CuSuite *suite = CuSuiteNew(); @@ -91,5 +155,7 @@ CuSuite *get_curse_suite(void) SUITE_ADD_TEST(suite, test_magicstreet_warning); SUITE_ADD_TEST(suite, test_good_dreams); SUITE_ADD_TEST(suite, test_bad_dreams); + SUITE_ADD_TEST(suite, test_memstream); + SUITE_ADD_TEST(suite, test_write_flag); return suite; } diff --git a/src/kernel/save.c b/src/kernel/save.c index 2aaf4f3b9..25169d4af 100644 --- a/src/kernel/save.c +++ b/src/kernel/save.c @@ -1724,6 +1724,7 @@ int writegame(const char *filename) gdata.store = &store; gdata.encoding = enc_gamedata; gdata.version = RELEASE_VERSION; + global.data_version = RELEASE_VERSION; n = STREAM_VERSION; fwrite(&gdata.version, sizeof(int), 1, F); fwrite(&n, sizeof(int), 1, F); diff --git a/src/names.c b/src/names.c index 6681877fd..df2e5e0a6 100644 --- a/src/names.c +++ b/src/names.c @@ -357,7 +357,8 @@ static const char *dracoid_name(const unit * u) static char name[NAMESIZE + 1]; // FIXME: static return value int mid_syllabels; - u = u; + /* ignore u */ + u = 0; /* Wieviele Mittelteile? */ mid_syllabels = rng_int() % 4; diff --git a/storage b/storage index 48768e4be..2bcd3b1e6 160000 --- a/storage +++ b/storage @@ -1 +1 @@ -Subproject commit 48768e4bef7ff28365487e047d3b910127c716d0 +Subproject commit 2bcd3b1e64764321773672333bd133a61b35b840