class TestMainApp(TestCase): def setUp(self): self.app = Application() self.app.load_deck() self.app.load_fields("klondike") def test_load_deck(self): # checking length of decks self.assertEqual(52, len(self.app._deck)) self.assertEqual(104, len(self.app._double_deck)) # checking if there are no two reference to the same object self.assertEqual(len(set(self.app._deck)), len(self.app._deck)) self.assertEqual(len(set(self.app._double_deck)), len(self.app._double_deck)) def test_load_fields(self): # check if good number of fields self.assertTrue(12, len(self.app._board)) # check types of fields self.assertTrue(isinstance(self.app._board[0], Deck)) for field in self.app._board[1:8]: self.assertTrue(isinstance(field, Pile)) for field in self.app._board[8:]: self.assertTrue(isinstance(field, Stack)) def test_remove_from_fields(self): card = self.app._board[0].show_cards()[0] self.app.remove_from_fields([card]) for field in self.app._board: self.assertFalse(card in field.show_cards()) def test_check_cards(self): # put mouse on place without any card pygame.mouse.set_pos(0, 0) sleep(2) self.assertFalse(self.app.check_cards()) # put mouse on some card pygame.mouse.set_pos(25, 50) sleep(2) self.assertFalse(self.app.check_cards()) def test_check_menu(self): # put mouse outside the menu pygame.mouse.set_pos(100, 100) self.assertFalse(self.app.check_menu()) # put mouse on one of the buttons pygame.mouse.set_pos(5, 5) self.assertFalse(self.app.check_menu())
class TestBoard(TestCase): def setUp(self): self.app = Application() self.app.load_deck() def test_algerian_create(self): fields = algerian(self.app._double_deck) # check numbers of fields self.assertTrue(17, len(fields)) # check types of fields for field in fields[:8]: self.assertTrue(isinstance(field, Stack)) for field in fields[8:16]: self.assertTrue(isinstance(field, Pile)) self.assertTrue(isinstance(fields[16], LongDeck)) def test_algerian_shuffle(self): fields = algerian(self.app._double_deck) fields = algerian_shuffle(fields, self.app._double_deck) for field in fields[:8]: self.assertFalse(field.show_cards()) for field in fields[8:12]: self.assertTrue(len(field.show_cards()) == 2) for field in fields[12:16]: self.assertTrue(len(field.show_cards()) == 1) self.assertTrue(len(fields[16].show_cards()) == 68) for field in fields[16].show_subfields(): self.assertTrue(len(field.show_cards()) == 4) def test_canfield_create(self): fields = canfield(self.app._deck) # check number of fields self.assertEqual(10, len(fields)) # check types of fields for field in fields[:4]: self.assertTrue(isinstance(field, Stack)) self.assertTrue(isinstance(fields[4], Deck)) for field in fields[5:9]: self.assertTrue(isinstance(field, Pile)) self.assertTrue(isinstance(fields[9], UnputtablePile)) def test_canfield_shuffle(self): fields = canfield(self.app._deck) fields = canfield_shuffle(fields, self.app._deck) for field in fields[:4]: self.assertFalse(field.show_cards()) self.assertEqual(34, len(fields[4].show_cards())) for field in fields[5:9]: self.assertEqual(1, len(field.show_cards())) self.assertEqual(14, len(fields[9].show_cards())) def test_fifteen_puzzle_create(self): fields = fifteen_puzzle(self.app._deck) # check number of fields self.assertEqual(15, len(fields)) # chcek type of fields for field in fields: self.assertTrue(isinstance(field, Fours)) def test_fifteen_puzzle_shuffle(self): fields = fifteen_puzzle(self.app._deck) fields = fifteen_puzzle_shuffle(fields, self.app._deck) for field in fields[:13]: self.assertEqual(4, len(field.show_cards())) self.assertEqual(0, len(fields[13].show_cards())) self.assertEqual(0, len(fields[14].show_cards())) def test_klondike_create(self): fields = klondike(self.app._deck) self.assertEqual(12, len(fields)) self.assertTrue(isinstance(fields[0], Deck)) for field in fields[1:8]: self.assertTrue(isinstance(field, Pile)) for field in fields[8:]: self.assertTrue(isinstance(field, Stack)) def test_klondike_shuffle(self): fields = klondike(self.app._deck) fields = klondike_shuffle(fields, self.app._deck) self.assertEqual(24, len(fields[0].show_cards())) for i, field in enumerate(fields[1:8]): self.assertEqual(i + 1, len(field.show_cards())) def test_natali_create(self): fields = natali(self.app._double_deck) self.assertEqual(17, len(fields)) for field in fields[:8]: self.assertTrue(isinstance(field, Stack)) for field in fields[8:16]: self.assertTrue(isinstance(field, Pile)) self.assertTrue(isinstance(fields[16], Deck)) def test_natali_shuffle(self): fields = natali(self.app._double_deck) fields = natali_shuffle(fields, self.app._double_deck) for field in fields[:8]: self.assertFalse(field.show_cards()) for i, field in enumerate(fields[8:16:-1]): self.assertEqual(i + 1, len(field.show_cards())) self.assertEqual(68, len(fields[16].show_cards())) def test_osmosis_create(self): fields = osmosis(self.app._deck) self.assertEqual(9, len(fields)) for field in fields[:4]: self.assertTrue(isinstance(field, Fours)) for field in fields[4:8]: self.assertTrue(isinstance(field, Cascade)) self.assertTrue(isinstance(fields[8], Deck)) def test_osmosis_shuffle(self): fields = osmosis(self.app._deck) fields = osmosis_shuffle(fields, self.app._deck) for field in fields[:4]: self.assertEqual(4, len(field.show_cards())) self.assertEqual(1, len(fields[4].show_cards())) for field in fields[5:8]: self.assertEqual(0, len(field.show_cards())) self.assertEqual(35, len(fields[8].show_cards()))
class TestFields(TestCase): def setUp(self): self.app = Application() self.app.load_deck() self.field = Pile(0, 0) self.dame_kier = Card(Suit.kier, self.app._ranks.D, 20, 20) self.as_pik = Card(Suit.pik, self.app._ranks.AS, 20, 20) self.as_karo = Card(Suit.karo, self.app._ranks.AS, 20, 20) self.walet_trefl = Card(Suit.trefl, self.app._ranks.W, 20, 20) self.dame_trefl = Card(Suit.trefl, self.app._ranks.D, 20, 20) def test_clicked(self): pygame.mouse.set_pos(100, 100) self.assertEqual(0, self.field.clicked()) pygame.mouse.set_pos(3, 3) self.assertEqual(0, self.field.clicked()) def test_add(self): self.field.add(self.app._deck[0]) self.field.add(self.app._deck[1:3]) self.assertEqual(3, len(self.field.show_cards())) def test_take(self): self.field.add(self.app._deck[0]) self.field.take([self.app._deck[0]]) self.assertEqual(0, len(self.field.show_cards())) def test_clear(self): self.field.add(self.app._deck) self.field.clear() self.assertEqual(0, len(self.field.show_cards())) def test_deck_index(self): deck = Deck(0, 0) self.assertEqual(-1, deck.get_index()) deck.set_index(5) self.assertEqual(5, deck.get_index()) deck.reset() self.assertEqual(-1, deck.get_index()) def test_pile_put(self): card, field = self.field.put([self.dame_kier]) self.assertEqual(self.dame_kier, card[0]) self.assertEqual(field, self.field) self.field.add(self.dame_kier) card, field = self.field.put([self.as_pik]) self.assertEqual(card[0], self.dame_kier) self.assertFalse(field) card, field = self.field.put([self.as_karo]) self.assertEqual(card[0], self.dame_kier) self.assertFalse(field) card, field = self.field.put([self.walet_trefl]) self.assertEqual(card[0], self.walet_trefl) self.assertEqual(field, self.field) def test_stack_put(self): stack = Stack(20, 20) card, field = stack.put([self.as_pik]) self.assertEqual(card[0], self.as_pik) self.assertEqual(field, stack) card, field = stack.put([self.walet_trefl]) self.assertFalse(card) self.assertEqual(field, stack) stack.add(self.walet_trefl) card, field = stack.put([self.dame_trefl]) self.assertEqual(card[0], self.dame_trefl) self.assertEqual(field, stack) card, field = stack.put([self.as_karo]) self.assertEqual(self.walet_trefl, card[0]) self.assertFalse(field) def test_fours_put(self): fours = Fours(20, 20) card, field = fours.put([self.as_pik]) self.assertEqual(card[0], self.as_pik) self.assertEqual(field, fours) card, field = fours.put([self.as_pik, self.walet_trefl]) self.assertFalse(card) self.assertEqual(field, fours) fours.add([self.as_pik]) card, field = fours.put([self.walet_trefl]) self.assertFalse(card) self.assertEqual(field, fours) card, field = fours.put([self.as_karo]) self.assertEqual(card[0], self.as_karo) self.assertEqual(field, fours)