#include "stdafx.h" #include "DNUserSession.h" #include "DnSkillTreeSystem.h" #if !defined( _FINAL_BUILD ) && !defined (__COVERITY__) extern TVillageConfig g_Config; class SkillTreeSystem_unittest:public testing::Test { public: static CDnSkillTreeSystem* s_pSkillTreeSystem; protected: virtual void SetUp() { } virtual void TearDown() { } static void SetUpTestCase( void ) { s_pSkillTreeSystem = new CDnSkillTreeSystem; s_pSkillTreeSystem->InitializeTable(); } static void TearDownTestCase( void ) { delete s_pSkillTreeSystem; } }; CDnSkillTreeSystem* SkillTreeSystem_unittest::s_pSkillTreeSystem = NULL; // NOTE: ÃßÈÄ¿¡ ½ÇÁ¦ ½ºÅ³Æ®¸® µ¥ÀÌÅͰ¡ µé¾î°¬À» ¶§ ÇØ´ç °ªÀ¸·Î ¹Ù²ãÁÝ´Ï´Ù~ // À߸øµÈ ½ºÅ³ºÏ ¾ÆÀÌÅÛ ID ÀÏ ¶§ ¾ð¶ô Å×½ºÆ®. TEST_F( SkillTreeSystem_unittest, TRY_ACQUIRE_INVALID_SKILLBOOK_ITEMID ) { //vector vlPossessedSkillInfo; //CDnSkillTreeSystem::S_TRY_UNLOCK CurrentSkillInfo( vlPossessedSkillInfo ); CDnSkillTreeSystem::S_TRY_UNLOCK CurrentSkillInfo; CDnSkillTreeSystem::S_OUTPUT Output; CurrentSkillInfo.iCurrentCharLevel = 99; CurrentSkillInfo.iTryUnlockSkillID = 3; CurrentSkillInfo.iSkillBookItemID = 100; CurrentSkillInfo.iJobID = 1; //// ¼±Çà ºÎ¸ð½ºÅ³ 2°³ Ãß°¡. //vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 1, 3, false ) ); //vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 2, 2, false ) ); SkillTreeSystem_unittest::s_pSkillTreeSystem->TryUnLockSkill( CurrentSkillInfo, &Output ); EXPECT_EQ( Output.eErrorCode, CDnSkillTreeSystem::E_NONE ); EXPECT_EQ( Output.eResult, CDnSkillTreeSystem::R_INVALID_SKILLBOOK_ITEMID ); } // Á¦´ë·Î µÈ Á¶°ÇÀÏ ¶§ ½ºÅ³ ¾ð¶ô Å×½ºÆ®. TEST_F( SkillTreeSystem_unittest, UNLOCK_SKILL ) { //vector vlPossessedSkillInfo; //CDnSkillTreeSystem::S_TRY_UNLOCK CurrentSkillInfo( vlPossessedSkillInfo ); CDnSkillTreeSystem::S_TRY_UNLOCK CurrentSkillInfo; CDnSkillTreeSystem::S_OUTPUT Output; CurrentSkillInfo.iCurrentCharLevel = 99; CurrentSkillInfo.iTryUnlockSkillID = 3; CurrentSkillInfo.iSkillBookItemID = 300; CurrentSkillInfo.iJobID = 1; //// ¼±Çà ºÎ¸ð½ºÅ³ 2°³ Ãß°¡. //vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 1, 3, false ) ); //vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 2, 2, false ) ); SkillTreeSystem_unittest::s_pSkillTreeSystem->TryUnLockSkill( CurrentSkillInfo, &Output ); EXPECT_EQ( Output.eErrorCode, CDnSkillTreeSystem::E_NONE ); EXPECT_EQ( Output.eResult, CDnSkillTreeSystem::R_SUCCESS ); } // ¾ø´Â ½ºÅ³(À߸øµÈ ½ºÅ³ ID) ¾ð¶ô Å×½ºÆ®. // Á÷¾÷ÀÌ À߸øµÈ °æ¿ìµµ ÇØ´çµÊ. TEST_F( SkillTreeSystem_unittest, TRY_ACQUIRE_INVALID_SKILLID ) { vector vlPossessedSkillInfo; CDnSkillTreeSystem::S_TRY_ACQUIRE TryAcquire( vlPossessedSkillInfo ); CDnSkillTreeSystem::S_OUTPUT Output; TryAcquire.iCurrentCharLevel = 99; TryAcquire.iTryAcquireSkillID = 999; TryAcquire.iHasSkillPoint = 100; TryAcquire.iJobID = 1; // ¼±Çà ºÎ¸ð½ºÅ³ 2°³ Ãß°¡. vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 1, 3, false ) ); vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 2, 2, false ) ); SkillTreeSystem_unittest::s_pSkillTreeSystem->TryAcquireSkill( TryAcquire, &Output ); EXPECT_EQ( Output.eErrorCode, CDnSkillTreeSystem::E_CANT_FIND_SKILLNODE ); } // ÇÊ¿äÇÑ ºÎ¸ð ½ºÅ³ÀÌ ¾øÀ» ¶§ ¾ð¶ô Å×½ºÆ®. TEST_F( SkillTreeSystem_unittest, TRY_ACQUIRE_DONT_HAVE_PARENTSKILL ) { vector vlPossessedSkillInfo; CDnSkillTreeSystem::S_TRY_ACQUIRE TryAcquire( vlPossessedSkillInfo ); CDnSkillTreeSystem::S_OUTPUT Output; TryAcquire.iCurrentCharLevel = 99; TryAcquire.iTryAcquireSkillID = 3; TryAcquire.iHasSkillPoint = 100; TryAcquire.iJobID = 1; // ¼±Çà ºÎ¸ð½ºÅ³ 1°³¸¸ Ãß°¡. vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 1, 3, false ) ); SkillTreeSystem_unittest::s_pSkillTreeSystem->TryAcquireSkill( TryAcquire, &Output ); EXPECT_EQ( Output.eErrorCode, CDnSkillTreeSystem::E_NONE ); EXPECT_EQ( Output.eResult, CDnSkillTreeSystem::R_DONT_HAVE_PARENT_SKILL ); } // ÇÊ¿äÇÑ ºÎ¸ð ½ºÅ³ÀÇ ¶ôÀÌ Ç®¸®Áö ¾Ê¾ÒÀ» ¶§ ¾ð¶ô Å×½ºÆ®. TEST_F( SkillTreeSystem_unittest, TRY_ACQUIRE_UNLOCKED_PARENTSKILL ) { vector vlPossessedSkillInfo; CDnSkillTreeSystem::S_TRY_ACQUIRE TryAcquire( vlPossessedSkillInfo ); CDnSkillTreeSystem::S_OUTPUT Output; TryAcquire.iCurrentCharLevel = 99; TryAcquire.iTryAcquireSkillID = 3; TryAcquire.iHasSkillPoint = 100; TryAcquire.iJobID = 1; // ¼±Çà ºÎ¸ð½ºÅ³ 2°³ Ãß°¡. vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 1, 3, true ) ); // ¶ô°É¸° »óÅ·Π³Ñ°ÜÁØ´Ù. vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 2, 2, false ) ); SkillTreeSystem_unittest::s_pSkillTreeSystem->TryAcquireSkill( TryAcquire, &Output ); EXPECT_EQ( Output.eErrorCode, CDnSkillTreeSystem::E_NONE ); EXPECT_EQ( Output.eResult, CDnSkillTreeSystem::R_LOCKED_PARENTSKILL ); } // ºÎ¸ð ½ºÅ³ÀÌ ÀÖµÇ ºÎ¸ð ½ºÅ³ ·¹º§ÀÌ ¸ðÀÚ¶ö ¶§ ȹµæ Å×½ºÆ®. TEST_F( SkillTreeSystem_unittest, TRY_ACQUIRE_NOT_ENOUGH_PARENTSKILL_LEVEL ) { vector vlPossessedSkillInfo; CDnSkillTreeSystem::S_TRY_ACQUIRE TryAcquire( vlPossessedSkillInfo ); CDnSkillTreeSystem::S_OUTPUT Output; TryAcquire.iCurrentCharLevel = 99; TryAcquire.iTryAcquireSkillID = 3; TryAcquire.iHasSkillPoint = 100; TryAcquire.iJobID = 1; // ¼±Çà ºÎ¸ð½ºÅ³ 2°³ Ãß°¡. vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 1, 3, false ) ); vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 2, 1, false ) ); // ºÎ¸ð½ºÅ³ ·¹º§ÀÌ ¸ðÀÚ¶ó. SkillTreeSystem_unittest::s_pSkillTreeSystem->TryAcquireSkill( TryAcquire, &Output ); EXPECT_EQ( Output.eErrorCode, CDnSkillTreeSystem::E_NONE ); EXPECT_EQ( Output.eResult, CDnSkillTreeSystem::R_NOT_ENOUGH_PARENT_SKILL_LEVEL ); } // ij¸¯ÅÍ ·¹º§ ¸ðÀÚ¶ö ¶§ ȹµæ Å×½ºÆ®. TEST_F( SkillTreeSystem_unittest, TRY_ACQUIRE_NOT_ENOUGH_CHAR_LEVEL ) { vector vlPossessedSkillInfo; CDnSkillTreeSystem::S_TRY_ACQUIRE TryAcquire( vlPossessedSkillInfo ); CDnSkillTreeSystem::S_OUTPUT Output; TryAcquire.iCurrentCharLevel = 1; TryAcquire.iTryAcquireSkillID = 3; TryAcquire.iHasSkillPoint = 100; TryAcquire.iJobID = 1; // ¼±Çà ºÎ¸ð½ºÅ³ 2°³ Ãß°¡. vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 1, 3, false ) ); vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 2, 2, false ) ); SkillTreeSystem_unittest::s_pSkillTreeSystem->TryAcquireSkill( TryAcquire, &Output ); EXPECT_EQ( Output.eErrorCode, CDnSkillTreeSystem::E_NONE ); EXPECT_EQ( Output.eResult, CDnSkillTreeSystem::R_NOT_ENOUGH_CHAR_LEVEL ); } // ¸ðµç Á¶°Ç °®ÃçÁ³À» ¶§ ½ºÅ³ ¾ð¶ô Å×½ºÆ®. TEST_F( SkillTreeSystem_unittest, TRY_UNLOCK ) { vector vlPossessedSkillInfo; CDnSkillTreeSystem::S_TRY_ACQUIRE TryAcquire( vlPossessedSkillInfo ); CDnSkillTreeSystem::S_OUTPUT Output; TryAcquire.iCurrentCharLevel = 99; TryAcquire.iTryAcquireSkillID = 3; TryAcquire.iHasSkillPoint = 100; TryAcquire.iJobID = 1; // ¼±Çà ºÎ¸ð½ºÅ³ 2°³ Ãß°¡. vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 1, 3, false ) ); vlPossessedSkillInfo.push_back( CDnSkillTreeSystem::S_POSSESSED_SKILL_INFO( 2, 2, false ) ); SkillTreeSystem_unittest::s_pSkillTreeSystem->TryAcquireSkill( TryAcquire, &Output ); EXPECT_EQ( Output.eErrorCode, CDnSkillTreeSystem::E_NONE ); EXPECT_EQ( Output.eResult, CDnSkillTreeSystem::R_SUCCESS ); } // ºÎ¸ð ½ºÅ³ÀÌ ¾ø´Â ½ºÅ³ ¾ð¶ô Å×½ºÆ® TEST_F( SkillTreeSystem_unittest, TRY_DONT_HAVE_PARENT_SKILL_UNLOCK ) { vector vlPossessedSkillInfo; CDnSkillTreeSystem::S_TRY_ACQUIRE TryAcquire( vlPossessedSkillInfo ); CDnSkillTreeSystem::S_OUTPUT Output; TryAcquire.iCurrentCharLevel = 99; TryAcquire.iTryAcquireSkillID = 4; TryAcquire.iHasSkillPoint = 100; TryAcquire.iJobID = 1; SkillTreeSystem_unittest::s_pSkillTreeSystem->TryAcquireSkill( TryAcquire, &Output ); EXPECT_EQ( Output.eErrorCode, CDnSkillTreeSystem::E_NONE ); EXPECT_EQ( Output.eResult, CDnSkillTreeSystem::R_SUCCESS ); } // ½ºÅ³ Æ®¸® Å×ÀÌºí¿¡ Á¤ÀÇµÈ ´ë·Î Æ®¸®°¡ Á¦´ë·Î ·»´õ¸µ µÇµµ·Ï Á¤º¸¸¦ µ¹·ÁÁÖ´ÂÁö Å×½ºÆ®. TEST_F( SkillTreeSystem_unittest, RENDER_TREE ) { int iJobID = 1; int iNodeCount = SkillTreeSystem_unittest::s_pSkillTreeSystem->GetNodeCount( iJobID ); EXPECT_EQ( iNodeCount, 4 ); int iSlotCount = SkillTreeSystem_unittest::s_pSkillTreeSystem->GetSlotCount( iJobID ); EXPECT_EQ( iSlotCount, 32 ); // À߸øµÈ Àâ ¾ÆÀ̵ð ³Ñ°ÜÁáÀ» ¶§, CDnSkillTreeSystem::S_NODE_RENDER_INFO NodeRenderInfo; SkillTreeSystem_unittest::s_pSkillTreeSystem->GetNodeRenderInfo( 0, 2, &NodeRenderInfo ); EXPECT_EQ( NodeRenderInfo.iSkillID, 0 ); // ¼øÂ÷ÀûÀ¸·Î Á¦´ë·Î µÈ °ªÀÌ ³Ñ¾î¿À´ÂÁö È®ÀÎ. SkillTreeSystem_unittest::s_pSkillTreeSystem->GetNodeRenderInfo( 0, iJobID, &NodeRenderInfo ); EXPECT_NE( NodeRenderInfo.iSkillID, 0 ); EXPECT_EQ( NodeRenderInfo.iSlotIndex, 0 ); EXPECT_EQ( NodeRenderInfo.vlChildSlotIndexInJob.front(), 4 ); SkillTreeSystem_unittest::s_pSkillTreeSystem->GetNodeRenderInfo( 1, iJobID, &NodeRenderInfo ); EXPECT_NE( NodeRenderInfo.iSkillID, 0 ); EXPECT_EQ( NodeRenderInfo.iSlotIndex, 1 ); EXPECT_EQ( NodeRenderInfo.vlChildSlotIndexInJob.front(), 4 ); SkillTreeSystem_unittest::s_pSkillTreeSystem->GetNodeRenderInfo( 2, iJobID, &NodeRenderInfo ); EXPECT_EQ( NodeRenderInfo.iSkillID, 0 ); EXPECT_EQ( NodeRenderInfo.iSlotIndex, 0 ); SkillTreeSystem_unittest::s_pSkillTreeSystem->GetNodeRenderInfo( 3, iJobID, &NodeRenderInfo ); EXPECT_EQ( NodeRenderInfo.iSkillID, 0 ); EXPECT_EQ( NodeRenderInfo.iSlotIndex, 0 ); // 2°³ÀÇ ºÎ¸ð°¡ ÀÖ´Â ½ºÅ³. SkillTreeSystem_unittest::s_pSkillTreeSystem->GetNodeRenderInfo( 4, iJobID, &NodeRenderInfo ); EXPECT_EQ( NodeRenderInfo.iSkillID, 3 ); EXPECT_EQ( NodeRenderInfo.iSlotIndex, 4 ); SkillTreeSystem_unittest::s_pSkillTreeSystem->GetNodeRenderInfo( 5, iJobID, &NodeRenderInfo ); EXPECT_EQ( NodeRenderInfo.iSkillID, 0 ); EXPECT_EQ( NodeRenderInfo.iSlotIndex, 0 ); SkillTreeSystem_unittest::s_pSkillTreeSystem->GetNodeRenderInfo( 6, iJobID, &NodeRenderInfo ); EXPECT_EQ( NodeRenderInfo.iSkillID, 4 ); EXPECT_EQ( NodeRenderInfo.iSlotIndex, 6 ); //SkillTreeSystem_unittest::s_pSkillTreeSystem->GetNodeRenderInfo( 7, iJobID, &NodeRenderInfo ); //EXPECT_NE( NodeRenderInfo.iSkillID, 0 ); //EXPECT_EQ( NodeRenderInfo.iSlotIndex, 7 ); } TEST_F( SkillTreeSystem_unittest, FIND_SKILL_BY_SKILLBOOK ) { int iSkillID = SkillTreeSystem_unittest::s_pSkillTreeSystem->FindSkillBySkillBook( 300 ); EXPECT_EQ( iSkillID, 3 ); } // ½ºÅ³ ¸®¼Â Å×½ºÆ®. SP ¸ðµÎ ¹ÝȯµÇ¸ç ¶ô Á¤º¸´Â DB¿¡ À¯Áö µÊ. // ÀüÁ÷½Ã¿¡ ½ºÅ³ ¸®¼ÂµÊ. TEST_F( SkillTreeSystem_unittest, RESET ) { } #endif // #if !defined( _FINAL_BUILD )