Guest User

Untitled

a guest
May 25th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. from datetime import date
  2. import unittest
  3.  
  4.  
  5. def calculate_age(birth_date, until=None):
  6. """
  7. Calculates the age of a person from their birth date to a given
  8. date, accounting for birth dates during leap year. The date
  9. defaults to today if no date is specified.
  10. """
  11. until = until or date.today()
  12.  
  13. try:
  14. birthday = date(until.year, birth_date.month, birth_date.day)
  15. except ValueError:
  16. birthday = date(until.year, birth_date.month, birth_date.day - 1)
  17.  
  18. if birthday > until:
  19. return until.year - birth_date.year - 1
  20. else:
  21. return until.year - birth_date.year
  22.  
  23.  
  24. class CalculateAgeTest(unittest.TestCase):
  25.  
  26. def test_calculate_age(self):
  27. data = [
  28. # test normal dates
  29. [
  30. date(year=1982, month=11, day=26),
  31. date(year=2000, month=11, day=25),
  32. 17,
  33. ],
  34. [
  35. date(year=1982, month=11, day=26),
  36. date(year=2000, month=11, day=26),
  37. 18,
  38. ],
  39.  
  40. # test leap year
  41. [
  42. date(year=1996, month=2, day=29),
  43. date(year=2000, month=2, day=26),
  44. 3,
  45. ],
  46. [
  47. date(year=1996, month=2, day=29),
  48. date(year=2000, month=2, day=29),
  49. 4,
  50. ],
  51. [
  52. date(year=1996, month=2, day=29),
  53. date(year=2001, month=3, day=1),
  54. 5,
  55. ],
  56. ]
  57.  
  58. for entry in data:
  59. self.assertEqual(calculate_age(entry[0], entry[1]), entry[2])
  60.  
  61.  
  62. if __name__ == "__main__":
  63. unittest.main()
Add Comment
Please, Sign In to add comment