In [15]:
def get_earliest(date1, date2):
    """
    Returns the earlist of the two dates.
    """
    month1, day1, year1 = date1.split("/")
    month2, day2, year2 = date2.split("/")

    return date1 if (year1, month1, day1) < (year2, month2, day2) else date2

In [16]:
import unittest

class GetEarliestTests(unittest.TestCase):

    """Tests for get_earliest."""

    def test_same_month_and_day(self):
        newer = "01/27/1832"
        older = "01/27/1756"
        self.assertEqual(get_earliest(newer, older), older)

    def test_february_29th(self):
        newer = "02/29/1972"
        older = "12/21/1946"
        self.assertEqual(get_earliest(newer, older), older)

    def test_smaller_month_bigger_day(self):
        newer = "03/21/1946"
        older = "02/24/1946"
        self.assertEqual(get_earliest(older, newer), older)

    def test_same_month_and_year(self):
        newer = "06/24/1958"
        older = "06/21/1958"
        self.assertEqual(get_earliest(older, newer), older)

    def test_invalid_date_allowed(self):
        newer = "02/29/2006"
        older = "02/28/2006"
        self.assertEqual(get_earliest(older, newer), older)

    def test_two_invalid_dates(self):
        newer = "02/30/2006"
        older = "02/29/2006"
        self.assertEqual(get_earliest(newer, older), older)

    # To test the Bonus part of this exercise, comment out the following line
    @unittest.expectedFailure
    def test_many_dates(self):
        d1 = "01/24/2007"
        d2 = "01/21/2008"
        d3 = "02/29/2009"
        d4 = "02/30/2006"
        d5 = "02/28/2006"
        d6 = "02/29/2006"
        self.assertEqual(get_earliest(d1, d2, d3), d1)
        self.assertEqual(get_earliest(d1, d2, d3, d4), d4)
        self.assertEqual(get_earliest(d1, d2, d3, d4, d5, d6), d5)


if __name__ == "__main__":
    unittest.main(argv=['ignore-first-argument'], exit=False)


..x....
----------------------------------------------------------------------
Ran 7 tests in 0.003s

OK (expected failures=1)

In [24]:
def get_earliest(*dates):
    """
    Returns the earlist of the given dates.
    """
    older = None
    for date in dates:
        month, day, year = date.split("/")
        if older is None:
            older = year, month, day
        else:
            older = older if older < (year, month, day) else (year, month, day)

    year, month, day = older 
    return "/".join((month, day, year))

In [25]:
import unittest

class GetEarliestTests(unittest.TestCase):

    """Tests for get_earliest."""

    def test_same_month_and_day(self):
        newer = "01/27/1832"
        older = "01/27/1756"
        self.assertEqual(get_earliest(newer, older), older)

    def test_february_29th(self):
        newer = "02/29/1972"
        older = "12/21/1946"
        self.assertEqual(get_earliest(newer, older), older)

    def test_smaller_month_bigger_day(self):
        newer = "03/21/1946"
        older = "02/24/1946"
        self.assertEqual(get_earliest(older, newer), older)

    def test_same_month_and_year(self):
        newer = "06/24/1958"
        older = "06/21/1958"
        self.assertEqual(get_earliest(older, newer), older)

    def test_invalid_date_allowed(self):
        newer = "02/29/2006"
        older = "02/28/2006"
        self.assertEqual(get_earliest(older, newer), older)

    def test_two_invalid_dates(self):
        newer = "02/30/2006"
        older = "02/29/2006"
        self.assertEqual(get_earliest(newer, older), older)

    # To test the Bonus part of this exercise, comment out the following line
    # @unittest.expectedFailure
    def test_many_dates(self):
        d1 = "01/24/2007"
        d2 = "01/21/2008"
        d3 = "02/29/2009"
        d4 = "02/30/2006"
        d5 = "02/28/2006"
        d6 = "02/29/2006"
        self.assertEqual(get_earliest(d1, d2, d3), d1)
        self.assertEqual(get_earliest(d1, d2, d3, d4), d4)
        self.assertEqual(get_earliest(d1, d2, d3, d4, d5, d6), d5)


if __name__ == "__main__":
    unittest.main(argv=['ignore-first-argument'], exit=False)


.......
----------------------------------------------------------------------
Ran 7 tests in 0.007s

OK

In [1]:
def get_earliest(*dates):
    """
    Returns the earlist of the given dates.
    """
    return min(dates)

In [2]:
newer = "01/27/1832"
older = "01/27/1756"
get_earliest(newer, older)


Out[2]:
'01/27/1756'

In [3]:
newer = "02/29/1972"
older = "12/21/1946"
get_earliest(newer, older)


Out[3]:
'02/29/1972'

In [4]:
def get_earliest(*dates):
    """
    Returns the earlist of the given dates.
    """
    def date_key(date):
        month, day, year = date.split("/")
        return year, month, day
    return min(dates, key=date_key)

In [5]:
newer = "01/27/1832"
older = "01/27/1756"
get_earliest(newer, older)


Out[5]:
'01/27/1756'

In [6]:
newer = "02/29/1972"
older = "12/21/1946"
get_earliest(newer, older)


Out[6]:
'12/21/1946'

In [7]:
import unittest

class GetEarliestTests(unittest.TestCase):

    """Tests for get_earliest."""

    def test_same_month_and_day(self):
        newer = "01/27/1832"
        older = "01/27/1756"
        self.assertEqual(get_earliest(newer, older), older)

    def test_february_29th(self):
        newer = "02/29/1972"
        older = "12/21/1946"
        self.assertEqual(get_earliest(newer, older), older)

    def test_smaller_month_bigger_day(self):
        newer = "03/21/1946"
        older = "02/24/1946"
        self.assertEqual(get_earliest(older, newer), older)

    def test_same_month_and_year(self):
        newer = "06/24/1958"
        older = "06/21/1958"
        self.assertEqual(get_earliest(older, newer), older)

    def test_invalid_date_allowed(self):
        newer = "02/29/2006"
        older = "02/28/2006"
        self.assertEqual(get_earliest(older, newer), older)

    def test_two_invalid_dates(self):
        newer = "02/30/2006"
        older = "02/29/2006"
        self.assertEqual(get_earliest(newer, older), older)

    # To test the Bonus part of this exercise, comment out the following line
    # @unittest.expectedFailure
    def test_many_dates(self):
        d1 = "01/24/2007"
        d2 = "01/21/2008"
        d3 = "02/29/2009"
        d4 = "02/30/2006"
        d5 = "02/28/2006"
        d6 = "02/29/2006"
        self.assertEqual(get_earliest(d1, d2, d3), d1)
        self.assertEqual(get_earliest(d1, d2, d3, d4), d4)
        self.assertEqual(get_earliest(d1, d2, d3, d4, d5, d6), d5)


if __name__ == "__main__":
    unittest.main(argv=['ignore-first-argument'], exit=False)


.......
----------------------------------------------------------------------
Ran 7 tests in 0.012s

OK

In [ ]: