def test_NUMERIC(self): for mysqltype in ("DECIMAL", "NUMERIC"): col = Column.match("`colname` {} UNSIGNED,".format(mysqltype)) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'NUMERIC') self.assertIsNone(col.collen) self.assertIsNotNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNone(col.notnull) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" NUMERIC') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" NUMERIC') col = Column.match("`colname` {}(4,12) ZEROFILL,".format(mysqltype)) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'NUMERIC') self.assertEqual(col.collen, [4, 12]) self.assertIsNone(col.unsigned) self.assertIsNotNone(col.zerofill) self.assertIsNone(col.notnull) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" NUMERIC') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" NUMERIC') col = Column.match("`colname` {}( 4, 12 ) UNSIGNED ZEROFILL,".format(mysqltype)) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'NUMERIC') self.assertEqual(col.collen, [4, 12]) self.assertIsNotNone(col.unsigned) self.assertIsNotNone(col.zerofill) self.assertIsNone(col.notnull) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" NUMERIC') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" NUMERIC')
def test_DOUBLE(self): col = Column.match("`colname` DOUBLE UNSIGNED,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'DOUBLE') self.assertIsNone(col.collen) self.assertIsNotNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNone(col.notnull) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" DOUBLE') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" DOUBLE') col = Column.match("`colname` DOUBLE(4,12) ZEROFILL,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'DOUBLE') self.assertEqual(col.collen, [4, 12]) self.assertIsNone(col.unsigned) self.assertIsNotNone(col.zerofill) self.assertIsNone(col.notnull) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" DOUBLE') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" DOUBLE') col = Column.match("`colname` DOUBLE(4,12) UNSIGNED ZEROFILL,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'DOUBLE') self.assertEqual(col.collen, [4, 12]) self.assertIsNotNone(col.unsigned) self.assertIsNotNone(col.zerofill) self.assertIsNone(col.notnull) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" DOUBLE') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" DOUBLE')
def test_BINARY(self): for mysqltype in ( "BINARY", "VARBINARY", "TINYBLOB", "BLOB", "MEDIUMBLOB", "LONGBLOB", "TINYTEXT BINARY", "TEXT BINARY", "MEDIUMTEXT BINARY", "LONGTEXT BINARY" ): line = "`colname` {},".format(mysqltype) col = Column.match(line) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'BLOB', line) self.assertIsNone(col.collen) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNone(col.notnull) self.assertIsNone(col.autoincrement) self.assertIsNone(col.charset) self.assertIsNone(col.collate) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" BLOB') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" BLOB') col = Column.match("`colname` {} NOT NULL,".format(mysqltype)) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'BLOB') self.assertIsNone(col.collen) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertEqual(col.notnull, "NOT NULL") self.assertIsNone(col.autoincrement) self.assertIsNone(col.charset) self.assertIsNone(col.collate) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" BLOB') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" BLOB NOT NULL') col = Column.match("`colname` {} CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,".format(mysqltype)) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'BLOB') self.assertIsNone(col.collen) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertEqual(col.notnull, "NOT NULL") self.assertIsNone(col.autoincrement) self.assertEqual(col.charset, "utf8") self.assertEqual(col.collate, "utf8_unicode_ci") self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" BLOB') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" BLOB NOT NULL')
def test_YEAR(self): col = Column.match("`colname` YEAR,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'INTEGER') self.assertIsNone(col.collen) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNone(col.notnull) self.assertIsNone(col.autoincrement) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER')
def test_REAL(self): for mysqltype in ("REAL", "FLOAT"): col = Column.match("`colname` {} UNSIGNED,".format(mysqltype)) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'REAL') self.assertIsNone(col.collen) self.assertIsNotNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNone(col.notnull) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" REAL') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" REAL') col = Column.match("`colname` {}(4,12) ZEROFILL,".format(mysqltype)) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'REAL') self.assertEqual(col.collen, [4, 12]) self.assertIsNone(col.unsigned) self.assertIsNotNone(col.zerofill) self.assertIsNone(col.notnull) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" REAL') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" REAL') col = Column.match("`colname` {}( 4, 12 ) UNSIGNED ZEROFILL DEFAULT '13.14',".format(mysqltype)) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'REAL') self.assertEqual(col.collen, [4, 12]) self.assertIsNotNone(col.unsigned) self.assertIsNotNone(col.zerofill) self.assertIsNone(col.notnull) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" REAL DEFAULT 13.14') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" REAL DEFAULT 13.14') col = Column.match("`colname` {}( 4, 12 ) UNSIGNED ZEROFILL NOT null,".format(mysqltype)) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'REAL') self.assertEqual(col.collen, [4, 12]) self.assertIsNotNone(col.unsigned) self.assertIsNotNone(col.zerofill) self.assertEqual(col.notnull, "NOT null") self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" REAL') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" REAL NOT NULL')
def test_SET(self): col = Column.match("`colname` SET('small', 'medium', 'large') NOT NULL,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'TEXT') self.assertEqual(col.originaltype, 'SET') self.assertEqual(col.collen, ["'small'", "'medium'", "'large'"]) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNotNone(col.notnull) self.assertIsNone(col.autoincrement) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" TEXT') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" TEXT NOT NULL')
def test_CHAR(self): for mysqltype in ("CHAR", "VARCHAR", "TINYTEXT", "TEXT", "MEDIUMTEXT", "LONGTEXT"): col = Column.match("`colname` {},".format(mysqltype)) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'TEXT') self.assertIsNone(col.collen) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNone(col.notnull) self.assertIsNone(col.autoincrement) self.assertIsNone(col.charset) self.assertIsNone(col.collate) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" TEXT') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" TEXT') col = Column.match("`colname` {}(4) NOT NULL,".format(mysqltype)) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'TEXT') self.assertEqual(col.collen, [4]) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertEqual(col.notnull, "NOT NULL") self.assertIsNone(col.autoincrement) self.assertIsNone(col.charset) self.assertIsNone(col.collate) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" TEXT') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" TEXT NOT NULL') col = Column.match("`colname` {}(4) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,".format(mysqltype)) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'TEXT') self.assertEqual(col.collen, [4]) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertEqual(col.notnull, "NOT NULL") self.assertIsNone(col.autoincrement) self.assertEqual(col.charset, "utf8") self.assertEqual(col.collate, "utf8_unicode_ci") self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" TEXT') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" TEXT NOT NULL')
def test_BIT(self): col = Column.match("`colname` BIT,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'INTEGER') self.assertIsNone(col.collen) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNone(col.notnull) self.assertIsNone(col.autoincrement) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER') col = Column.match("`colname` BIT(4) NOT NULL,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'INTEGER') self.assertEqual(col.collen, [4]) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertEqual(col.notnull, "NOT NULL") self.assertIsNone(col.autoincrement) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER NOT NULL')
def test_INT(self): col = Column.match("`colname` INTEGER,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'INTEGER') self.assertIsNone(col.collen) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNone(col.notnull) self.assertIsNone(col.autoincrement) self.assertIsNone(col.key) self.assertIsNone(col.comment) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER') line = "`colname` INTEGER DEFAULT '1' COMMENT 'a string' COLUMN_FORMAT FIXED," col = Column.match(line) self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'INTEGER') self.assertIsNone(col.collen) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNone(col.notnull) self.assertIsNone(col.autoincrement) self.assertIsNone(col.key) self.assertEqual(col.comment, "'a string'", line) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER DEFAULT 1') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER DEFAULT 1') col = Column.match("`colname` INTEGER UNIQUE,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'INTEGER') self.assertIsNone(col.collen) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNone(col.notnull) self.assertIsNone(col.autoincrement) self.assertEqual(col.key, "UNIQUE") self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER UNIQUE') col = Column.match("`colname` INTEGER UNIQUE KEY,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'INTEGER') self.assertIsNone(col.collen) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNone(col.notnull) self.assertIsNone(col.autoincrement) self.assertEqual(col.key, "UNIQUE KEY") self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER UNIQUE') col = Column.match("`colname` INTEGER PRIMARY KEY,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'INTEGER') self.assertIsNone(col.collen) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNone(col.notnull) self.assertIsNone(col.autoincrement) self.assertEqual(col.key, "PRIMARY KEY") self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER PRIMARY KEY') col = Column.match("`colname` INTEGER NOT NULL AUTO_INCREMENT,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'INTEGER') self.assertIsNone(col.collen) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNotNone(col.notnull) self.assertIsNotNone(col.autoincrement) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER AUTOINCREMENT') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER NOT NULL AUTOINCREMENT') col = Column.match("`colname` INTEGER NOT NULL DEFAULT '13',") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'INTEGER') self.assertIsNone(col.collen) self.assertIsNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNotNone(col.notnull) self.assertIsNone(col.autoincrement) self.assertEqual(col.default, 13) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER DEFAULT 13') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER NOT NULL DEFAULT 13') col = Column.match("`colname` TINYINT UNSIGNED,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'SMALLINT') self.assertIsNone(col.collen) self.assertIsNotNone(col.unsigned) self.assertIsNone(col.zerofill) self.assertIsNone(col.notnull) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" SMALLINT') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" SMALLINT') col = Column.match("`colname` TINYINT(4) ZEROFILL,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'SMALLINT') self.assertEqual(col.collen, [4]) self.assertIsNone(col.unsigned) self.assertIsNotNone(col.zerofill) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" SMALLINT') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" SMALLINT') self.assertIsNone(col.notnull) col = Column.match("`colname` INT(4) UNSIGNED ZEROFILL,") self.assertEqual(col.colname, 'colname') self.assertEqual(col.coltype, 'INTEGER') self.assertEqual(col.collen, [4]) self.assertIsNotNone(col.unsigned) self.assertIsNotNone(col.zerofill) self.assertIsNone(col.notnull) self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER') self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER')