from project.tennis_player import TennisPlayer
from unittest import TestCase, main
class TestTennisPlayer(TestCase):
def setUp(self) -> None:
self.tennis_player = TennisPlayer('Georgi', 37, 200)
def test_init(self):
self.assertEqual('Georgi', self.tennis_player.name)
self.assertEqual(37, self.tennis_player.age)
self.assertEqual(200, self.tennis_player.points)
self.assertEqual([], self.tennis_player.wins)
def test_name_is_less_than_two_characters_raise(self):
with self.assertRaises(ValueError) as ve:
self.tennis_player.name = 'a'
self.assertEqual("Name should be more than 2 symbols!", str(ve.exception))
def test_age_under_18_raises(self):
with self.assertRaises(ValueError) as ve:
self.tennis_player.age = 14
self.assertEqual("Players must be at least 18 years of age!", str(ve.exception))
def test_add_tournament_name_successfully(self):
result = self.tennis_player.add_new_win('Wimbeldon')
self.assertEqual(['Wimbeldon'], self.tennis_player.wins)
def test_tournament_name_is_already_added_raises(self):
self.tennis_player.add_new_win('Wimbeldon')
result = self.tennis_player.add_new_win('Wimbeldon')
expected_result = "Wimbeldon has been already added to the list of wins!"
self.assertEqual(expected_result, result)
def test_points_first_tennis_player_are_less_second_player(self):
second_player = TennisPlayer('Peter', 36, 300)
result = self.tennis_player < second_player
expected_result = 'Peter is a top seeded player and he/she is better than Georgi'
self.assertEqual(expected_result, result)
def test_points_second_tennis_player_are_less_first_player(self):
second_player = TennisPlayer('Peter', 36, 300)
result = second_player < self.tennis_player
expected_result = 'Peter is a better player than Georgi'
self.assertEqual(expected_result, result)
def test_str(self):
self.tennis_player.add_new_win('Wimbeldon')
self.tennis_player.add_new_win('Australian open')
result = f"Tennis Player: Georgi\n" \
f"Age: 37\n" \
f"Points: 200.0\n" \
f"Tournaments won: Wimbeldon, Australian open"
self.assertEqual(result, self.tennis_player.__str__())
if __name__ == '__main__':
main()