From b68e2a983e70ba0a52f12bfe826bb44b92cfcbac Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sun, 22 Feb 2015 22:31:50 +0100 Subject: [PATCH] added tests to make sure volcanooutbreak and spyreport are no longer empty messages. --- scripts/tests/e3/rules.lua | 23 +++++++++++++++++++++++ src/bind_message.c | 18 ++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/scripts/tests/e3/rules.lua b/scripts/tests/e3/rules.lua index 193551ea9..ca7eec88e 100644 --- a/scripts/tests/e3/rules.lua +++ b/scripts/tests/e3/rules.lua @@ -779,3 +779,26 @@ function test_weightless_silver() u1:add_item("money", 540) assert_equal(1000, u1.weight) end + +function test_spyreport_message() + local r1 = region.create(1, 2, "plain") + local f1 = faction.create("noreply@eressea.de", "human", "de") + local u1 = unit.create(f1, r1, 1) + local u2 = unit.create(f1, r1, 1) + msg = message.create("spyreport") + msg:set_unit("spy", u1) + msg:set_unit("target", u2) + msg:set_string("status", "hodor") + assert_not_equal("", msg:render("de")) + assert_not_equal("", msg:render("en")) +end + +function test_volcanooutbreak_message() + local r1 = region.create(1, 0, "plain") + local r2 = region.create(1, 1, "plain") + msg = message.create("volcanooutbreak") + msg:set_region("regionn", r1) + msg:set_region("regionv", r2) + assert_not_equal("", msg:render("de")) + assert_not_equal("", msg:render("en")) +end diff --git a/src/bind_message.c b/src/bind_message.c index 24439804d..75ff5821b 100644 --- a/src/bind_message.c +++ b/src/bind_message.c @@ -11,7 +11,9 @@ #include /* util includes */ +#include #include +#include /* lua includes */ #include @@ -307,6 +309,21 @@ static int tolua_msg_send_faction(lua_State * L) return 0; } +static int tolua_msg_render(lua_State * L) +{ + lua_message *lmsg = (lua_message *)tolua_tousertype(L, 1, 0); + const char * lname = tolua_tostring(L, 2, 0); + const struct locale * lang = lname ? get_locale(lname) : default_locale; + char name[64]; + + if (lmsg->msg == NULL) { + lmsg->msg = msg_create(lmsg->mtype, lmsg->args); + } + nr_render(lmsg->msg, lang, name, sizeof(name), NULL); + lua_pushstring(L, name); + return 1; +} + void tolua_message_open(lua_State * L) { /* register user types */ @@ -321,6 +338,7 @@ void tolua_message_open(lua_State * L) NULL); tolua_beginmodule(L, TOLUA_CAST "message"); { + tolua_function(L, TOLUA_CAST "render", tolua_msg_render); tolua_function(L, TOLUA_CAST "set", tolua_msg_set); tolua_function(L, TOLUA_CAST "set_unit", tolua_msg_set_unit); tolua_function(L, TOLUA_CAST "set_region", tolua_msg_set_region);