add: test for proxy.py
diff --git a/test_proxy.py b/test_proxy.py
new file mode 100644
index 00000000..fdf9188a
--- /dev/null
+++ b/test_proxy.py
@@ -0,0 +1,105 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+from proxy import Proxy, NoTalkProxy
+from io import StringIO
+import sys
+from time import time
+
+if sys.version_info < (2, 7):
+    import unittest2 as unittest
+else:
+    import unittest
+
+
+class ProxyTest(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        """ Class scope setup. """
+        cls.p = Proxy()
+
+    def setUp(cls):
+        """ Function/test case scope setup. """
+        cls.output = StringIO()
+        cls.saved_stdout = sys.stdout
+        sys.stdout = cls.output
+
+    def tearDown(cls):
+        """ Function/test case scope teardown. """
+        cls.output.close()
+        sys.stdout = cls.saved_stdout
+
+    def test_sales_manager_shall_talk_through_proxy_with_delay(cls):
+        cls.p.busy = 'No'
+        start_time = time()
+        cls.p.talk()
+        end_time = time()
+        execution_time = end_time - start_time
+        print_output = cls.output.getvalue()
+        expected_print_output = 'Proxy checking for Sales Manager availability\n\
+Sales Manager ready to talk\n'
+        cls.assertEqual(print_output, expected_print_output)
+        expected_execution_time = 2
+        cls.assertEqual(int(execution_time), expected_execution_time)
+
+    def test_sales_manager_shall_respond_through_proxy_with_delay(cls):
+        cls.p.busy = 'Yes'
+        start_time = time()
+        cls.p.talk()
+        end_time = time()
+        execution_time = end_time - start_time
+        print_output = cls.output.getvalue()
+        expected_print_output = 'Proxy checking for Sales Manager availability\n\
+Sales Manager is busy\n'
+        cls.assertEqual(print_output, expected_print_output)
+        expected_execution_time = 2
+        cls.assertEqual(int(execution_time), expected_execution_time)
+
+
+class NoTalkProxyTest(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        """ Class scope setup. """
+        cls.ntp = NoTalkProxy()
+
+    def setUp(cls):
+        """ Function/test case scope setup. """
+        cls.output = StringIO()
+        cls.saved_stdout = sys.stdout
+        sys.stdout = cls.output
+
+    def tearDown(cls):
+        """ Function/test case scope teardown. """
+        cls.output.close()
+        sys.stdout = cls.saved_stdout
+
+    def test_sales_manager_shall_not_talk_through_proxy_with_delay(cls):
+        cls.ntp.busy = 'No'
+        start_time = time()
+        cls.ntp.talk()
+        end_time = time()
+        execution_time = end_time - start_time
+        print_output = cls.output.getvalue()
+        expected_print_output = 'Proxy checking for Sales Manager availability\n\
+This Sales Manager will not talk to you whether he/she is busy or not\n'
+        cls.assertEqual(print_output, expected_print_output)
+        expected_execution_time = 2
+        cls.assertEqual(int(execution_time), expected_execution_time)
+
+    def test_sales_manager_shall_not_respond_through_proxy_with_delay(cls):
+        cls.ntp.busy = 'Yes'
+        start_time = time()
+        cls.ntp.talk()
+        end_time = time()
+        execution_time = end_time - start_time
+        print_output = cls.output.getvalue()
+        expected_print_output = 'Proxy checking for Sales Manager availability\n\
+This Sales Manager will not talk to you whether he/she is busy or not\n'
+        cls.assertEqual(print_output, expected_print_output)
+        expected_execution_time = 2
+        cls.assertEqual(int(execution_time), expected_execution_time)
+
+if __name__ == "__main__":
+    unittest.main()

#138 brought some tests for the actual proxy.py version on my local machine back to my mind. Runs with Python3.4.1 on Linux.
