summaryrefslogtreecommitdiff
path: root/test/pgresultset_tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/pgresultset_tests.py')
-rw-r--r--test/pgresultset_tests.py202
1 files changed, 202 insertions, 0 deletions
diff --git a/test/pgresultset_tests.py b/test/pgresultset_tests.py
new file mode 100644
index 0000000..81f1d46
--- /dev/null
+++ b/test/pgresultset_tests.py
@@ -0,0 +1,202 @@
+#!/usr/bin/env python
+import testsupport
+import os, unittest, sys
+import sqlite
+
+class PgResultSetTests(unittest.TestCase, testsupport.TestSupport):
+ def setUp(self):
+ self.filename = self.getfilename()
+ self.cnx = sqlite.connect(self.filename)
+ self.cur = self.cnx.cursor()
+
+ def tearDown(self):
+ try:
+ self.cnx.close()
+ self.removefile()
+ except AttributeError:
+ pass
+ except sqlite.ProgrammingError:
+ pass
+
+ def getResult(self):
+ try:
+ self.cur.execute("DROP TABLE TEST")
+ except sqlite.DatabaseError, reason:
+ pass
+
+ self.cur.execute("CREATE TABLE TEST (id, name, age)")
+ self.cur.execute("INSERT INTO TEST (id, name, age) VALUES (%s, %s, %s)",
+ (5, 'Alice', 29))
+ self.cur.execute("-- types int, str, int")
+ self.cur.execute("SELECT id, name, age FROM TEST")
+ return self.cur.fetchone()
+
+ def CheckAttributeAccess(self):
+ res = self.getResult()
+ if not hasattr(res, "id"):
+ self.fail("Resultset doesn't have attribute 'id'")
+ if not hasattr(res, "ID"):
+ self.fail("Resultset doesn't have attribute 'ID'")
+
+ def CheckAttributeValue(self):
+ res = self.getResult()
+ if res.id != 5:
+ self.fail("id should be 5, is %i" % res.id)
+ if res.ID != 5:
+ self.fail("ID should be 5, is %i" % res.ID)
+
+ def CheckKeyAccess(self):
+ res = self.getResult()
+ if not "id" in res:
+ self.fail("Resultset doesn't have item 'id'")
+ if not "ID" in res:
+ self.fail("Resultset doesn't have item 'ID'")
+
+ def CheckKeyValue(self):
+ res = self.getResult()
+ if res["id"] != 5:
+ self.fail("id should be 5, is %i" % res.id)
+ if res["ID"] != 5:
+ self.fail("ID should be 5, is %i" % res.ID)
+
+ def CheckIndexValue(self):
+ res = self.getResult()
+ if res[0] != 5:
+ self.fail("item 0 should be 5, is %i" % res.id)
+
+ def Check_haskey(self):
+ res = self.getResult()
+ if not res.has_key("id"):
+ self.fail("resultset should have key 'id'")
+ if not res.has_key("ID"):
+ self.fail("resultset should have key 'ID'")
+ if not res.has_key("Id"):
+ self.fail("resultset should have key 'Id'")
+
+ def Check_len(self):
+ l = len(self.getResult())
+ if l != 3:
+ self.fail("length of resultset should be 3, is %i", l)
+
+ def Check_keys(self):
+ res = self.getResult()
+ if res.keys() != ["id", "name", "age"]:
+ self.fail("keys() should return %s, returns %s" %
+ (["id", "name", "age"], res.keys()))
+
+ def Check_values(self):
+ val = self.getResult().values()
+ if val != (5, 'Alice', 29):
+ self.fail("Wrong values(): %s" % val)
+
+ def Check_items(self):
+ it = self.getResult().items()
+ if it != [("id", 5), ("name", 'Alice'), ("age", 29)]:
+ self.fail("Wrong items(): %s" % it)
+
+ def Check_get(self):
+ res = self.getResult()
+ v = res.get("id")
+ if v != 5:
+ self.fail("Wrong result for get [1]")
+
+ v = res.get("ID")
+ if v != 5:
+ self.fail("Wrong result for get [2]")
+
+ v = res.get("asdf")
+ if v is not None:
+ self.fail("Wrong result for get [3]")
+
+ v = res.get("asdf", 6)
+ if v != 6:
+ self.fail("Wrong result for get [4]")
+
+class TupleResultTests(unittest.TestCase, testsupport.TestSupport):
+ def setUp(self):
+ self.filename = self.getfilename()
+ self.cnx = sqlite.connect(self.filename)
+ self.cnx.rowclass = tuple
+ self.cur = self.cnx.cursor()
+
+ def tearDown(self):
+ try:
+ self.cnx.close()
+ self.removefile()
+ except AttributeError:
+ pass
+ except sqlite.ProgrammingError:
+ pass
+
+ def getOneResult(self):
+ try:
+ self.cur.execute("DROP TABLE TEST")
+ except sqlite.DatabaseError, reason:
+ pass
+
+ self.cur.execute("CREATE TABLE TEST (id, name, age)")
+ self.cur.execute("INSERT INTO TEST (id, name, age) VALUES (%s, %s, %s)",
+ (5, 'Alice', 29))
+ self.cur.execute("-- types int, str, int")
+ self.cur.execute("SELECT id, name, age FROM TEST")
+ return self.cur.fetchone()
+
+ def getManyResults(self):
+ try:
+ self.cur.execute("DROP TABLE TEST")
+ except sqlite.DatabaseError, reason:
+ pass
+
+ self.cur.execute("CREATE TABLE TEST (id, name, age)")
+ self.cur.execute("INSERT INTO TEST (id, name, age) VALUES (%s, %s, %s)",
+ (5, 'Alice', 29))
+ self.cur.execute("INSERT INTO TEST (id, name, age) VALUES (%s, %s, %s)",
+ (5, 'Alice', 29))
+ self.cur.execute("INSERT INTO TEST (id, name, age) VALUES (%s, %s, %s)",
+ (5, 'Alice', 29))
+ self.cur.execute("-- types int, str, int")
+ self.cur.execute("SELECT id, name, age FROM TEST")
+ return self.cur.fetchmany(2)
+
+ def getAllResults(self):
+ try:
+ self.cur.execute("DROP TABLE TEST")
+ except sqlite.DatabaseError, reason:
+ pass
+
+ self.cur.execute("CREATE TABLE TEST (id, name, age)")
+ self.cur.execute("INSERT INTO TEST (id, name, age) VALUES (%s, %s, %s)",
+ (5, 'Alice', 29))
+ self.cur.execute("INSERT INTO TEST (id, name, age) VALUES (%s, %s, %s)",
+ (5, 'Alice', 29))
+ self.cur.execute("INSERT INTO TEST (id, name, age) VALUES (%s, %s, %s)",
+ (5, 'Alice', 29))
+ self.cur.execute("-- types int, str, int")
+ self.cur.execute("SELECT id, name, age FROM TEST")
+ return self.cur.fetchall()
+
+ def CheckRowTypeIsTupleFetchone(self):
+ res = self.getOneResult()
+ self.failUnless(type(res) is tuple, "Result type of row isn't a tuple")
+
+ def CheckRowTypeIsTupleFetchmany(self):
+ res = self.getManyResults()
+ self.failUnless(type(res[1]) is tuple, "Result type of row isn't a tuple")
+
+ def CheckRowTypeIsTupleFetchall(self):
+ res = self.getAllResults()
+ self.failUnless(type(res[2]) is tuple, "Result type of row isn't a tuple")
+
+def suite():
+ tests = [unittest.makeSuite(PgResultSetTests, "Check"),
+ unittest.makeSuite(PgResultSetTests, "Check")]
+ if sys.version_info >= (2,2):
+ tests.append(unittest.makeSuite(TupleResultTests, "Check"))
+ return unittest.TestSuite(tests)
+
+def main():
+ runner = unittest.TextTestRunner()
+ runner.run(suite())
+
+if __name__ == "__main__":
+ main()