From 0aa002a6d2fee1480b9ec408130e4c19e8f7b447 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sun, 4 Jan 2015 13:20:11 +0100 Subject: [PATCH 1/3] =?UTF-8?q?Functional=20test=20for=20bug=201882:=20Ver?= =?UTF-8?q?ify=20that=20COMBAT/FIGHT/K=C3=84MPFE=20have=20the=20desired=20?= =?UTF-8?q?effect.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/tests/e3/init.lua | 1 + scripts/tests/e3/parser.lua | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 scripts/tests/e3/parser.lua diff --git a/scripts/tests/e3/init.lua b/scripts/tests/e3/init.lua index e0bce3a41..fe7d0c223 100644 --- a/scripts/tests/e3/init.lua +++ b/scripts/tests/e3/init.lua @@ -2,3 +2,4 @@ require 'tests.e3.castles' require 'tests.e3.stealth' require 'tests.e3.spells' require 'tests.e3.rules' +require 'tests.e3.parser' diff --git a/scripts/tests/e3/parser.lua b/scripts/tests/e3/parser.lua new file mode 100644 index 000000000..77050277f --- /dev/null +++ b/scripts/tests/e3/parser.lua @@ -0,0 +1,34 @@ +require 'lunit' + +module('tests.e3.parser', package.seeall, lunit.testcase) + +function setup() + eressea.game.reset() +end + +function test_set_status_en() + local r = region.create(0, 0, "plain") + local f = faction.create("bug_1882@eressea.de", "human", "en") + local u = unit.create(f, r, 1) + u.status = 1 + u:clear_orders() + u:add_order("COMBAT AGGRESSIVE") + process_orders() + assert_equal(u.status, 0) + u.status = 1 + u:add_order("FIGHT AGGRESSIVE") + process_orders() + assert_equal(u.status, 0) +end + +function test_set_status_de() + local r = region.create(0, 0, "plain") + local f = faction.create("bug_1882@eressea.de", "human", "de") + local u = unit.create(f, r, 1) + u.status = 1 + u:clear_orders() + u:add_order("KAEMPFE AGGRESSIV") + process_orders() + assert_equal(u.status, 0) +end + From 90dd700487672bc76e4072a5522aa4b44d38b258 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sun, 4 Jan 2015 15:11:49 +0100 Subject: [PATCH 2/3] BREED/PLANT/GROW are technically the same command, merge them. The new parser makes this easy. --- conf/keywords.json | 4 ++-- res/core/en/strings.xml | 6 ------ src/economy.c | 1 - src/kernel/order.c | 3 --- src/keyword.c | 1 - src/keyword.h | 1 - 6 files changed, 2 insertions(+), 14 deletions(-) diff --git a/conf/keywords.json b/conf/keywords.json index 3080a03c4..88ee6c2bd 100644 --- a/conf/keywords.json +++ b/conf/keywords.json @@ -1,6 +1,7 @@ { "keywords": { "en" : { + "grow": [ "GROW", "BREED", "PLANT" ], "combat": [ "COMBAT", "FIGHT" ] }, "de": { @@ -51,7 +52,7 @@ "cast": ["ZAUBERE", "ZAUBERN"], "show": ["ZEIGE", "ZEIGEN"], "destroy": ["ZERSTÖRE", "ZERSTÖREN"], - "grow": ["ZÜCHTE", "ZÜCHTEN"], + "grow": ["ZÜCHTE", "PFLANZE", "ZÜCHTEN", "PFLANZEN"], "default": "DEFAULT", "origin": "URSPRUNG", "email": "EMAIL", @@ -59,7 +60,6 @@ "group": "GRUPPE", "sort": ["SORTIERE", "SORTIEREN"], "prefix": "PRÄFIX", - "plant": ["PFLANZE", "PFLANZEN"], "alliance": "ALLIANZ", "claim": ["BEANSPRUCHE", "BEANSPRUCHEN"], "promote": ["BEFÖRDERE", "BEFÖRDERUNG"], diff --git a/res/core/en/strings.xml b/res/core/en/strings.xml index 71681ec44..e68915f06 100644 --- a/res/core/en/strings.xml +++ b/res/core/en/strings.xml @@ -1496,9 +1496,6 @@ PAY - - PLANT - PIRACY @@ -1568,9 +1565,6 @@ DESTROY - - GROW - loot diff --git a/src/economy.c b/src/economy.c index 4ac4210fe..886f2a210 100644 --- a/src/economy.c +++ b/src/economy.c @@ -3270,7 +3270,6 @@ void produce(struct region *r) sabotage_cmd(u, u->thisorder); break; - case K_PLANT: case K_BREED: breed_cmd(u, u->thisorder); break; diff --git a/src/kernel/order.c b/src/kernel/order.c index 4126c4a03..165769807 100644 --- a/src/kernel/order.c +++ b/src/kernel/order.c @@ -408,7 +408,6 @@ bool is_repeated(const order * ord) case K_TEACH: case K_BREED: case K_PIRACY: - case K_PLANT: case K_MAKE: case K_LOOT: case K_DESTROY: @@ -450,7 +449,6 @@ bool is_exclusive(const order * ord) case K_TEACH: case K_BREED: case K_PIRACY: - case K_PLANT: case K_MAKE: case K_LOOT: case K_DESTROY: @@ -495,7 +493,6 @@ bool is_long(const order * ord) case K_TEACH: case K_BREED: case K_PIRACY: - case K_PLANT: case K_MAKE: case K_LOOT: case K_DESTROY: diff --git a/src/keyword.c b/src/keyword.c index b4b181797..fde981bb9 100644 --- a/src/keyword.c +++ b/src/keyword.c @@ -138,7 +138,6 @@ const char *keywords[MAXKEYWORDS] = { "group", "sort", "prefix", - "plant", "alliance", "claim", "promote", diff --git a/src/keyword.h b/src/keyword.h index 24e47da51..b8094e74d 100644 --- a/src/keyword.h +++ b/src/keyword.h @@ -64,7 +64,6 @@ typedef enum { K_GROUP, K_SORT, K_PREFIX, - K_PLANT, K_ALLIANCE, K_CLAIM, K_PROMOTION, From 3db403d7fd9a9971999154d0652db707ea141797 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sun, 4 Jan 2015 15:42:36 +0100 Subject: [PATCH 3/3] functional test for GROW/BREED horses (Bug 1886) --- scripts/tests/e3/parser.lua | 23 +++++++++++++++++++++++ src/kernel/save.c | 4 ++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/scripts/tests/e3/parser.lua b/scripts/tests/e3/parser.lua index 77050277f..9d957464d 100644 --- a/scripts/tests/e3/parser.lua +++ b/scripts/tests/e3/parser.lua @@ -32,3 +32,26 @@ function test_set_status_de() assert_equal(u.status, 0) end +function test_breed_horses() + local r = region.create(0, 0, "plain") + local f = faction.create("bug_1886@eressea.de", "human", "en") + local u = unit.create(f, r, 1) + local b = building.create(r, "stables") + b.size = 10 + u.building = b + u:add_item("horse", 2) + u:add_item("money", 2000) + u:set_skill("training", 100) -- 100% chance to duplicate each horse + u:clear_orders() + u:add_order("GROW horses") + process_orders() + assert_equal(4, u:get_item("horse")) + u:clear_orders() + u:add_order("BREED horses") + process_orders() + assert_equal(8, u:get_item("horse")) + u:clear_orders() + u:add_order("PLANT horses") + process_orders() + assert_equal(16, u:get_item("horse")) +end diff --git a/src/kernel/save.c b/src/kernel/save.c index ca776aff9..95a85cf3b 100644 --- a/src/kernel/save.c +++ b/src/kernel/save.c @@ -168,8 +168,9 @@ static unit *unitorders(FILE * F, int enc, struct faction *f) if (s[0]) { if (s[0] != '@') { + char token[128]; const char *stok = s; - stok = parse_token_depr(&stok); + stok = parse_token(&stok, token, sizeof(token)); if (stok) { bool quit = false; @@ -192,7 +193,6 @@ static unit *unitorders(FILE * F, int enc, struct faction *f) } break; default: - /* TODO: syntax error message */ break; } if (quit) {