251 lines
8.8 KiB
C++
251 lines
8.8 KiB
C++
|
||
#include "stdafx.h"
|
||
#include "./boost/scoped_ptr.hpp"
|
||
#include "DNGameRoom.h"
|
||
#include "DnPlayerActor.h"
|
||
#include "TDnPlayerWarrior.h"
|
||
|
||
// --gtest_filter=PlayerState_unittest.*
|
||
|
||
#if !defined( _FINAL_BUILD ) && !defined (__COVERITY__)
|
||
|
||
class PlayerState_unittest:public testing::Test
|
||
{
|
||
protected:
|
||
|
||
virtual void SetUp()
|
||
{
|
||
MAGAReqRoomID Packet;
|
||
memset( &Packet, 0, sizeof(Packet) );
|
||
m_pRoom = new CDNGameRoom( NULL, 0, &Packet );
|
||
m_pPlayerActor = (new TDnPlayerWarrior<CDnPlayerActor>( m_pRoom, 1 ) );
|
||
m_pPlayerActor->InitializeRoom(m_pRoom);
|
||
m_pPlayerActor->SetJobHistory(1);
|
||
m_pPlayerActor->SetLevel(50);
|
||
m_pPlayerActor->RefreshState();
|
||
}
|
||
|
||
virtual void TearDown()
|
||
{
|
||
SAFE_DELETE(m_pPlayerActor);
|
||
SAFE_DELETE(m_pRoom);
|
||
}
|
||
|
||
static void SetUpTestCase()
|
||
{
|
||
m_pResMng = new CEtResourceMng( false, true );
|
||
EXPECT_TRUE( m_pResMng->AddResourcePath( "r:\\gameres\\resource\\ext" ) );
|
||
|
||
m_pTableDB = new CDnTableDB();
|
||
EXPECT_TRUE( m_pTableDB->Initialize() );
|
||
}
|
||
|
||
static void TearDownTestCase()
|
||
{
|
||
SAFE_DELETE(m_pTableDB);
|
||
SAFE_DELETE(m_pResMng);
|
||
}
|
||
|
||
CDNGameRoom *m_pRoom;
|
||
CDnPlayerActor *m_pPlayerActor;
|
||
|
||
static CEtResourceMng* m_pResMng;
|
||
static CDnTableDB* m_pTableDB;
|
||
|
||
};
|
||
|
||
CEtResourceMng* PlayerState_unittest::m_pResMng = NULL;
|
||
CDnTableDB* PlayerState_unittest::m_pTableDB = NULL;
|
||
|
||
#define USE_POST_UPGRADE_PLAYERSTATUS_VERSION
|
||
|
||
TEST_F( PlayerState_unittest, Test_AttackP )
|
||
{
|
||
int nOriginalAttackMin = m_pPlayerActor->GetAttackPMin();
|
||
int nOriginalAttackMax = m_pPlayerActor->GetAttackPMax();
|
||
|
||
CDnState *pEquipStateAbsolute = new CDnState;
|
||
pEquipStateAbsolute->ResetState();
|
||
pEquipStateAbsolute->SetAttackPMin(100);
|
||
pEquipStateAbsolute->SetAttackPMax(100);
|
||
pEquipStateAbsolute->CalcValueType();
|
||
|
||
#ifdef USE_POST_UPGRADE_PLAYERSTATUS_VERSION
|
||
m_pPlayerActor->AddBlowState( pEquipStateAbsolute , CDnActorState::Equip_Buff_Level , false );
|
||
#else
|
||
m_pPlayerActor->AddBlowState( pEquipStateAbsolute , CDnActorState::Equip_Buff_Level , false , false );
|
||
#endif
|
||
|
||
CDnState *pEquipStateRatio = new CDnState;
|
||
pEquipStateRatio->ResetState();
|
||
pEquipStateRatio->SetAttackPMinRatio(0.2f);
|
||
pEquipStateRatio->SetAttackPMaxRatio(0.2f);
|
||
pEquipStateRatio->CalcValueType();
|
||
|
||
#ifdef USE_POST_UPGRADE_PLAYERSTATUS_VERSION
|
||
m_pPlayerActor->AddBlowState( pEquipStateRatio , CDnActorState::Equip_Buff_Level , false );
|
||
#else
|
||
m_pPlayerActor->AddBlowState( pEquipStateRatio , CDnActorState::Equip_Buff_Level , false , false );
|
||
#endif
|
||
|
||
|
||
CDnState *pBuffStateAbsolute = new CDnState;
|
||
pBuffStateAbsolute->ResetState();
|
||
pBuffStateAbsolute->SetAttackPMin(100);
|
||
pBuffStateAbsolute->SetAttackPMax(100);
|
||
pBuffStateAbsolute->CalcValueType();
|
||
|
||
#ifdef USE_POST_UPGRADE_PLAYERSTATUS_VERSION
|
||
m_pPlayerActor->AddBlowState( pBuffStateAbsolute , CDnActorState::Equip_Buff_Level , true );
|
||
#else
|
||
m_pPlayerActor->AddBlowState( pBuffStateAbsolute , CDnActorState::Equip_Buff_Level , true , true );
|
||
#endif
|
||
|
||
CDnState *pBuffStateRatio = new CDnState;
|
||
pBuffStateRatio->ResetState();
|
||
pBuffStateRatio->SetAttackPMinRatio(-0.2f);
|
||
pBuffStateRatio->SetAttackPMaxRatio(-0.2f);
|
||
pBuffStateRatio->CalcValueType();
|
||
|
||
#ifdef USE_POST_UPGRADE_PLAYERSTATUS_VERSION
|
||
m_pPlayerActor->AddBlowState( pBuffStateRatio , CDnActorState::Equip_Buff_Level , true );
|
||
#else
|
||
m_pPlayerActor->AddBlowState( pBuffStateRatio , CDnActorState::Equip_Buff_Level , true , true );
|
||
#endif
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD> GetUseRegulation() <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE>ϴµ<CFB4> <20><EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ӷ뿡<D3B7><EBBFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ũ<EFBFBD><C5A9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ؾ<EFBFBD><D8BE>ϴµ<CFB4>
|
||
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ʹ<EFBFBD> <20><><EFBFBD>Ƽ<EFBFBD> <20><> <20><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD>ϽǶ<CFBD><C7B6><EFBFBD> <20>ش<EFBFBD><D8B4>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ°<CFB4> <20><> <20><><EFBFBD>Ұ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
|
||
// GetUseRegulation() <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> { return <20><><EFBFBD>ϴ°<CFB4>; } <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><EFBFBD>Ʈ <20>ϼ<EFBFBD><CFBC><EFBFBD>
|
||
|
||
m_pPlayerActor->RefreshState( CDnPlayerState::RefreshAll , CDnPlayerState::ST_AttackP );
|
||
|
||
int nMinAttackP = m_pPlayerActor->GetAttackPMin();
|
||
int nMaxAttackP = m_pPlayerActor->GetAttackPMax();
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = <20><><EFBFBD>̽<EFBFBD> <20><>(<28><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD> <20><>) +<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѽ<EFBFBD> <20><><EFBFBD><EFBFBD>) + ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ) + <20><>ų <20><><EFBFBD>갪
|
||
|
||
|
||
int nBaseValue = nOriginalAttackMin;
|
||
int nEquipLevel = ( nBaseValue + 100 ) + (int)( (nBaseValue + 100) * 0.2f ); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
int nBuffLevel = ( nEquipLevel + 100 ) + (int)( (nEquipLevel + 100) * -0.2f );
|
||
|
||
EXPECT_TRUE(nMinAttackP == nBuffLevel);
|
||
|
||
nBaseValue = nOriginalAttackMax;
|
||
nEquipLevel = ( nBaseValue + 100 ) + (int)( (nBaseValue + 100) * 0.2f ); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
nBuffLevel = ( nEquipLevel + 100 ) + (int)( (nEquipLevel + 100) * -0.2f );
|
||
|
||
EXPECT_TRUE(nMaxAttackP == nBuffLevel);
|
||
}
|
||
|
||
TEST_F( PlayerState_unittest, Test_Strength )
|
||
{
|
||
int nOriginalStrength = m_pPlayerActor->GetStrength();
|
||
|
||
CDnState *pEquipStateAbsolute = new CDnState;
|
||
pEquipStateAbsolute->ResetState();
|
||
pEquipStateAbsolute->SetStrength(100);
|
||
pEquipStateAbsolute->CalcValueType();
|
||
|
||
#ifdef USE_POST_UPGRADE_PLAYERSTATUS_VERSION
|
||
m_pPlayerActor->AddBlowState( pEquipStateAbsolute , CDnActorState::Equip_Buff_Level , false );
|
||
#else
|
||
m_pPlayerActor->AddBlowState( pEquipStateAbsolute , CDnActorState::Equip_Buff_Level , false , false );
|
||
#endif
|
||
|
||
CDnState *pEquipStateRatio = new CDnState;
|
||
pEquipStateRatio->ResetState();
|
||
pEquipStateRatio->SetStrengthRatio(0.2f);
|
||
pEquipStateRatio->CalcValueType();
|
||
|
||
#ifdef USE_POST_UPGRADE_PLAYERSTATUS_VERSION
|
||
m_pPlayerActor->AddBlowState( pEquipStateRatio , CDnActorState::Equip_Buff_Level , false );
|
||
#else
|
||
m_pPlayerActor->AddBlowState( pEquipStateRatio , CDnActorState::Equip_Buff_Level , false , false );
|
||
#endif
|
||
|
||
|
||
CDnState *pBuffStateAbsolute = new CDnState;
|
||
pBuffStateAbsolute->ResetState();
|
||
pBuffStateAbsolute->SetStrength(100);
|
||
pBuffStateAbsolute->CalcValueType();
|
||
|
||
#ifdef USE_POST_UPGRADE_PLAYERSTATUS_VERSION
|
||
m_pPlayerActor->AddBlowState( pBuffStateAbsolute , CDnActorState::Equip_Buff_Level , true );
|
||
#else
|
||
m_pPlayerActor->AddBlowState( pBuffStateAbsolute , CDnActorState::Equip_Buff_Level , true , true );
|
||
#endif
|
||
|
||
CDnState *pBuffStateRatio = new CDnState;
|
||
pBuffStateRatio->ResetState();
|
||
pBuffStateRatio->SetStrengthRatio(-0.2f);
|
||
pBuffStateRatio->CalcValueType();
|
||
|
||
#ifdef USE_POST_UPGRADE_PLAYERSTATUS_VERSION
|
||
m_pPlayerActor->AddBlowState( pBuffStateRatio , CDnActorState::Equip_Buff_Level , true );
|
||
#else
|
||
m_pPlayerActor->AddBlowState( pBuffStateRatio , CDnActorState::Equip_Buff_Level , true , true );
|
||
#endif
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD> GetUseRegulation() <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE>ϴµ<CFB4> <20><EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ӷ뿡<D3B7><EBBFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ũ<EFBFBD><C5A9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ؾ<EFBFBD><D8BE>ϴµ<CFB4>
|
||
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ʹ<EFBFBD> <20><><EFBFBD>Ƽ<EFBFBD> <20><> <20><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD>ϽǶ<CFBD><C7B6><EFBFBD> <20>ش<EFBFBD><D8B4>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ°<CFB4> <20><> <20><><EFBFBD>Ұ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
|
||
// GetUseRegulation() <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> { return <20><><EFBFBD>ϴ°<CFB4>; } <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><EFBFBD>Ʈ <20>ϼ<EFBFBD><CFBC><EFBFBD>
|
||
|
||
m_pPlayerActor->RefreshState( CDnPlayerState::RefreshAll , CDnPlayerState::ST_Strength );
|
||
|
||
int nFinalValue = m_pPlayerActor->GetStrength();
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = <20><><EFBFBD>̽<EFBFBD> <20><>(<28><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD> <20><>) +<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѽ<EFBFBD> <20><><EFBFBD><EFBFBD>) + ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ) + <20><>ų <20><><EFBFBD>갪
|
||
// <20><>Ţ(#<23>⺻# <20><><EFBFBD><EFBFBD> * <20><><EFBFBD><EFBFBD>) + <20><><EFBFBD><EFBFBD>(#<23><>Ţ# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * <20><><EFBFBD><EFBFBD>)
|
||
|
||
int nBaseValue = nOriginalStrength;
|
||
int nEquipLevel = ( nBaseValue + 100 ) + (int)( (nBaseValue + 100) * 0.2f ); // + <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
int nBuffLevel = ( nEquipLevel + 100 ) + (int)( (nEquipLevel + 100) * -0.2f );
|
||
|
||
EXPECT_TRUE( nFinalValue == nBuffLevel );
|
||
}
|
||
|
||
TEST_F( PlayerState_unittest, Test_ElementAttack )
|
||
{
|
||
float fOriginalElementAttack = m_pPlayerActor->GetElementAttack( CDnState::Fire);
|
||
|
||
CDnState *pEquipStateAbsolute = new CDnState;
|
||
pEquipStateAbsolute->ResetState();
|
||
pEquipStateAbsolute->SetElementAttack( CDnState::Fire ,0.3f );
|
||
pEquipStateAbsolute->CalcValueType();
|
||
|
||
#ifdef USE_POST_UPGRADE_PLAYERSTATUS_VERSION
|
||
m_pPlayerActor->AddBlowState( pEquipStateAbsolute , CDnActorState::Equip_Buff_Level , false );
|
||
#else
|
||
m_pPlayerActor->AddBlowState( pEquipStateAbsolute , CDnActorState::Equip_Buff_Level , false , false );
|
||
#endif
|
||
|
||
CDnState *pBuffStateAbsolute = new CDnState;
|
||
pBuffStateAbsolute->ResetState();
|
||
pBuffStateAbsolute->SetElementAttack( CDnState::Fire , 0.3f );
|
||
pBuffStateAbsolute->CalcValueType();
|
||
|
||
#ifdef USE_POST_UPGRADE_PLAYERSTATUS_VERSION
|
||
m_pPlayerActor->AddBlowState( pBuffStateAbsolute , CDnActorState::Equip_Buff_Level , true );
|
||
#else
|
||
m_pPlayerActor->AddBlowState( pBuffStateAbsolute , CDnActorState::Equip_Buff_Level , true , true );
|
||
#endif
|
||
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD> GetUseRegulation() <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE>ϴµ<CFB4> <20><EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ӷ뿡<D3B7><EBBFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ũ<EFBFBD><C5A9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ؾ<EFBFBD><D8BE>ϴµ<CFB4>
|
||
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ʹ<EFBFBD> <20><><EFBFBD>Ƽ<EFBFBD> <20><> <20><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD>ϽǶ<CFBD><C7B6><EFBFBD> <20>ش<EFBFBD><D8B4>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ°<CFB4> <20><> <20><><EFBFBD>Ұ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
|
||
// GetUseRegulation() <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> { return <20><><EFBFBD>ϴ°<CFB4>; } <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><EFBFBD>Ʈ <20>ϼ<EFBFBD><CFBC><EFBFBD>
|
||
|
||
m_pPlayerActor->RefreshState( CDnPlayerState::RefreshAll , CDnPlayerState::ST_ElementAttack );
|
||
float fFinalValue = m_pPlayerActor->GetElementAttack( CDnState::Fire );
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = <20><><EFBFBD>̽<EFBFBD> <20><>(<28><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD> <20><>) +<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѽ<EFBFBD> <20><><EFBFBD><EFBFBD>) + ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ) + <20><>ų <20><><EFBFBD>갪
|
||
|
||
float fBaseValue = fOriginalElementAttack;
|
||
float fEquipLevel = ( fBaseValue + 0.3f ); // + <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
float fBuffLevel = ( fEquipLevel + 0.3f );
|
||
|
||
EXPECT_TRUE( fFinalValue == fBuffLevel );
|
||
}
|
||
|
||
#endif
|