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())