def test_initializeGame(): randomSeed = 111 kingdomCards_Valid = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] kingdomCards= random.sample([d.Curse, d.Estate, d.Duchy, d.Province, d.Copper, d.Silver, d.Gold, d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Mine, d.Minion, d.Outpost, d.Remodel, d.Salvager, d.Sea_Hag, d.Smithy, d.Treasure_Map, d.Village],10) print "Testing Initialize Game with Bad set of Kingdom Cardsand Number of players" print kingdomCards players = random.randint(0,5) a = d.initializeGame(players, kingdomCards, randomSeed) assert(a == -1) print "Initilize Game() is invalid for kingdomCards selected and players: %d" %players print "Expected: " + "-1" print "Actual: %d " %a print "TEST PASS" if (a!= -1): print "TEST FAIL" print "Accepting bad input of kingdom cards for players %d" %players print "Testing Supply count of copper cards for all number of players and with valid kingdom cards" players = random.randint(2,4) b = d.initializeGame(players, kingdomCards_Valid, randomSeed) assert(b.supplyCount[d.Copper] == (60- 7* players)) print "TEST PASS" print "Taking correct count of Copper cards: %d in supply for Players : %d" %(b.supplyCount[d.Copper],players) if (b.supplyCount[d.Copper] != (60- 7* players)): print "TEST FAIL" print "Taking wrong count of Copper cards: %d in supply for Players : %d" %(b.supplyCount[d.Copper],players)
def test_initializeGame(): kingdomCards_Invalid = [d.Curse, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] kingdomCards_Valid = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] print "Testing Initialize Game with Bad set of Kingdom Cardsand Number of players" print "Players" print numPlayers print "Kingdom Cards" print kingdomCards a = d.initializeGame(numPlayers, kingdomCards_Invalid, randomSeed) assert(a == -1) print "Initilize Game() is invalid for kingdomCards selected and players: %d" %numPlayers print "Expected: " + "-1" print "Actual: %d " %a print "TEST PASS" if (a!= -1): print "TEST FAIL" print "Accepting bad input of kingdom cards for players %d" %numPlayers print "Testing Supply count of copper cards for all number of players and with valid kingdom cards" players = random.randint(2,4) b = d.initializeGame(players, kingdomCards_Valid, randomSeed) assert(b.supplyCount[d.Copper] == (60- 7* players)) print "TEST PASS" print "Taking correct count of Copper cards: %d in supply for Players : %d" %(b.supplyCount[d.Copper],players) if (b.supplyCount[d.Copper] != (60- 7* players)): print "TEST FAIL" print "Taking wrong count of Copper cards: %d in supply for Players : %d" %(b.supplyCount[d.Copper],players)
def test_playCard(): card = random.randint(0,26) ##kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] print "TESTING playCard()" a = d.initializeGame(numPlayers,kingdomCards, randomSeed) assert(a !=-1) print "Before playing" print "hand of Player 0:" print a.hand[0] print "Card played by Player : 0 is " print card hpos = len(a.hand[0])-1 b = d.playCard(hpos,0,0,0,a) if (b == -1): if card not in a.kingdomCards: print "Invalid Input:Card is Not KingdomCard" elif card not in a.hand[a.whoseTurn]: print "Invalid input, Card trying to play is not in hand" if(b ==0): print "TEST PASS" print "After playing" print "hand" print a.hand[0] print "Card played by Player:0 is " print card
def test_discardCard(): ##kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] card = random.choice([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]) ##random.randint(d.Curse,d.Village) print "TESTING discardCard()" a = d.initializeGame(numPlayers,kingdomCards, randomSeed) assert(a !=-1) print "Before discard" print "Card to discard:" print card print "hand before discarding" print a.hand print "Coins available:" print a.coins b = d.discardCard(card,a.whoseTurn,a,0) if (b == -1): print "Invalid Input:card not in hand OR SupplyEmpty" return -1 assert(b ==0) print "TEST PASS" print "discardCard() is successfull for player : %d discarded %d" %(a.whoseTurn,card) print "After Discarding" print "Card Discarded:" print card print "Hand after Discarding" print a.hand print "Coins Available:" print a.coins
def test_discardCard(): randSeed = 111 numPlayers =random.randint(2,4) kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] card = d.Copper ##random.randint(d.Curse,d.Village) print "TESTING UpdateCoins()" a = d.initializeGame(numPlayers,kingdomCards, randSeed) assert(a !=-1) print "Before discard" print "Card to discard:" print card print "hand before discarding" print a.hand print "Coins available:" print a.coins b = d.discardCard(card,a.whoseTurn,a,0) c = d.updateCoins(a.whoseTurn,a,0) if (b == -1): print "Invalid Input:card not in hand OR SupplyEmpty" assert(b ==0) print "TEST PASS" print "discardCard() is successfull for player : %d discarded %d" %(a.whoseTurn,card) print "After Discarding" print "Card Discarded:" print card print "Hand after Discarding" print a.hand print "Coins Available:" print a.coins
def test_gainCard(): randSeed = 111 card = random.randint(0,26) numPlayers = 4 turn = random.randint(0,3) kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] print "TESTING gainCard()" a = d.initializeGame(numPlayers,kingdomCards, randSeed) assert(a !=-1) print "Before gaining" print "Deck" print a.deck print "Card Gaining by Player : %d is " %turn print card print "Supply Count of Card:" print a.supplyCount[card] b = d.gainCard(card,a,1,turn) if (b == -1): print "Invalid Input:Supply Empty" assert(b ==0) print "TEST PASS" print "After gaining" print "Deck" print a.deck print "Card gained by Player %d is "%turn print card print "Supply Count of Card:" print a.supplyCount[card]
def test_updateCoins(): maxBonus = random.randint(2,5) maxHandCount = random.randint(2,5) ##kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] print "TESTING UpdateCoins()" a = d.initializeGame(numPlayers,kingdomCards, randomSeed) assert(a !=-1) for i in range(numPlayers): a.hand[i] = [] for player in range(numPlayers): for handCount in range(1,maxHandCount+1): a.hand[player].append(d.Copper) print a.hand[player] for bonus in range(maxBonus): b = d.updateCoins(player,a,bonus) assert(b ==0) print "TEST PASS" print "Return Value for player: %d, bonus %d and hand count : %d is %d" %(player,bonus, handCount, b) print "Expected value : 0" if (b != 0): print "TEST FAIL" print "Return Value for player: %d, bonus %d and hand count : %d is %d" %(player,bonus, handCount, b) print "Expected value : 0" assert(a.coins == (handCount * 1 + bonus)) print "TEST PASS" print "Testing with all copper coins for player : %d, bonus : %d, handCount : %d, Coin Value = %d" %(player,bonus,handCount,a.coins) print "Expected = %d" %(handCount *1 +bonus) if (a.coins != (handCount * 1 + bonus)): print "TEST FAIL" print "Testing with all copper coins for player : %d, bonus : %d, handCount : %d, Coin Value = %d" %(player,bonus,handCount,a.coins) print "Expected = %d" %(handCount *1 +bonus)
def checkFirstTurn(): game = d.initializeGame(2, [c.adventurer, c.ambassador, c.baron, c.council_room, c.cutpurse, c.embargo, c.feast, c.gardens, c.great_hall, c.mine], 10) handPos = random.randrange(5) ret = d.playCard(handPos,0,0,0,game) assert(ret == -1) print "TEST CASE PASSED" return 0
def test_getWinners(): kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] print("Tetsing getWinners") p = d.initializeGame(2, kingdomCards,111) p.discard[0].append(d.Province) r = d.getWinners(p) assert(r!=-1) print("Player Won:") print r
def test_isGameOver(): ##kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] print("Tetsing isGameOver") r = d.initializeGame(numPlayers, kingdomCards,randomSeed) r.supplyCount[d.Province] = 0 s = d.isGameOver(r) assert(s == 1) print ("Game Over: SUpply of province exhausted") print "Supply of province:" print r.supplyCount[d.Province] r = d.initializeGame(2, kingdomCards,111) r.supplyCount[d.Duchy] = 0 r.supplyCount[d.Estate] = 0 r.supplyCount[d.Village] = 0 s = d.isGameOver(r) assert(s == 1) print ("Game Over:Supply of 3 piles is empty") print r.supplyCount[d.Duchy] print r.supplyCount[d.Estate] print r.supplyCount[d.Village]
def test_endTurn(): kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] print("Testing endTurn") r= d.initializeGame(2, kingdomCards,111) assert(r != -1) print ("Whose Turn:") print r.whoseTurn s = d.endTurn(r) assert (s == 0) print ("After endTurn:") print ("Whose Turn:") print r.whoseTurn
def test_getWinners(): ##kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] print("Tetsing getWinners") p = d.initializeGame(numPlayers, kingdomCards,randomSeed) p.discard[0].append(d.Province) p.discard[1].append(d.Province) for player in range(numPlayers): print "Score of Player: %d" %player print d.scoreFor(player,p) r = d.getWinners(p) assert(r!=-1) print("Player Won:") print r
def test_scoreFor(): kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] print("Testing scoreFor()") r = d.initializeGame(2, kingdomCards,111) assert(r!=-1) print "Hand" print r.hand[0] print "Deck" print r.deck[0] print "Discard" print r.discard[0] x = d.scoreFor(0,r) assert(x!= -1) print ("Score for player : 0 is:") print x
def act47(self): if self.__collectCov: self.__cov.start() try: self.p_GAME[0] = mydom.initializeGame(self.p_NUMPLAYERS[0],kingdomCards,self.p_SEED[0]) finally: if self.__collectCov: self.__cov.stop() self.__updateCov() self.p_GAME_REF[0] = otherdom.initializeGame(self.p_NUMPLAYERS[0],kingdomCards,self.p_SEED[0]) self.p_GAME_used[0]=False self.p_NUMPLAYERS_used[0]=True self.p_SEED_used[0]=True
def test_shuffle(): ##kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] a = d.initializeGame(numPlayers,kingdomCards, randomSeed) assert(a !=-1) print "Before Shuffle" print "Deck" print a.deck for turn in range(numPlayers): b = d.shuffle(turn,a) if (b == -1): print "Invalid Input:card not in hand OR SupplyEmpty" assert(b ==0) print "TEST PASS" print "After Shuffling" print "Deck" print a.deck
def test_scoreFor(): ##kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] print("Testing scoreFor()") r = d.initializeGame(numPlayers, kingdomCards,randomSeed) assert(r!=-1) for player in range(numPlayers): print "Hand: %d" %player print r.hand[player] print "Deck: %d" %player print r.deck[player] print "Discard: %d" %player print r.discard[player] x = d.scoreFor(player,r) assert(x!= -1) print ("Score for player : %d is:" %player) print x
def test_buyCard(): randSeed = 111 numPlayers =random.randint(2,4) maxBonus = random.randint(2,5) maxHandCount = random.randint(2,5) kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] card = random.randint(d.Curse,d.Village) print "TESTING UpdateCoins()" a = d.initializeGame(numPlayers,kingdomCards, randSeed) assert(a !=-1) a.whoseTurn = random.randint(0,numPlayers-1) print "Before Buying" print "Card want to Buy:" print card print "Cost of Card" x = d.getCost(card) print x print "Coins Available:" print a.coins print "numBuys available" print a.numBuys print "Whose Turn:" print a.whoseTurn print "Discard" print a.discard print "Supply of Card" print a.supplyCount[card] b = d.buyCard(card,a) if (b == -1): print "Invalid Input:No numBuys OR No enough Coins OR SupplyEmpty" assert(b ==0) print "BuyCard() is successfull for player : %d brought: %d" %(a.whoseTurn,card) print "After Buying" print "Card Bought:" print card print "Coins Available:" print a.coins print "numBuys available" print a.numBuys print "Whose Turn:" print a.whoseTurn print "Discard" print a.discard print "Supply of Card" print a.supplyCount[card]
def checkStart(): kingdomCards = [7,8,9,10,11,12,13,14,15,16,17,18,19] kingdom = [] configurations = [comb for comb in itertools.combinations(kingdomCards,10)] counter = 0 for i in range(2,5): for conf in configurations: kingdom = list(conf) game = d.initializeGame(i,kingdom,10) counter += 1 assert(d.supplyCount(c.silver,game) == 40) assert(d.supplyCount(c.gold,game) == 30) for j in c.kingdom_cards: if j in kingdom: assert(d.supplyCount(j,game) == 10) if i == 2: assert(d.supplyCount(c.copper,game) == 46) assert(d.supplyCount(c.curse,game) == 10) assert(d.supplyCount(c.estate,game) == 2) assert(d.supplyCount(c.duchy,game) == 8) assert(d.supplyCount(c.province,game) == 8) assert(d.supplyCount(c.gardens,game) == 8) assert(d.supplyCount(c.great_hall,game) == 8) elif i == 3: assert(d.supplyCount(c.copper,game) == 39) assert(d.supplyCount(c.curse,game) == 20) assert(d.supplyCount(c.estate,game) == 3) assert(d.supplyCount(c.duchy,game) == 12) assert(d.supplyCount(c.province,game) == 12) assert(d.supplyCount(c.gardens,game) == 12) assert(d.supplyCount(c.great_hall,game) == 12) elif i == 4: assert(d.supplyCount(c.copper,game) == 32) assert(d.supplyCount(c.curse,game) == 30) assert(d.supplyCount(c.estate,game) == 0) assert(d.supplyCount(c.duchy,game) == 12) assert(d.supplyCount(c.province,game) == 12) assert(d.supplyCount(c.gardens,game) == 12) assert(d.supplyCount(c.great_hall,game) == 12) print "Configuration ", counter, " PASSED" print i, "players, kingdom = " , kingdom print "TEST CASE PASSED" return 0
def test_endTurn(): ##kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] print("Testing endTurn") r= d.initializeGame(numPlayers, kingdomCards,randomSeed) assert(r != -1) print ("Whose Turn:") print r.whoseTurn print "Discard" print r.discard print "Hand" print r.hand s = d.endTurn(r) assert (s == 0) print ("After endTurn:") print ("Whose Turn:") print r.whoseTurn print "Discard" print r.discard print "Hand" print r.hand
def test_drawCard(): ##kingdomCards = [d.Adventurer, d.Ambassador, d.Baron, d.Council_Room, d.Cutpurse, d.Embargo, d.Feast, d.Gardens, d.Great_Hall, d.Village] print "TESTING drawCard()" a = d.initializeGame(numPlayers,kingdomCards, randomSeed) assert(a !=-1) print "Before drawing" print "Deck" print a.deck print "Hand" print a.hand for turn in range(numPlayers): b = d.drawCard(turn,a) if (b == -1): print "Invalid Input:deck empty" assert(b ==0) print "TEST PASS" print "After drawing" print "Deck" print a.deck print "Hand" print a.hand
import dominion as d import cardnames as c import itertools import random game2 = d.initializeGame(3, [c.adventurer, c.ambassador, c.baron, c.council_room, c.cutpurse, c.embargo, c.feast, c.gardens, c.great_hall, c.mine], 10) game3 = d.initializeGame(4, [c.adventurer, c.ambassador, c.baron, c.council_room, c.cutpurse, c.embargo, c.feast, c.gardens, c.great_hall, c.mine], 10) game4 = d.initializeGame(2, [c.adventurer, c.ambassador, c.baron, c.council_room, c.cutpurse, c.embargo, c.feast, c.gardens, c.great_hall, c.outpost], 10) def test1(game): d.buyCard(c.silver, game) d.endTurn(game) assert (d.buyCard(c.copper, game) == 0) d.buyCard(c.silver, game) assert (d.whoseTurn(game) == 1) assert (d.buyCard(c.silver, game) == -1) d.endTurn(game) assert (d.buyCard(c.province,game) == -1) print "TEST CASE PASSED" return 0 # Test checks whether a game state sets up supplies correctly with all the different valid configurations