1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
import unittest
from pmock import *
class SystemError(Exception):
def __init__(self, msg):
self.msg = msg
class Greeting:
def __init__(self, system):
self._system = system
def message(self):
try:
(hours, seconds) = self._system.time()
if hours < 12:
return "Good morning"
elif hours >= 12 and hours < 19:
return "Good afternoon"
else:
return "Good evening"
except SystemError, err:
self._system.log("time problem: %s" % err.msg)
return "Good day"
class GreetingTest(MockTestCase):
def setUp(self):
self.system = self.mock()
self.greeting = Greeting(self.system)
def test_afternoon(self):
self.system.expects(once()).time().will(return_value((12,10)))
self.assertEqual(self.greeting.message(), "Good afternoon")
def test_morning(self):
self.system.expects(once()).time().will(return_value((6,50)))
self.assertEqual(self.greeting.message(), "Good morning")
def test_evening(self):
self.system.expects(once()).time().will(return_value((19,50)))
self.assertEqual(self.greeting.message(), "Good evening")
def test_clock_failure(self):
err_msg = "bzzz..malfunction"
err = SystemError(err_msg)
self.system.expects(once()).time().will(raise_exception(err))
self.system.expects(once()).log(string_contains(err_msg))
self.assertEqual(self.greeting.message(), "Good day")
if __name__ == "__main__":
unittest.main()
|