summaryrefslogtreecommitdiff
path: root/test/dialect/firebird.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/dialect/firebird.py')
-rw-r--r--test/dialect/firebird.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/test/dialect/firebird.py b/test/dialect/firebird.py
index 636ab2d05..f3cd57aa7 100644
--- a/test/dialect/firebird.py
+++ b/test/dialect/firebird.py
@@ -1,6 +1,7 @@
import testbase
from sqlalchemy import *
from sqlalchemy.databases import firebird
+from sqlalchemy.exceptions import ProgrammingError
from sqlalchemy.sql import table, column
from testlib import *
@@ -11,6 +12,53 @@ class BasicTest(AssertMixin):
return True
+class DomainReflectionTest(AssertMixin):
+ "Test Firebird domains"
+
+ @testing.supported('firebird')
+ def setUpAll(self):
+ con = testbase.db.connect()
+ try:
+ con.execute('CREATE DOMAIN int_domain AS INTEGER DEFAULT 42 NOT NULL')
+ con.execute('CREATE DOMAIN str_domain AS VARCHAR(255)')
+ con.execute('CREATE DOMAIN rem_domain AS BLOB SUB_TYPE TEXT')
+ con.execute('CREATE DOMAIN img_domain AS BLOB SUB_TYPE BINARY')
+ except ProgrammingError, e:
+ if not "attempt to store duplicate value" in str(e):
+ raise e
+ con.execute('''CREATE TABLE testtable (question int_domain,
+ answer str_domain,
+ remark rem_domain,
+ photo img_domain,
+ d date,
+ t time,
+ dt timestamp)''')
+
+ @testing.supported('firebird')
+ def tearDownAll(self):
+ con = testbase.db.connect()
+ con.execute('DROP TABLE testtable')
+ con.execute('DROP DOMAIN int_domain')
+ con.execute('DROP DOMAIN str_domain')
+ con.execute('DROP DOMAIN rem_domain')
+ con.execute('DROP DOMAIN img_domain')
+
+ @testing.supported('firebird')
+ def test_table_is_reflected(self):
+ metadata = MetaData(testbase.db)
+ table = Table('testtable', metadata, autoload=True)
+ self.assertEquals(set(table.columns.keys()),
+ set(['question', 'answer', 'remark', 'photo', 'd', 't', 'dt']),
+ "Columns of reflected table didn't equal expected columns")
+ self.assertEquals(table.c.question.type.__class__, firebird.FBInteger)
+ self.assertEquals(table.c.answer.type.__class__, firebird.FBString)
+ self.assertEquals(table.c.remark.type.__class__, firebird.FBText)
+ self.assertEquals(table.c.photo.type.__class__, firebird.FBBinary)
+ # The following assume a Dialect 3 database
+ self.assertEquals(table.c.d.type.__class__, firebird.FBDate)
+ self.assertEquals(table.c.t.type.__class__, firebird.FBTime)
+ self.assertEquals(table.c.dt.type.__class__, firebird.FBDateTime)
+
class CompileTest(SQLCompileTest):
__dialect__ = firebird.FBDialect()