mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-06 09:09:40 +02:00
Entities redesign and a few ERM features
* Made most Handlers derived from CHandlerBase and moved service API there. * Declared existing Entity APIs. * Added basic script context caching * Started Lua script module * Started Lua spell effect API * Started script state persistence * Started battle info callback binding * CommitPackage removed * Extracted spells::Caster to own header; Expanded Spell API. * implemented !!MC:S, !!FU:E, !!FU:P, !!MA, !!VR:H, !!VR:C * !!BU:C, !!BU:E, !!BU:G, !!BU:M implemented * Allow use of "MC:S@varName@" to declare normal variable (technically v-variable with string key) * Re-enabled VERM macros. * !?GM0 added * !?TM implemented * Added !!MF:N * Started !?OB, !!BM, !!HE, !!OW, !!UN * Added basic support of w-variables * Added support for ERM indirect variables * Made !?FU regular trigger * !!re (ERA loop receiver) implemented * Fixed ERM receivers with zero args.
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
#include "mock/mock_BonusBearer.h"
|
||||
#include "mock/mock_battle_IBattleState.h"
|
||||
#include "mock/mock_battle_Unit.h"
|
||||
#include "mock/mock_scripting_Pool.h"
|
||||
|
||||
using namespace battle;
|
||||
using namespace testing;
|
||||
@@ -104,8 +105,12 @@ public:
|
||||
class TestSubject : public CBattleInfoCallback
|
||||
{
|
||||
public:
|
||||
TestSubject()
|
||||
: CBattleInfoCallback()
|
||||
|
||||
scripting::Pool * pool;
|
||||
|
||||
TestSubject(scripting::Pool * p)
|
||||
: CBattleInfoCallback(),
|
||||
pool(p)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -113,13 +118,27 @@ public:
|
||||
{
|
||||
CBattleInfoCallback::setBattle(battleInfo);
|
||||
}
|
||||
|
||||
scripting::Pool * getContextPool() const override
|
||||
{
|
||||
return pool;
|
||||
}
|
||||
};
|
||||
|
||||
StrictMock<scripting::PoolMock> pool;
|
||||
|
||||
TestSubject subject;
|
||||
|
||||
BattleStateMock battleMock;
|
||||
UnitsFake unitsFake;
|
||||
|
||||
CBattleInfoCallbackTest()
|
||||
: pool(),
|
||||
subject(&pool)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void startBattle()
|
||||
{
|
||||
subject.setBattle(&battleMock);
|
||||
|
||||
@@ -16,15 +16,13 @@
|
||||
#include "../../lib/battle/CUnitState.h"
|
||||
#include "../../lib/CCreatureHandler.h"
|
||||
|
||||
class UnitStateMagicTest : public testing::Test
|
||||
class UnitStateMagicTest : public ::testing::Test
|
||||
{
|
||||
public:
|
||||
UnitInfoMock infoMock;
|
||||
UnitEnvironmentMock envMock;
|
||||
BonusBearerMock bonusMock;
|
||||
spells::SpellMock spellMock;
|
||||
|
||||
const CCreature * pikeman;
|
||||
::testing::StrictMock<spells::SpellMock> spellMock;
|
||||
|
||||
battle::CUnitStateDetached subject;
|
||||
|
||||
@@ -39,7 +37,6 @@ public:
|
||||
spellMock(),
|
||||
subject(&infoMock, &bonusMock)
|
||||
{
|
||||
pikeman = CreatureID(0).toCreature();
|
||||
}
|
||||
|
||||
void setDefaultExpectations()
|
||||
@@ -197,7 +194,7 @@ TEST_F(UnitStateMagicTest, getOwner)
|
||||
|
||||
EXPECT_CALL(envMock, unitEffectiveOwner(_));
|
||||
|
||||
EXPECT_EQ(subject.getOwner(), otherPlayer);
|
||||
EXPECT_EQ(subject.getCasterOwner(), otherPlayer);
|
||||
}
|
||||
|
||||
TEST_F(UnitStateMagicTest, spendMana)
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
#include "../../lib/battle/CUnitState.h"
|
||||
#include "../../lib/CCreatureHandler.h"
|
||||
|
||||
namespace test
|
||||
{
|
||||
using namespace ::testing;
|
||||
|
||||
static const int32_t DEFAULT_HP = 123;
|
||||
static const int32_t DEFAULT_AMOUNT = 100;
|
||||
static const int32_t DEFAULT_SPEED = 10;
|
||||
@@ -22,7 +26,7 @@ static const BattleHex DEFAULT_POSITION = BattleHex(5, 5);
|
||||
static const int DEFAULT_ATTACK = 58;
|
||||
static const int DEFAULT_DEFENCE = 63;
|
||||
|
||||
class UnitStateTest : public testing::Test
|
||||
class UnitStateTest : public Test
|
||||
{
|
||||
public:
|
||||
UnitInfoMock infoMock;
|
||||
@@ -47,7 +51,6 @@ public:
|
||||
|
||||
void setDefaultExpectations()
|
||||
{
|
||||
using namespace testing;
|
||||
bonusMock.addNewBonus(std::make_shared<Bonus>(Bonus::PERMANENT, Bonus::STACKS_SPEED, Bonus::CREATURE_ABILITY, DEFAULT_SPEED, 0));
|
||||
|
||||
bonusMock.addNewBonus(std::make_shared<Bonus>(Bonus::PERMANENT, Bonus::PRIMARY_SKILL, Bonus::CREATURE_ABILITY, DEFAULT_ATTACK, 0, PrimarySkill::ATTACK));
|
||||
@@ -164,12 +167,12 @@ TEST_F(UnitStateTest, getAttack)
|
||||
EXPECT_EQ(subject.getAttack(true), DEFAULT_ATTACK);
|
||||
}
|
||||
|
||||
TEST_F(UnitStateTest, getDefence)
|
||||
TEST_F(UnitStateTest, getDefense)
|
||||
{
|
||||
setDefaultExpectations();
|
||||
|
||||
EXPECT_EQ(subject.getDefence(false), DEFAULT_DEFENCE);
|
||||
EXPECT_EQ(subject.getDefence(true), DEFAULT_DEFENCE);
|
||||
EXPECT_EQ(subject.getDefense(false), DEFAULT_DEFENCE);
|
||||
EXPECT_EQ(subject.getDefense(true), DEFAULT_DEFENCE);
|
||||
}
|
||||
|
||||
TEST_F(UnitStateTest, attackWithFrenzy)
|
||||
@@ -192,8 +195,8 @@ TEST_F(UnitStateTest, defenceWithFrenzy)
|
||||
|
||||
int expectedDefence = 0;
|
||||
|
||||
EXPECT_EQ(subject.getDefence(false), expectedDefence);
|
||||
EXPECT_EQ(subject.getDefence(true), expectedDefence);
|
||||
EXPECT_EQ(subject.getDefense(false), expectedDefence);
|
||||
EXPECT_EQ(subject.getDefense(true), expectedDefence);
|
||||
}
|
||||
|
||||
TEST_F(UnitStateTest, additionalAttack)
|
||||
@@ -239,3 +242,37 @@ TEST_F(UnitStateTest, additionalRangedAttack)
|
||||
EXPECT_EQ(subject.getTotalAttacks(false), 1);
|
||||
EXPECT_EQ(subject.getTotalAttacks(true), 42);
|
||||
}
|
||||
|
||||
TEST_F(UnitStateTest, getMinDamage)
|
||||
{
|
||||
setDefaultExpectations();
|
||||
|
||||
{
|
||||
auto bonus = std::make_shared<Bonus>(Bonus::PERMANENT, Bonus::CREATURE_DAMAGE, Bonus::SPELL_EFFECT, 30, 0, 0);
|
||||
bonusMock.addNewBonus(bonus);
|
||||
|
||||
bonus = std::make_shared<Bonus>(Bonus::PERMANENT, Bonus::CREATURE_DAMAGE, Bonus::SPELL_EFFECT, -20, 0, 1);
|
||||
bonusMock.addNewBonus(bonus);
|
||||
}
|
||||
|
||||
EXPECT_EQ(subject.getMinDamage(false), 10);
|
||||
EXPECT_EQ(subject.getMinDamage(true), 10);
|
||||
}
|
||||
|
||||
TEST_F(UnitStateTest, getMaxDamage)
|
||||
{
|
||||
setDefaultExpectations();
|
||||
|
||||
{
|
||||
auto bonus = std::make_shared<Bonus>(Bonus::PERMANENT, Bonus::CREATURE_DAMAGE, Bonus::SPELL_EFFECT, 30, 0, 0);
|
||||
bonusMock.addNewBonus(bonus);
|
||||
|
||||
bonus = std::make_shared<Bonus>(Bonus::PERMANENT, Bonus::CREATURE_DAMAGE, Bonus::SPELL_EFFECT, -20, 0, 2);
|
||||
bonusMock.addNewBonus(bonus);
|
||||
}
|
||||
|
||||
EXPECT_EQ(subject.getMaxDamage(false), 10);
|
||||
EXPECT_EQ(subject.getMaxDamage(true), 10);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user