@ -23,7 +23,11 @@
# include "../SeasonI.h"
extern std : : array < Entity * , 7 > PARTY_MEMBER_STATS ;
extern std : : map < BattleMoveName , Battle : : Move * > MOVELIST ;
extern Entity : : pstats_t partyMemberDefaultStats ;
extern std : : map < std : : string , Decal * > SPRITES ;
extern std : : map < std : : string , Animation * > ANIMATIONS ;
extern std : : array < Object * , 4 > PARTY_MEMBER_OBJ ;
extern std : : map < int , Object * > OBJ_INFO ;
int testCount = 0 ;
@ -34,12 +38,56 @@ void Test(std::string name,bool success) {
std : : cout < < " Passed " < < std : : endl ;
} ;
bool SeasonI : : OnUserCreate ( ) {
void TestSpriteUndefined ( std : : vector < std : : string > sprList ) {
for ( int i = 0 ; i < sprList . size ( ) ; i + + ) {
Test ( " Sprite " + sprList [ i ] + " should not be initialized " ,
SPRITES [ sprList [ i ] ] = = nullptr ) ;
}
}
void TestSpriteInitialized ( std : : vector < std : : string > sprList ) {
for ( int i = 0 ; i < sprList . size ( ) ; i + + ) {
Test ( " Sprite " + sprList [ i ] + " should be initialized " ,
SPRITES [ sprList [ i ] ] ! = nullptr ) ;
Test ( " Sprite " + sprList [ i ] + " should have a non-zero width and height " ,
SPRITES [ sprList [ i ] ] - > sprite - > width ! = 0 & & SPRITES [ " terrainmap.png " ] - > sprite - > height ! = 0 ) ;
}
}
bool SeasonI : : OnUserCreate ( ) {
for ( int i = 0 ; i < PARTY_MEMBER_STATS . size ( ) ; i + + ) {
Test ( " Party Member stats should not be initialized " ,
PARTY_MEMBER_STATS [ i ] = = nullptr ) ;
}
SetupPartyMemberStats ( ) ;
Entity : : stats_t defaults { { HP : 120 , maxHP : 120 , PP : 30 , maxPP : 30 , baseAtk : 8 , speed : 8 , resistances : { 0 , 0 , 0 , 0 } } } ;
Test ( " Party Members get initialized with correct defaults. " ,
PARTY_MEMBER_STATS [ 0 ] - > stats = = defaults ) ;
for ( int i = 0 ; i < PARTY_MEMBER_STATS . size ( ) ; i + + ) {
Test ( " Party Members get initialized with correct defaults " ,
PARTY_MEMBER_STATS [ i ] - > stats = = partyMemberDefaultStats ) ;
}
TestSpriteUndefined ( { " terrainmap.png " , " pixel.png " , " bufficons.png " , " rollingcounter.png " , " additionalFont.png " } ) ;
SetupAnimations ( ) ;
TestSpriteInitialized ( { " terrainmap.png " , " pixel.png " , " bufficons.png " , " rollingcounter.png " , " additionalFont.png " } ) ;
Test ( " Player animation is undefined " ,
ANIMATIONS . count ( " player.png " ) = = 0 ) ;
Test ( " Party Member Object is not setup " ,
PARTY_MEMBER_OBJ [ 0 ] = = nullptr ) ;
vd2d testPos = { 0 , 0 } , testScale = { 2 , 2 } ;
CreateObjectInfo ( new Standard_Obj ( PLAYER , " player " , testPos , nullptr , testScale , MAGENTA , 32 ) , " player.png " , 32 ) ;
Test ( " Player animation is defined " ,
ANIMATIONS [ " player.png " ] ! = nullptr ) ;
Decal * playerAnimPointer = ANIMATIONS [ " player.png " ] - > spr ;
Test ( " Player animation is setup correctly " ,
ANIMATIONS [ " player.png " ] - > frames > 0 & & ANIMATIONS [ " player.png " ] - > spr ! = nullptr ) ;
Test ( " Object Info database now has 1 entry " ,
OBJ_INFO . size ( ) = = 1 ) ;
Test ( " Object Info is correctly assigned " ,
OBJ_INFO [ 0 ] - > name = = " player " & & OBJ_INFO [ 0 ] - > id = = PLAYER & & OBJ_INFO [ 0 ] - > GetPos ( ) = = testPos & & OBJ_INFO [ 0 ] - > GetScale ( ) = = testScale & & OBJ_INFO [ 0 ] - > color = = MAGENTA & & OBJ_INFO [ 0 ] - > spr - > width = = 32 ) ;
delete OBJ_INFO [ PLAYER ] ;
OBJ_INFO . erase ( PLAYER ) ;
Test ( " Object Info is cleared " ,
OBJ_INFO . size ( ) = = 0 ) ;
SetupObjectInfo ( ) ;
Test ( " Using the same sprite definition does not cause memory leak " ,
playerAnimPointer = = OBJ_INFO [ 0 ] - > spr - > spr ) ;
return true ;
}