def testAdd(self): m = Modulo(self.MAX_VALUE, self.INVALID_VALUE) self.assertEqual(0, m.add(0, 0)) self.assertEqual(123, m.add(23, 100)) self.assertEqual(100, m.add(-100, 200)) self.assertEqual(self.INVALID_VALUE, m.add(self.INVALID_VALUE, 100)) self.assertEqual(self.INVALID_VALUE, m.add(100, self.INVALID_VALUE)) self.assertEqual(self.INVALID_VALUE, m.add(self.INVALID_VALUE, self.INVALID_VALUE))
class Date: def __init__(self): self.weekday = Modulo(7, 1) self.year = 1900 def __repr__(self): return weekdays[self.weekday.value] + " " + str(self.year) def isSUN(self): if self.weekday == Modulo(7, 0): return True else: return False def isLeapYear(self): if self.year % 4 == 0: if self.year % 100 == 0: if self.year % 400 == 0: return True else: return False else: return True else: return False def countSundays(self): for mon in months: # 1900 is not a leap year and not part of the 20th century self.weekday.add(months[mon]) self.year += 1 # now in the 20th century count = 0 print(self) if self.isSUN(): count += 1 for i in range(100): if not self.isLeapYear(): for mon in months: self.weekday.add(months[mon]) if self.isSUN(): count += 1 print( month_names[Modulo( 12, month_names.index(mon)).add(1).value] + ": ", self) else: for mon in months_leap: self.weekday.add(months_leap[mon]) if self.isSUN(): count += 1 print( month_names[Modulo( 12, month_names.index(mon)).add(1).value] + ": ", self) self.year += 1 return count