]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Convert asynchat test to unittest; exercise the client using a numeric value as the...
authorAndrew M. Kuchling <amk@amk.ca>
Thu, 9 Jun 2005 14:56:31 +0000 (14:56 +0000)
committerAndrew M. Kuchling <amk@amk.ca>
Thu, 9 Jun 2005 14:56:31 +0000 (14:56 +0000)
Lib/test/test_asynchat.py

index e91c572162cb606b262d07c432543d3469789cab..d10e389a55c9c972ce7a0128461d3a5ca484f12a 100644 (file)
@@ -2,6 +2,8 @@
 
 import thread # If this fails, we can't test this module
 import asyncore, asynchat, socket, threading, time
+import unittest
+from test import test_support
 
 HOST = "127.0.0.1"
 PORT = 54321
@@ -16,7 +18,7 @@ class echo_server(threading.Thread):
         conn, client = sock.accept()
         buffer = ""
         while "\n" not in buffer:
-            data = conn.recv(10)
+            data = conn.recv(1)
             if not data:
                 break
             buffer = buffer + data
@@ -28,31 +30,61 @@ class echo_server(threading.Thread):
 
 class echo_client(asynchat.async_chat):
 
-    def __init__(self):
+    def __init__(self, terminator):
         asynchat.async_chat.__init__(self)
+        self.contents = None
         self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
         self.connect((HOST, PORT))
-        self.set_terminator("\n")
+        self.set_terminator(terminator)
         self.buffer = ""
 
     def handle_connect(self):
-        print "Connected"
+        pass
+        ##print "Connected"
 
     def collect_incoming_data(self, data):
         self.buffer = self.buffer + data
 
     def found_terminator(self):
-        print "Received:", repr(self.buffer)
+        #print "Received:", repr(self.buffer)
+        self.contents = self.buffer
         self.buffer = ""
         self.close()
 
-def main():
-    s = echo_server()
-    s.start()
-    time.sleep(1) # Give server time to initialize
-    c = echo_client()
-    c.push("hello ")
-    c.push("world\n")
-    asyncore.loop()
 
-main()
+class TestAsynchat(unittest.TestCase):
+    def setUp (self):
+        pass
+
+    def tearDown (self):
+        pass
+
+    def test_line_terminator(self):
+        s = echo_server()
+        s.start()
+        time.sleep(1) # Give server time to initialize
+        c = echo_client('\n')
+        c.push("hello ")
+        c.push("world\n")
+        asyncore.loop()
+
+        self.assertEqual(c.contents, 'hello world')
+
+    def test_numeric_terminator(self):
+        # Try reading a fixed number of bytes
+        s = echo_server()
+        s.start()
+        time.sleep(1) # Give server time to initialize
+        c = echo_client(6L)
+        c.push("hello ")
+        c.push("world\n")
+        asyncore.loop()
+
+        self.assertEqual(c.contents, 'hello ')
+
+
+def test_main(verbose=None):
+    test_support.run_unittest(TestAsynchat)
+
+if __name__ == "__main__":
+    test_main(verbose=True)