void testBlank(void) { HunterView gameState; { playerMessage messages[1] = {""}; printf("Test: blank game.\n"); printf("creating hunterview.\n"); gameState = newHunterView("",messages); printf("deciding move.\n"); decideMove( gameState ); printf("disposing.\n"); disposeHunterView( gameState ); printf("Test passed\n"); } }
int main(int argc, char * argv[]) { playerMessage messages[] = {}; printf("Test basic empty initialisation\n"); HunterView hv = newHunterView("", messages); assert(getCurrentPlayer(hv) == PLAYER_LORD_GODALMING); assert(getRound(hv) == 0); assert(getHealth(hv, PLAYER_DR_SEWARD) == GAME_START_HUNTER_LIFE_POINTS); assert(getHealth(hv, PLAYER_DRACULA) == GAME_START_BLOOD_POINTS); assert(getScore(hv) == GAME_START_SCORE); assert(getLocation(hv,PLAYER_LORD_GODALMING) == UNKNOWN_LOCATION); disposeHunterView(hv); printf("passed\n"); return 0; }
int main() { int i; HunterView hv; printf("Test basic empty initialisation\n"); hv = newHunterView("", NULL); assert(whoAmI(hv) == PLAYER_LORD_GODALMING); assert(giveMeTheRound(hv) == 0); assert(howHealthyIs(hv,PLAYER_DR_SEWARD) == GAME_START_HUNTER_LIFE_POINTS); assert(howHealthyIs(hv,PLAYER_DRACULA) == GAME_START_BLOOD_POINTS); assert(giveMeTheScore(hv) == GAME_START_SCORE); assert(whereIs(hv,PLAYER_LORD_GODALMING) == UNKNOWN_LOCATION); printf("passed\n"); disposeHunterView(hv); printf("Test for Dracula trail and basic functions\n"); PlayerMessage messages2[] = {"Hello","Rubbish","Stuff","","Mwahahah"}; hv = newHunterView("GST.... SAO.... HZU.... MBB.... DC?....", messages2); assert(whoAmI(hv) == PLAYER_LORD_GODALMING); assert(giveMeTheRound(hv) == 1); assert(whereIs(hv,PLAYER_LORD_GODALMING) == STRASBOURG); assert(whereIs(hv,PLAYER_DR_SEWARD) == ATLANTIC_OCEAN); assert(whereIs(hv,PLAYER_VAN_HELSING) == ZURICH); assert(whereIs(hv,PLAYER_MINA_HARKER) == BAY_OF_BISCAY); assert(whereIs(hv,PLAYER_DRACULA) == CITY_UNKNOWN); assert(howHealthyIs(hv,PLAYER_DRACULA) == GAME_START_BLOOD_POINTS); printf("passed\n"); disposeHunterView(hv); printf("Test for encountering Dracula and hunter history\n"); PlayerMessage messages3[] = {"Hello","Rubbish","Stuff","","Mwahahah","Aha!"}; hv = newHunterView("GST.... SAO.... HCD.... MAO.... DGE.... GGED...", messages3); assert(whereIs(hv,PLAYER_DRACULA) == GENEVA); assert(howHealthyIs(hv,PLAYER_LORD_GODALMING) == 5); assert(howHealthyIs(hv,PLAYER_DRACULA) == 30); assert(whereIs(hv,PLAYER_LORD_GODALMING) == GENEVA); LocationID history[TRAIL_SIZE]; giveMeTheTrail(hv,PLAYER_DRACULA,history); assert(history[0] == GENEVA); assert(history[1] == UNKNOWN_LOCATION); giveMeTheTrail(hv,PLAYER_LORD_GODALMING,history); assert(history[0] == GENEVA); assert(history[1] == STRASBOURG); assert(history[2] == UNKNOWN_LOCATION); giveMeTheTrail(hv,PLAYER_DR_SEWARD,history); assert(history[0] == ATLANTIC_OCEAN); assert(history[1] == UNKNOWN_LOCATION); printf("passed\n"); disposeHunterView(hv); printf("Test for Dracula doubling back at sea, and losing blood points (Hunter View)\n"); PlayerMessage messages4[] = {"Hello","Rubbish","Stuff","","Mwahahah","Aha!","","","","Back I go"}; hv = newHunterView("GGE.... SGE.... HGE.... MGE.... DS?.... " "GST.... SST.... HST.... MST.... DD1....", messages4); assert(whereIs(hv,PLAYER_DRACULA) == DOUBLE_BACK_1); giveMeTheTrail(hv,PLAYER_DRACULA,history); assert(history[0] == DOUBLE_BACK_1); assert(history[1] == SEA_UNKNOWN); assert(howHealthyIs(hv,PLAYER_DRACULA) == GAME_START_BLOOD_POINTS - 4); assert(whoAmI(hv) == 0); printf("passed\n"); disposeHunterView(hv); printf("Test for connections\n"); int size, seen[NUM_MAP_LOCATIONS], *edges; printf("Checking Galatz road connections\n"); PlayerMessage messages5[] = {"Gone to Galatz"}; hv = newHunterView("GGA....", messages5); edges = whereCanTheyGo(hv,&size,PLAYER_LORD_GODALMING,1,0,0); memset(seen, 0, NUM_MAP_LOCATIONS*sizeof(int)); for (i = 0; i< size ; i++) seen[edges[i]] = 1; assert(size == 5); assert(seen[GALATZ]); assert(seen[CONSTANTA]); assert(seen[BUCHAREST]); assert(seen[KLAUSENBURG]); assert(seen[CASTLE_DRACULA]); free(edges); disposeHunterView(hv); printf("Checking Ionian Sea sea connections\n"); PlayerMessage messages6[] = {"Sailing the Ionian"}; hv = newHunterView("GIO....", messages6); edges = whereCanTheyGo(hv,&size,PLAYER_LORD_GODALMING,0,0,1); memset(seen, 0, NUM_MAP_LOCATIONS*sizeof(int)); for (i = 0; i < size; i++) seen[edges[i]] = 1; assert(size == 7); assert(seen[IONIAN_SEA]); assert(seen[BLACK_SEA]); assert(seen[ADRIATIC_SEA]); assert(seen[TYRRHENIAN_SEA]); assert(seen[ATHENS]); assert(seen[VALONA]); assert(seen[SALONICA]); free(edges); disposeHunterView(hv); printf("Checking Athens rail connections (none)\n"); PlayerMessage messages7[] = {"Leaving Athens by train"}; hv = newHunterView("GAT....", messages7); edges = whereCanTheyGo(hv,&size,PLAYER_LORD_GODALMING,0,1,0); assert(size == 1); assert(edges[0] == ATHENS); free(edges); disposeHunterView(hv); printf("passed\n"); return 0; }
void testMovesRound1(void) { HunterView gameState; { playerMessage messages[7] = {""}; printf("Test1: Round 1 hunter 2 move. Testing his connected locs.\n"); printf("creating hunterview.\n"); gameState = newHunterView("GGW.... SGA.... HAT.... MMA.... DBO.V.. GGW.... SKL....",messages); printf("deciding move.\n"); decideMove( gameState ); printf("disposing.\n"); disposeHunterView( gameState ); printf("Test passed\n"); printf("Test2: Round 1 hunter 2 move. Testing his connected locs.\n"); printf("creating hunterview.\n"); gameState = newHunterView("GCD.... SBE.... HST.... MMA.... DC?.V.. GKL.... SKL.... HST....",messages); printf("deciding move.\n"); decideMove( gameState ); printf("disposing.\n"); disposeHunterView( gameState ); printf("Test passed\n"); } { playerMessage messages[7] = {""}; printf("Testing fail round 2, hunter 2 trying to move illegally to CD\n"); gameState = newHunterView("GCD.... SBE.... HST.... MMA.... DKL.V.. GKLVD.. SKLD...",messages); decideMove(gameState); disposeHunterView(gameState); printf("Test passed!\n"); printf("latest play is %s\n",latestPlay); } /* { playerMessage messages2[] = { "camping", "", "", "", "+++Mr. Jelly! Mr. Jelly!+++", "I'm camping MAN!!!", "", "", "pn\u001a\thF\u001a\t\u0003", "+++Mr. Jelly! Mr. Jelly!+++", "I'm camping MAN!!!", "VR", "VR", "VR", "+++Oneoneoneoneoneoneone+++", "I'm camping MAN!!!" }; printf("Testing player 2 fail case round 5. Tried moving from Liverpool -> London\n"); gameState = newHunterView("GCD.... SBE.... HST.... MMA.... DGA.V.. GCD.... SBE.... HST.... MMA.... DBCT... GCD.... SKL.... HMU.... MMA.... DHIT... GCD.... SGAV... HVI.... MMA.... DD1T... GCD.... SGA.... HBD.... MMA.... DCNT... GCD.... SGA.... HKL.... MMA.... DC?T... GCD.... SGA.... HGA.... MMA.... DBS.... GCD.... SGA.... HGA.... MMA.... DS?..M. GCD.... SGA.... HGA.... MMA.... DSAT.M. GCD.... SGA.... HGA.... MMA.... DD2..M. GCD.... SGA.... HCNT... MMA.... DTS.... GCD.... SGA.... HCN.... MMA.... DCGT.M. GCD.... SGA.... HBS.... MMA.... DHIT... GCD.... SGA.... HBS.... MMA.... DMS.... GCD.... SGA.... HIO.... MMA.... DS?..M. GCD.... SGA.... HIO.... MMA.... DEC.... GCD.... SGA.... HTS.... MMA.... DLOT... GCD.... SGA.... HTS.... MMA.... DD1T.M. GCD.... SGA.... HTS.... MMA.... DHIT.M. GCD.... SGA.... HMS.... MMA.... DSWT... GCD.... SGA.... HMS.... MMA.... DS?.... GCD.... SGA.... HAO.... MMA.... DLVT... GCD.... SGA.... HAO.... MMA.... DC?T.M. GCD.... SGA.... HAO.... MMA.... DD5T.M. GCD.... SGA.... HAO.... MMA.... DPLT.M. GCD.... SGA.... HIS.... MMA.... DS?..M. GCD.... SGA.... HIS.... MMA.... DC?.V.. GCD.... SGA.... HLVT... MMA.... DC?T... GCD.... SGA.... HLV.... MMA.... DC?T.M. GCD.... SGA.... HLV.... MMA.... DD1T.M. GCD.... SGA....",messages2); decideMove(gameState); printf("latest play is %s\n",latestPlay); disposeHunterView(gameState); printf("Congrats, test should pass\n"); } */ { playerMessage messages[13] = {""}; printf("Testing player 2 fail case round 5. Tried moving from Madrid -> Bordeaux\n"); gameState = newHunterView("GCD.... SBE.... HST.... MMA.... DGA.V.. GCD.... SBE.... HST.... MMA.... DC?T... GCD.... SKL.... HMU....", messages); decideMove(gameState); printf("latest play is %s\n",latestPlay); disposeHunterView(gameState); printf("Congrats, test should pass\n"); } { playerMessage messages[13] = {""}; printf("Testing player 2 fail case round 5. Player One is making segFaults! player at Vienna\n"); gameState = newHunterView("GCD.... SBE.... HST.... MMA.... DGA.V.. GCD.... SBE.... HST.... MMA.... DC?T... GCD.... SKL.... HMU.... MMA.... DC?T... GCD.... SGAV... HVI.... MMA.... DD1T... GCD.... SGA....",messages); decideMove(gameState); printf("latest play is %s\n",latestPlay); disposeHunterView(gameState); printf("Congrats, test should pass\n"); } { playerMessage messages[31] = {""}; printf("Testing player 1 fail case from game 303 round 6\n"); gameState = newHunterView("GCD.... SBE.... HST.... MMA.... DCG.V.. GCD.... SBE.... HST.... MMA.... DS?.... GCD.... SSA.... HGE.... MAL.... DS?.... GCD.... SIO.... HMR.... MMS.... DC?T... GCD.... STS.... HMS.... MCGV... DC?T... GCD.... SCG.... HCG.... MCG.... DC?T... GCD....",messages); decideMove(gameState); printf("latest play is %s\n",latestPlay); disposeHunterView(gameState); printf("Congrats, this segfaulted in the game\n"); } { playerMessage messages[32] = {""}; printf("Testing player 2 fail case from game 303 round 6\n"); gameState = newHunterView("GCD.... SBE.... HST.... MMA.... DCG.V.. GCD.... SBE.... HST.... MMA.... DS?.... GCD.... SSA.... HGE.... MAL.... DS?.... GCD.... SIO.... HMR.... MMS.... DC?T... GCD.... STS.... HMS.... MCGV... DC?T... GCD.... SCG.... HCG.... MCG.... DC?T... GCD.... SCG....",messages); decideMove(gameState); printf("latest play is %s\n",latestPlay); disposeHunterView(gameState); printf("Congrats, this segfaulted in the game\n"); } { playerMessage messages[26] = {""}; printf("Testing player 1 fail case from game 39 round 9. player making illegal move from Constanta (but was (TD) so health would be -3)\n"); gameState = newHunterView("GCD.... SBE.... HST.... MMA.... DBS.... GCD.... SBE.... HST.... MMA.... DCNT... GCD.... SCNTD.. HMU.... MAL.... DC?T... GCD.... SCN.... HZA.... MMS.... DD2T... GCD.... SCNTD.. HSZ.... MTS.... DC?T... GCD....",messages); decideMove(gameState); printf("HIS LATEST PLAY IS %s\n",latestPlay); disposeHunterView(gameState); } { playerMessage messages[152] = {""}; printf("Testing player 2 fail case from game 199. player returning \"\" for move. Player in Tyrrhehian Sea.\n"); gameState = newHunterView("GCD.... SBE.... HST.... MMA.... DAL.V.. GCD.... SBE.... HST.... MMA.... DC?T... GCD.... SSA.... HGE.... MALV... DSNT... GCD.... SIO.... HMR.... MAL.... DS?.... GCD.... STS.... HMS.... MAL.... DNAT... GCD.... SMS.... HAL.... MAL.... DHIT... GCD.... SAL.... HAL.... MAL.... DCFT... GCD.... SAL.... HAL.... MAL.... DTOT.M. GCD.... SMA.... HSNT... MSN.... DD1T... GCD.... SMA.... HSN.... MSN.... DBAT... GCD.... SBO.... HBB.... MBB.... DSRT.M. GCD.... SBO.... HBB.... MBB.... DHIT.M. GCD.... SCFT... HBO.... MBO.... DMAT... GCD.... SCF.... HBO.... MBO.... DC?.VM. GCD.... SCF.... HBO.... MBO.... DCAT.M. GCD.... STO.... HSRTT.. MSR.... DD1T.M. GCD.... SSR.... HSR.... MSR.... DAO.... GCD.... SSR.... HSR.... MSR.... DS?.... GCD.... SMAT... HMA.... MMA.... DCGT... GCD.... SMA.... HMA.... MMA.... DHIT.V. GCD.... SCATT.. HCA.... MCA.... DTS.... GCD.... SCA.... HCA.... MCA.... DROT... GCD.... SAO.... HAO.... MAO.... DD1T... GCD.... SAO.... HAO.... MAO.... DBIT... GCD.... SMS.... HMS.... MMS.... DNPT.M. GCD.... SMS.... HMS.... MMS.... DC?T.M. GCD.... STS.... HTS.... MTS.... DTP.V.. GCDVD.. STS.... HTS.... MTS.... DC?T.M. GCD.... STS.... HTS.... MTS.... DC?T.M. GCD.... STS.... HTS.... MTS.... DD1T.M. GCD.... STS....",messages); decideMove(gameState); printf("HIS LATEST PLAY IS (%s)\n",latestPlay); disposeHunterView(gameState); } { playerMessage messages[149] = {""}; printf("Testing player 3 fail case from game 199. player seg faulting. Player in Tyrrhehian Sea.\n"); gameState = newHunterView("GCD.... SBE.... HST.... MMA.... DAL.V.. GCD.... SBE.... HST.... MMA.... DC?T... GCD.... SSA.... HGE.... MALV... DSNT... GCD.... SIO.... HMR.... MAL.... DS?.... GCD.... STS.... HMS.... MAL.... DNAT... GCD.... SMS.... HAL.... MAL.... DHIT... GCD.... SAL.... HAL.... MAL.... DCFT... GCD.... SAL.... HAL.... MAL.... DTOT.M. GCD.... SMA.... HSNT... MSN.... DD1T... GCD.... SMA.... HSN.... MSN.... DBAT... GCD.... SBO.... HBB.... MBB.... DSRT.M. GCD.... SBO.... HBB.... MBB.... DHIT.M. GCD.... SCFT... HBO.... MBO.... DMAT... GCD.... SCF.... HBO.... MBO.... DC?.VM. GCD.... SCF.... HBO.... MBO.... DCAT.M. GCD.... STO.... HSRTT.. MSR.... DD1T.M. GCD.... SSR.... HSR.... MSR.... DAO.... GCD.... SSR.... HSR.... MSR.... DS?.... GCD.... SMAT... HMA.... MMA.... DCGT... GCD.... SMA.... HMA.... MMA.... DHIT.V. GCD.... SCATT.. HCA.... MCA.... DTS.... GCD.... SCA.... HCA.... MCA.... DROT... GCD.... SAO.... HAO.... MAO.... DD1T... GCD.... SAO.... HAO.... MAO.... DBIT... GCD.... SMS.... HMS.... MMS.... DC?T.M. GCD.... SMS.... HMS.... MMS.... DC?T.M. GCD.... STS.... HTS.... MTS.... DTP.V.. GCDVD.. STS.... HTS.... MTS.... DC?T.M. GCD.... STS.... HTS.... MTS.... DC?T.M. GCD.... STS.... HTS....",messages); decideMove(gameState); printf("HIS LATEST PLAY IS (%s)\n",latestPlay); disposeHunterView(gameState); } { playerMessage messages[140] = {""}; printf("Testing player 1 fail case from game 199. player seg faulting. Player in Tyrrhehian Sea.\n"); gameState = newHunterView("GCD.... SBE.... HST.... MMA.... DAL.V.. GCD.... SBE.... HST.... MMA.... DC?T... GCD.... SSA.... HGE.... MALV... DSNT... GCD.... SIO.... HMR.... MAL.... DS?.... GCD.... STS.... HMS.... MAL.... DNAT... GCD.... SMS.... HAL.... MAL.... DHIT... GCD.... SAL.... HAL.... MAL.... DCFT... GCD.... SAL.... HAL.... MAL.... DTOT.M. GCD.... SMA.... HSNT... MSN.... DD1T... GCD.... SMA.... HSN.... MSN.... DBAT... GCD.... SBO.... HBB.... MBB.... DSRT.M. GCD.... SBO.... HBB.... MBB.... DHIT.M. GCD.... SCFT... HBO.... MBO.... DMAT... GCD.... SCF.... HBO.... MBO.... DC?.VM. GCD.... SCF.... HBO.... MBO.... DCAT.M. GCD.... STO.... HSRTT.. MSR.... DD1T.M. GCD.... SSR.... HSR.... MSR.... DAO.... GCD.... SSR.... HSR.... MSR.... DS?.... GCD.... SMAT... HMA.... MMA.... DCGT... GCD.... SMA.... HMA.... MMA.... DHIT.V. GCD.... SCATT.. HCA.... MCA.... DTS.... GCD.... SCA.... HCA.... MCA.... DC?T... GCD.... SAO.... HAO.... MAO.... DD1T... GCD.... SAO.... HAO.... MAO.... DC?T... GCD.... SMS.... HMS.... MMS.... DC?T.M. GCD.... SMS.... HMS.... MMS.... DC?T.M. GCD.... STS.... HTS.... MTS.... DTP.V.. GCDVD..",messages); decideMove(gameState); printf("HIS LATEST PLAY IS (%s)\n",latestPlay); disposeHunterView(gameState); } }