def test_dates(self): "Exercise type specification for date types." columns = [ # column type, args, kwargs, expected ddl (mssql.MSDateTime, [], {}, "DATETIME", []), (types.DATE, [], {}, "DATE", [">=", (10,)]), (types.Date, [], {}, "DATE", [">=", (10,)]), (types.Date, [], {}, "DATETIME", ["<", (10,)], mssql.MSDateTime), (mssql.MSDate, [], {}, "DATE", [">=", (10,)]), (mssql.MSDate, [], {}, "DATETIME", ["<", (10,)], mssql.MSDateTime), (types.TIME, [], {}, "TIME", [">=", (10,)]), (types.Time, [], {}, "TIME", [">=", (10,)]), (mssql.MSTime, [], {}, "TIME", [">=", (10,)]), (mssql.MSTime, [1], {}, "TIME(1)", [">=", (10,)]), (types.Time, [], {}, "DATETIME", ["<", (10,)], mssql.MSDateTime), (mssql.MSTime, [], {}, "TIME", [">=", (10,)]), (mssql.MSSmallDateTime, [], {}, "SMALLDATETIME", []), (mssql.MSDateTimeOffset, [], {}, "DATETIMEOFFSET", [">=", (10,)]), ( mssql.MSDateTimeOffset, [1], {}, "DATETIMEOFFSET(1)", [">=", (10,)], ), (mssql.MSDateTime2, [], {}, "DATETIME2", [">=", (10,)]), (mssql.MSDateTime2, [0], {}, "DATETIME2(0)", [">=", (10,)]), (mssql.MSDateTime2, [1], {}, "DATETIME2(1)", [">=", (10,)]), ] table_args = ["test_mssql_dates", metadata] for index, spec in enumerate(columns): type_, args, kw, res, requires = spec[0:5] if ( requires and testing._is_excluded("mssql", *requires) or not requires ): c = Column("c%s" % index, type_(*args, **kw), nullable=None) testing.db.dialect.type_descriptor(c.type) table_args.append(c) dates_table = Table(*table_args) gen = testing.db.dialect.ddl_compiler( testing.db.dialect, schema.CreateTable(dates_table) ) for col in dates_table.c: index = int(col.name[1:]) testing.eq_( gen.get_column_specification(col), "%s %s" % (col.name, columns[index][3]), ) self.assert_(repr(col)) dates_table.create(checkfirst=True) reflected_dates = Table( "test_mssql_dates", MetaData(testing.db), autoload=True ) for col in reflected_dates.c: self.assert_types_base(col, dates_table.c[col.key])