def test_GivenAPileWithCards_WhenACardFaceDownAskIfFits_ReturnFalse(self):
     cardCandidate = CardBuilder().suit(Suit.DIAMONDS).number(
         Number.QUEEN).build()
     cardInPile = CardBuilder().suit(Suit.CLOVERS).number(
         Number.KING).faceUp().build()
     pile = PileBuilder().card(cardInPile).build()
     self.assertFalse(pile.isFittingIn(cardCandidate))
 def test_GivenAPileWithAColor_WhenSameColorAskIfFits_ReturnFalse(self):
     cardCandidate = CardBuilder().suit(Suit.HEARTS).number(
         Number.QUEEN).faceUp().build()
     cardInPile = CardBuilder().suit(Suit.DIAMONDS).number(
         Number.KING).faceUp().build()
     pile = PileBuilder().card(cardInPile).build()
     self.assertFalse(pile.isFittingIn(cardCandidate))
Esempio n. 3
0
 def test_GivenAGame_WhenMoveFromFoundationToPile_ThenCardIsMoved(self):
     pileNumber = 1
     cardToMove = CardBuilder().suit(Suit.PIKES).number(Number.KING).faceUp().build()
     cardLeft = CardBuilder().suit(Suit.PIKES).number(Number.QUEEN).faceUp().build()
     game = GameBuilder().pileEmpty(pileNumber).foundationComplete(Suit.PIKES).build()
     self.assertIsNone(game.moveFromFoundationToPile(Suit.PIKES, pileNumber))
     self.assertEqual(game.getPiles()[pileNumber-1].getTop(), cardToMove)
     self.assertEqual(game.getFoundations()[Suit.PIKES].getTop(), cardLeft)
 def test_GivenAPileWithCards_WhengetTopWitlessCards_ThenTheRequestedNumberisReturned(
         self):
     card = CardBuilder().build()
     otherCard = CardBuilder().suit(Suit.HEARTS).build()
     topCard = CardBuilder().suit(Suit.DIAMONDS).build()
     returnedCards = PileBuilder().card(card).card(otherCard).card(
         topCard).build().getTop(2)
     self.assertListEqual(returnedCards, [otherCard, topCard])
 def test_GivenNotEmtpyPile_WhenaddToTop_CardsAreAdded(self):
     card = CardBuilder().faceUp().build()
     otherCard = CardBuilder().suit(Suit.HEARTS).faceUp().build()
     topCard = CardBuilder().suit(Suit.DIAMONDS).faceUp().build()
     cards = [otherCard, topCard]
     pile = PileBuilder().card(card).build()
     pile.addToTop(cards)
     self.assertEqual(pile.getTop(3), [card, otherCard, topCard])
 def test_GivenAPileWithCards_WhengetTopWithMoreCards_ThenAllArereturned(
         self):
     card = CardBuilder().build()
     otherCard = CardBuilder().suit(Suit.HEARTS).build()
     topCard = CardBuilder().suit(Suit.DIAMONDS).build()
     returnedCards = PileBuilder().card(card).card(otherCard).card(
         topCard).build().getTop(4)
     self.assertEqual(returnedCards, [card, otherCard, topCard])
 def test_GivenPile_WhenaddToTopFaceDown_ThenException(self):
     card = CardBuilder().faceUp().build()
     otherCard = CardBuilder().suit(Suit.HEARTS).build()
     topCard = CardBuilder().suit(Suit.DIAMONDS).faceUp().build()
     cards = [otherCard, topCard]
     pile = PileBuilder().card(card).build()
     with self.assertRaises(InvalidCard) as context:
         pile.addToTop(cards)
 def test_GivenNotEmtpy_WhenremoveTop_CardsAreRemoved(self):
     card = CardBuilder().build()
     otherCard = CardBuilder().suit(Suit.HEARTS).build()
     topCard = CardBuilder().suit(Suit.DIAMONDS).build()
     cards = [card, otherCard, topCard]
     pile = PileBuilder().card(card).card(otherCard).card(topCard).build()
     pile.removeTop(2)
     self.assertEqual(pile.getTop(3), [card])
