DragonNest/GameCommon/UnitTest/NpcReputation_unittest.cc
2024-12-19 09:48:26 +08:00

306 lines
10 KiB
C++

#include "stdafx.h"
#include "DNUserSession.h"
#include "ReputationSystemRepository.h"
#include "DNGameDataManager.h"
#include "NpcReputationProcessor.h"
#include "EtUIXML.h"
#include "DNAuthManager.h"
#include "ReputationSystemEventHandler.h"
#include "TimeSet.h"
#if !defined( _FINAL_BUILD ) && !defined (__COVERITY__)
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
extern CEtUIXML* g_pUIXML;
class NpcReputation_unittest:public testing::Test
{
protected:
static void SetUpTestCase()
{
// DataManager 생성
g_pUIXML = new CEtUIXML;
CStream *pStream = CEtResourceMng::GetInstance().GetStream( "uistring.xml" );
g_pUIXML->Initialize( pStream, CEtUIXML::idCategory1 );
SAFE_DELETE( pStream );
g_pAuthManager = new CDNAuthManager;
g_pAuthManager->Init();
g_pDataManager = new CDNGameDataManager();
g_pDataManager->LoadItemData();
g_pDataManager->LoadReputeTableData();
g_pDataManager->LoadPresentTableData();
}
static void TearDownTestCase()
{
SAFE_DELETE( g_pDataManager );
SAFE_DELETE( g_pUIXML );
SAFE_DELETE( g_pAuthManager );
}
virtual void SetUp()
{
m_pSession = new CDNUserSession();
m_pReputationSystem = m_pSession->GetReputationSystem();
m_pSession->GetItem()->CreateInvenItem1( 335545346, 1, 0, 0, 0, 0 );
}
virtual void TearDown()
{
delete m_pSession;
}
CDNUserSession* m_pSession;
CReputationSystemRepository* m_pReputationSystem;
};
// 실패하는 TC
TEST_F( NpcReputation_unittest, FAIL_TEST )
{
EXPECT_FALSE( m_pReputationSystem->GetNpcReputation(87,IReputationSystem::NpcFavor) == 1 );
}
// 초기화 TC
TEST_F( NpcReputation_unittest, INIT_TEST )
{
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(87,IReputationSystem::NpcFavor) == 0 );
}
// 기본 함수 TC
TEST_F( NpcReputation_unittest, FUNCTION_TEST )
{
m_pReputationSystem->AddNpcReputation(87,IReputationSystem::NpcFavor,23);
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(87,IReputationSystem::NpcFavor) == 23 );
m_pReputationSystem->AddNpcReputation(87,IReputationSystem::NpcFavor,23);
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(87,IReputationSystem::NpcFavor) == 46 );
m_pReputationSystem->SetNpcReputation(87,IReputationSystem::NpcFavor,23);
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(87,IReputationSystem::NpcFavor) == 23 );
}
// Processor TC
TEST_F( NpcReputation_unittest, PROCESSOR_TEST )
{
CNpcReputationProcessor::Process( m_pSession, 87, IReputationSystem::NpcFavor, 20 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(87,IReputationSystem::NpcFavor) == 20 );
EXPECT_TRUE( m_pReputationSystem->m_CommitReputationSystem.size() == 1 );
}
// Present TC
TEST_F( NpcReputation_unittest, PRESENT_TEST )
{
CNpcReputationProcessor::PresentProcess( m_pSession, 87, 1 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(87,IReputationSystem::NpcFavor) == 10 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(45,IReputationSystem::NpcFavor) == 1 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(92,IReputationSystem::NpcFavor) == 1 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(100,IReputationSystem::NpcFavor) == 1 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(88,IReputationSystem::NpcMalice) == 0 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(91,IReputationSystem::NpcMalice) == 0 );
EXPECT_TRUE( m_pReputationSystem->m_CommitReputationSystem.size() == 6 );
}
// Present TC
TEST_F( NpcReputation_unittest, PRESENT_TEST2 )
{
m_pReputationSystem->SetNpcReputation(87,IReputationSystem::NpcFavor,3 );
m_pReputationSystem->SetNpcReputation(45,IReputationSystem::NpcFavor,4 );
m_pReputationSystem->SetNpcReputation(92,IReputationSystem::NpcFavor,5 );
m_pReputationSystem->SetNpcReputation(100,IReputationSystem::NpcFavor,6 );
m_pReputationSystem->SetNpcReputation(88,IReputationSystem::NpcMalice,10 );
m_pReputationSystem->SetNpcReputation(91,IReputationSystem::NpcMalice,12 );
EXPECT_TRUE( m_pSession->GetItem()->GetInventoryItemCount( 335545346 ) == 1 );
CNpcReputationProcessor::PresentProcess( m_pSession, 87, 1 );
EXPECT_TRUE( m_pSession->GetItem()->GetInventoryItemCount( 335545346 ) == 0 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(87,IReputationSystem::NpcFavor) == 13 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(87,IReputationSystem::NpcMalice) == 0 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(45,IReputationSystem::NpcFavor) == 5 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(45,IReputationSystem::NpcMalice) == 0 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(92,IReputationSystem::NpcFavor) == 6 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(92,IReputationSystem::NpcMalice) == 0 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(100,IReputationSystem::NpcFavor) == 7 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(100,IReputationSystem::NpcMalice) == 0 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(88,IReputationSystem::NpcMalice) == 9 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(88,IReputationSystem::NpcFavor) == 0 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(91,IReputationSystem::NpcMalice) == 11 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(91,IReputationSystem::NpcFavor) == 0 );
}
// MaliceBomb TC
TEST_F( NpcReputation_unittest, MALICEBOMB_TEST )
{
m_pReputationSystem->SetNpcReputation(87,IReputationSystem::NpcFavor,3 );
m_pReputationSystem->SetNpcReputation(87,IReputationSystem::NpcMalice,9000 );
m_pReputationSystem->SetNpcReputation(45,IReputationSystem::NpcFavor,100 );
m_pReputationSystem->SetNpcReputation(92,IReputationSystem::NpcFavor,100 );
m_pReputationSystem->SetNpcReputation(100,IReputationSystem::NpcFavor,100 );
m_pReputationSystem->SetNpcReputation(88,IReputationSystem::NpcFavor,100 );
m_pReputationSystem->SetNpcReputation(91,IReputationSystem::NpcFavor,100 );
m_pReputationSystem->AddNpcReputation(87,IReputationSystem::NpcMalice,10000 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(87,IReputationSystem::NpcFavor) == 0 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(87,IReputationSystem::NpcMalice) == 0 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(45,IReputationSystem::NpcFavor) == 70 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(92,IReputationSystem::NpcFavor) == 70 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(100,IReputationSystem::NpcFavor) == 70 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(88,IReputationSystem::NpcFavor) == 130 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(91,IReputationSystem::NpcFavor) == 130 );
EXPECT_TRUE( m_pReputationSystem->m_CommitReputationSystem.size() == 6 );
}
TEST_F( NpcReputation_unittest, PACKET_TEST )
{
TAGetListNpcFavor pA;
std::vector<TNpcReputation> vReputation;
for( UINT i=0 ; i<40 ; ++i )
vReputation.push_back( TNpcReputation(0,0,0) );
int iAddSendData = 0;
int iSendCount = 0;
do
{
if( vReputation.size()-iSendCount > _countof(pA.ReputationArr) )
{
pA.bLastPage = false;
pA.cCount = _countof(pA.ReputationArr);
}
else
{
pA.bLastPage = true;
pA.cCount = static_cast<BYTE>(vReputation.size()-iSendCount);
}
// 패킷만들기~
for( UINT i=0 ; i<pA.cCount ; ++i )
pA.ReputationArr[i] = vReputation[iSendCount+i];
iSendCount += pA.cCount;
int iSize = sizeof(pA)-sizeof(pA.ReputationArr)+pA.cCount*sizeof(pA.ReputationArr[0]);
++iAddSendData;
} while( iSendCount < static_cast<int>(vReputation.size()) );
EXPECT_TRUE( iAddSendData == 2 );
}
TEST_F( NpcReputation_unittest, PACKET_TEST2 )
{
TAGetListNpcFavor pA;
std::vector<TNpcReputation> vReputation;
for( UINT i=0 ; i<30 ; ++i )
vReputation.push_back( TNpcReputation() );
int iAddSendData = 0;
int iSendCount = 0;
do
{
if( vReputation.size()-iSendCount > _countof(pA.ReputationArr) )
{
pA.bLastPage = false;
pA.cCount = _countof(pA.ReputationArr);
}
else
{
pA.bLastPage = true;
pA.cCount = static_cast<BYTE>(vReputation.size()-iSendCount);
}
// 패킷만들기~
for( UINT i=0 ; i<pA.cCount ; ++i )
pA.ReputationArr[i] = vReputation[iSendCount+i];
iSendCount += pA.cCount;
int iSize = sizeof(pA)-sizeof(pA.ReputationArr)+pA.cCount*sizeof(pA.ReputationArr[0]);
++iAddSendData;
} while( iSendCount < static_cast<int>(vReputation.size()) );
EXPECT_TRUE( iAddSendData == 1 );
}
TEST_F( NpcReputation_unittest, PACKET_TEST3 )
{
TAGetListNpcFavor pA;
std::vector<TNpcReputation> vReputation;
for( UINT i=0 ; i<92 ; ++i )
vReputation.push_back( TNpcReputation() );
int iAddSendData = 0;
int iSendCount = 0;
do
{
if( vReputation.size()-iSendCount > _countof(pA.ReputationArr) )
{
pA.bLastPage = false;
pA.cCount = _countof(pA.ReputationArr);
}
else
{
pA.bLastPage = true;
pA.cCount = static_cast<BYTE>(vReputation.size()-iSendCount);
}
// 패킷만들기~
for( UINT i=0 ; i<pA.cCount ; ++i )
pA.ReputationArr[i] = vReputation[iSendCount+i];
iSendCount += pA.cCount;
int iSize = sizeof(pA)-sizeof(pA.ReputationArr)+pA.cCount*sizeof(pA.ReputationArr[0]);
++iAddSendData;
} while( iSendCount < static_cast<int>(vReputation.size()) );
EXPECT_TRUE( iAddSendData == 4 );
}
TEST_F( NpcReputation_unittest, SEND_TEST )
{
std::vector<TNpcReputation> vTest;
for( UINT i=0 ; i<10 ; ++i )
vTest.push_back( TNpcReputation() );
m_pSession->SendReputationList( vTest );
for( UINT i=0 ; i<20 ; ++i )
vTest.push_back( TNpcReputation() );
m_pSession->SendReputationList( vTest );
for( UINT i=0 ; i<1 ; ++i )
vTest.push_back( TNpcReputation() );
m_pSession->SendReputationList( vTest );
for( UINT i=0 ; i<30 ; ++i )
vTest.push_back( TNpcReputation() );
m_pSession->SendReputationList( vTest );
}
TEST_F( NpcReputation_unittest, CONNECTDATE_TEST )
{
m_pReputationSystem->SetNpcReputation(87,IReputationSystem::NpcFavor,300 );
m_pReputationSystem->SetNpcReputation(87,IReputationSystem::NpcMalice,9000 );
CTimeSet timeSet;
__time64_t tt = timeSet.GetTimeT64_LC();
tt -= ((60*60*24)+(60*60));
m_pReputationSystem->GetEventHandler()->OnConnect(tt,false);
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(87,IReputationSystem::NpcFavor) == 200 );
EXPECT_TRUE( m_pReputationSystem->GetNpcReputation(87,IReputationSystem::NpcMalice) == 8900 );
}
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
#endif // #if !defined( _FINAL_BUILD )