#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 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(vReputation.size()-iSendCount); } // ÆÐŶ¸¸µé±â~ for( UINT i=0 ; i(vReputation.size()) ); EXPECT_TRUE( iAddSendData == 2 ); } TEST_F( NpcReputation_unittest, PACKET_TEST2 ) { TAGetListNpcFavor pA; std::vector 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(vReputation.size()-iSendCount); } // ÆÐŶ¸¸µé±â~ for( UINT i=0 ; i(vReputation.size()) ); EXPECT_TRUE( iAddSendData == 1 ); } TEST_F( NpcReputation_unittest, PACKET_TEST3 ) { TAGetListNpcFavor pA; std::vector 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(vReputation.size()-iSendCount); } // ÆÐŶ¸¸µé±â~ for( UINT i=0 ; i(vReputation.size()) ); EXPECT_TRUE( iAddSendData == 4 ); } TEST_F( NpcReputation_unittest, SEND_TEST ) { std::vector 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 )