Esempio n. 9
0
 def test_GivenAGame_WhenMoveFromWasteToPile_ThenCardIsMoved(self):
     pileNumber = 1
     cardToMove = CardBuilder().suit(Suit.PIKES).number(Number.ACE).faceUp().build()
     cardInPile = CardBuilder().suit(Suit.HEARTS).number(Number.TWO).faceUp().build()
     game = GameBuilder().cardInWaste(cardToMove).cardInPile(pileNumber, cardInPile).build()
     self.assertIsNone(game.moveFromWasteToPile(pileNumber))
     self.assertTrue(game.getWaste().isEmpty())
     self.assertEqual(game.getPiles()[pileNumber-1].getTop(), cardToMove)
Esempio n. 10
0
 def test_GivenAGame_WhenMoveFromPileToFoundation_ThenError(self):
     pileNumber = 1
     cardToMove = CardBuilder().suit(Suit.PIKES).number(Number.ACE).faceUp().build()
     game = GameBuilder()\
            .cardInPile(pileNumber, CardBuilder().faceUp().build())\
            .cardInPile(pileNumber, cardToMove)\
            .build()
     self.assertEqual(
         game.moveFromPileToFoundation(pileNumber, Suit.HEARTS), Error.NO_FIT_FOUNDATION)
 def test_GivenNotEmtpyPile_WhenremoveTop_TopCardisFaceDown(self):
     card = CardBuilder().build()
     otherCard = CardBuilder().suit(Suit.HEARTS).build()
     topCard = CardBuilder().suit(Suit.DIAMONDS).build()
     cards = [card, otherCard, topCard]
     pile = PileBuilder().card(card).card(otherCard).card(topCard).build()
     pile.removeTop(2)
     returnedCard = pile.getTop(3)[0]
     self.assertFalse(returnedCard.isFaceUp())
Esempio n. 12
0
 def test_GivenAGame_WhenMoveFromPileToFoundation_ThenCardIsMoved(self):
     pileNumber = 1
     cardToMove = CardBuilder().suit(Suit.PIKES).number(Number.ACE).faceUp().build()
     game = GameBuilder()\
            .cardInPile(pileNumber, CardBuilder().faceUp().build())\
            .cardInPile(pileNumber, cardToMove)\
            .build()
     self.assertIsNone(game.moveFromPileToFoundation(pileNumber, Suit.PIKES))
     self.assertNotEqual(game.getPiles()[pileNumber-1].getTop(), cardToMove)
     self.assertEqual(game.getFoundations()[Suit.PIKES].getTop(), cardToMove)
     self.assertTrue(game.getPiles()[pileNumber-1].getTop().isFaceUp())        
 def cards(self, numberOfCards):
     for number in Number:
         card = CardBuilder().suit(
             self._suit).number(number).faceUp().build()
         self.card(card)
         if len(self._cards) == numberOfCards:
             return self
     return self
Esempio n. 14
0
    def wasteNotEmpty(self):
        cards = list()
        for suit, number in zip(Suit, Number):
            cards.append(
                CardBuilder().suit(suit).number(number).faceUp().build())
        self._waste = Waste()
        for card in cards:
            self._waste.addToTop(card)

        return self
Esempio n. 15
0
 def test_GivenAMoveWithToManyCards_WhenMoveFromPileToPile_ThenError(self):
     pileNumberOrigin = 1
     pileNumberDest = 7
     nCardsMoved = 5
     game = GameBuilder()\
            .pileWithFaceUpCards(pileNumberOrigin)\
            .cardInPile(pileNumberDest, CardBuilder().number(Number.ACE).faceUp().build()).build()
     self.assertEqual(
         game.moveFromPileToPile(pileNumberOrigin, pileNumberDest, nCardsMoved),
         Error.NO_ENOUGH_CARDS_PILE
     )
Esempio n. 16
0
 def test_GivenAMove_WhenMoveFromPileToSamePile_ThenError(self):
     pileNumberOrigin = 1
     pileNumberDest = 1
     nCardsMoved = 1
     game = GameBuilder()\
            .pileWithFaceUpCards(pileNumberOrigin)\
            .cardInPile(pileNumberDest, CardBuilder().number(Number.ACE).faceUp().build()).build()
     self.assertEqual(
         game.moveFromPileToPile(pileNumberOrigin, pileNumberDest, nCardsMoved),
         Error.SAME_PILE
     )
