Author: cito
Date: Thu Nov 19 10:39:13 2015
New Revision: 548
Log:
Add tests for direct socket access functions
Modified:
branches/4.x/module/TEST_PyGreSQL_classic_connection.py
Modified: branches/4.x/module/TEST_PyGreSQL_classic_connection.py
==============================================================================
--- branches/4.x/module/TEST_PyGreSQL_classic_connection.py Thu Nov 19
09:19:43 2015 (r547)
+++ branches/4.x/module/TEST_PyGreSQL_classic_connection.py Thu Nov 19
10:39:13 2015 (r548)
@@ -222,8 +222,6 @@
self.assertGreaterEqual(r, 0)
-
-
class TestSimpleQueries(unittest.TestCase):
""""Test simple queries via a basic pg connection."""
@@ -646,7 +644,7 @@
self.c.query("set datestyle='ISO,YMD'")
def tearDown(self):
- self.c.query('truncate table test')
+ self.c.query("truncate table test")
self.c.close()
data = [
@@ -746,7 +744,73 @@
self.assertEqual(self.get_back(), data)
-class TestNoticeReceiver(unittest.TestCase):
+class TestDirectSocketAccess(unittest.TestCase):
+ """"Test copy command with direct socket access."""
+
+ @classmethod
+ def setUpClass(cls):
+ c = connect()
+ c.query("drop table if exists test cascade")
+ c.query("create table test (i int, v varchar(16))")
+ c.close()
+
+ @classmethod
+ def tearDownClass(cls):
+ c = connect()
+ c.query("drop table test cascade")
+ c.close()
+
+ def setUp(self):
+ self.c = connect()
+ self.c.query("set datestyle='ISO,YMD'")
+
+ def tearDown(self):
+ self.c.query("truncate table test")
+ self.c.close()
+
+ def testPutline(self):
+ putline = self.c.putline
+ query = self.c.query
+ data = list(enumerate("apple pear plum cherry banana".split()))
+ query("copy test from stdin")
+ try:
+ for i, v in data:
+ putline("%d\t%s\n" % (i, v))
+ putline("\\.\n")
+ finally:
+ self.c.endcopy()
+ r = query("select * from test").getresult()
+ self.assertEqual(r, data)
+
+ def testPutline(self):
+ getline = self.c.getline
+ query = self.c.query
+ data = list(enumerate("apple banana pear plum strawberry".split()))
+ n = len(data)
+ self.c.inserttable('test', data)
+ query("copy test to stdout")
+ try:
+ for i in range(n + 2):
+ v = getline()
+ if i < n:
+ self.assertEqual(v, '%d\t%s' % data[i])
+ elif i == n:
+ self.assertEqual(v, '\\.')
+ else:
+ self.assertIsNone(v)
+ finally:
+ try:
+ self.c.endcopy()
+ except IOError:
+ pass
+
+ def testParameterChecks(self):
+ self.assertRaises(TypeError, self.c.putline)
+ self.assertRaises(TypeError, self.c.getline, 'invalid')
+ self.assertRaises(TypeError, self.c.endcopy, 'invalid')
+
+
+class TestNotificatons(unittest.TestCase):
""""Test notification support."""
def setUp(self):
@@ -756,7 +820,7 @@
self.c.close()
def testGetNotify(self):
- getnotify = self.connection.getnotify
+ getnotify = self.c.getnotify
query = self.c.query
self.assertIsNone(getnotify())
query('listen test_notify')
_______________________________________________
PyGreSQL mailing list
[email protected]
https://mail.vex.net/mailman/listinfo.cgi/pygresql