Esempio n. 17
0
 def test_GivenNotemptyFoundation_whenCardthatFitsAskFitsIn_ReturnTrue(
         self):
     foundation = FoundationBuilder().suit(Suit.PIKES).cards(3).build()
     card = CardBuilder().suit(Suit.PIKES).number(
         Number.FOUR).faceUp().build()
     self.assertTrue(foundation.isFittingIn(card))
Esempio n. 18
0
 def test_GivenNotemptyFoundation_whenCardFaceDownAskFitsIn_ReturnFalse(
         self):
     foundation = FoundationBuilder().suit(Suit.PIKES).cards(3).build()
     card = CardBuilder().suit(Suit.PIKES).number(Number.FOUR).build()
     self.assertFalse(foundation.isFittingIn(card))
Esempio n. 19
0
 def stockNotEmpty(self):
     self._stock = Stock([CardBuilder().build()])
     return self
Esempio n. 20
0
 def wasteWithAce(self, suit):
     card = CardBuilder().suit(suit).number(Number.ACE).build()
     self.cardInWaste(card)
     return self
 def test_GivenAPileWithoutCards_WhenNumberOfFaceUpCards_ReturnZero(self):
     card = CardBuilder().faceUp().build()
     self.assertEqual(PileBuilder().build().getNumberOfFaceUpCards(), 0)
Esempio n. 22
0
 def test_GivenAGame_WhenMoveFromWasteToPileThatDontFit_ThenError(self):        
     pileNumber = 1
     cardToMove = CardBuilder().suit(Suit.PIKES).number(Number.ACE).build()
     cardInPile = CardBuilder().suit(Suit.CLOVERS).number(Number.TWO).faceUp().build()
     game = GameBuilder().cardInWaste(cardToMove).cardInPile(pileNumber,cardInPile).build()
     self.assertEquals(game.moveFromWasteToPile(pileNumber), Error.NO_FIT_PILE)
 def test_GivenAndNotEmptyPile_WhenIsEmptyCalled_ReturnFalse(self):
     card = CardBuilder().build()
     self.assertFalse(PileBuilder().card(card).build().isEmpty())
 def test_GivenAEmptyPile_WhenNotKingAskIfFits_ReturnFalse(self):
     cardCK = CardBuilder().number(Number.QUEEN).faceUp().build()
     pile = PileBuilder().build()
     self.assertFalse(pile.isFittingIn(cardCK))
 def test_GivenAEmptyPile_WhenKingAskIfFits_ReturnTrue(self):
     cardCK = CardBuilder().number(Number.KING).faceUp().build()
     pile = PileBuilder().build()
     self.assertTrue(pile.isFittingIn(cardCK))
Esempio n. 26
0
 def test_GivenAMoveThatDontFit_WhenMoveFromFoundationToPile_ThenError(self):
     pileNumber = 1
     cardToMove = CardBuilder().suit(Suit.PIKES).number(Number.QUEEN).faceUp().build()
     game = GameBuilder().pileEmpty(pileNumber).foundationComplete(Suit.PIKES).build()
     game.moveFromFoundationToPile(Suit.PIKES, pileNumber)
     self.assertEqual(game.moveFromFoundationToPile(Suit.PIKES, pileNumber), Error.NO_FIT_PILE)
Esempio n. 27
0
 def test_GivenAemptyFoundation_whenAceofOtherSuitAsksFitsIn_ReturnFalse(
         self):
     foundation = FoundationBuilder().suit(Suit.CLOVERS).build()
     card = CardBuilder().suit(Suit.PIKES).number(Number.ACE).build()
     self.assertFalse(foundation.isFittingIn(card))
Esempio n. 28
0
 def test_GivenAemptyFoundation_whenNotAceAsksFitsIn_ReturnFalse(self):
     foundation = FoundationBuilder().suit(Suit.PIKES).build()
     card = CardBuilder().suit(Suit.PIKES).number(
         Number.TWO).faceUp().build()
     self.assertFalse(foundation.isFittingIn(card))
 def test_GivenAWaste_whenPushFaceDown_ThenException(self):
     waste = WasteBuilder().build()
     with self.assertRaises(InvalidCard) as context:
         waste.addToTop(CardBuilder().build())
 def test_GivenAPileWithCardsFaceUp_WhenNumberOfFaceUpCards_ReturnTheRightNumber(
         self):
     card = CardBuilder().faceUp().build()
     self.assertEqual(
         PileBuilder().card(card).build().getNumberOfFaceUpCards(), 1)