XCode/XUnitTest.XCode/DataAccessLayer/NegativeTests.cs

467 lines
22 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using XCode.DataAccessLayer;
using XCode.Membership;
using Xunit;
namespace XUnitTest.XCode.DataAccessLayer
{
public class NegativeTests
{
static NegativeTests() => DAL.WriteLog("Init NegativeTests");
[Fact]
public void CreateUpperTableSQLite()
{
var table = User.Meta.Table.DataTable;
var db = DbFactory.Create(DatabaseType.SQLite);
db.NameFormat = NameFormats.Upper;
var rs = db.CreateMetaData().GetSchemaSQL(DDLSchema.CreateTable, table);
Assert.Equal("""
Create Table USER(
ID integer Primary Key AUTOINCREMENT,
NAME nvarchar(50) NOT NULL DEFAULT '' COLLATE NOCASE,
PASSWORD nvarchar(200) NULL COLLATE NOCASE,
DISPLAYNAME nvarchar(50) NULL COLLATE NOCASE,
SEX int NOT NULL DEFAULT 0,
MAIL nvarchar(50) NULL COLLATE NOCASE,
MOBILE nvarchar(50) NULL COLLATE NOCASE,
CODE nvarchar(50) NULL COLLATE NOCASE,
AREAID int NOT NULL DEFAULT 0,
AVATAR nvarchar(200) NULL COLLATE NOCASE,
ROLEID int NOT NULL DEFAULT 3,
ROLEIDS nvarchar(200) NULL COLLATE NOCASE,
DEPARTMENTID int NOT NULL DEFAULT 0,
ONLINE bit NOT NULL DEFAULT 0,
ENABLE bit NOT NULL DEFAULT 0,
AGE int NOT NULL DEFAULT 0,
BIRTHDAY datetime NULL,
LOGINS int NOT NULL DEFAULT 0,
LASTLOGIN datetime NULL,
LASTLOGINIP nvarchar(50) NULL COLLATE NOCASE,
REGISTERTIME datetime NULL,
REGISTERIP nvarchar(50) NULL COLLATE NOCASE,
ONLINETIME int NOT NULL DEFAULT 0,
EX1 int NOT NULL DEFAULT 0,
EX2 int NOT NULL DEFAULT 0,
EX3 real NOT NULL DEFAULT 0,
EX4 nvarchar(50) NULL COLLATE NOCASE,
EX5 nvarchar(50) NULL COLLATE NOCASE,
EX6 nvarchar(50) NULL COLLATE NOCASE,
UPDATEUSER nvarchar(50) NOT NULL DEFAULT '' COLLATE NOCASE,
UPDATEUSERID int NOT NULL DEFAULT 0,
UPDATEIP nvarchar(50) NULL COLLATE NOCASE,
UPDATETIME datetime NOT NULL DEFAULT '0001-01-01',
REMARK nvarchar(500) NULL COLLATE NOCASE
)
""", rs);
}
[Fact]
public void CreateLowerTableSQLite()
{
var table = User.Meta.Table.DataTable;
var db = DbFactory.Create(DatabaseType.SQLite);
db.NameFormat = NameFormats.Lower;
var rs = db.CreateMetaData().GetSchemaSQL(DDLSchema.CreateTable, table);
Assert.Equal("""
Create Table user(
id integer Primary Key AUTOINCREMENT,
name nvarchar(50) NOT NULL DEFAULT '' COLLATE NOCASE,
password nvarchar(200) NULL COLLATE NOCASE,
displayname nvarchar(50) NULL COLLATE NOCASE,
sex int NOT NULL DEFAULT 0,
mail nvarchar(50) NULL COLLATE NOCASE,
mobile nvarchar(50) NULL COLLATE NOCASE,
code nvarchar(50) NULL COLLATE NOCASE,
areaid int NOT NULL DEFAULT 0,
avatar nvarchar(200) NULL COLLATE NOCASE,
roleid int NOT NULL DEFAULT 3,
roleids nvarchar(200) NULL COLLATE NOCASE,
departmentid int NOT NULL DEFAULT 0,
online bit NOT NULL DEFAULT 0,
enable bit NOT NULL DEFAULT 0,
age int NOT NULL DEFAULT 0,
birthday datetime NULL,
logins int NOT NULL DEFAULT 0,
lastlogin datetime NULL,
lastloginip nvarchar(50) NULL COLLATE NOCASE,
registertime datetime NULL,
registerip nvarchar(50) NULL COLLATE NOCASE,
onlinetime int NOT NULL DEFAULT 0,
ex1 int NOT NULL DEFAULT 0,
ex2 int NOT NULL DEFAULT 0,
ex3 real NOT NULL DEFAULT 0,
ex4 nvarchar(50) NULL COLLATE NOCASE,
ex5 nvarchar(50) NULL COLLATE NOCASE,
ex6 nvarchar(50) NULL COLLATE NOCASE,
updateuser nvarchar(50) NOT NULL DEFAULT '' COLLATE NOCASE,
updateuserid int NOT NULL DEFAULT 0,
updateip nvarchar(50) NULL COLLATE NOCASE,
updatetime datetime NOT NULL DEFAULT '0001-01-01',
remark nvarchar(500) NULL COLLATE NOCASE
)
""", rs);
}
[Fact]
public void CreateUnderlineTableSQLite()
{
var table = User.Meta.Table.DataTable;
var db = DbFactory.Create(DatabaseType.SQLite);
db.NameFormat = NameFormats.Underline;
var rs = db.CreateMetaData().GetSchemaSQL(DDLSchema.CreateTable, table);
Assert.Equal("""
Create Table user(
id integer Primary Key AUTOINCREMENT,
name nvarchar(50) NOT NULL DEFAULT '' COLLATE NOCASE,
password nvarchar(200) NULL COLLATE NOCASE,
display_name nvarchar(50) NULL COLLATE NOCASE,
sex int NOT NULL DEFAULT 0,
mail nvarchar(50) NULL COLLATE NOCASE,
mobile nvarchar(50) NULL COLLATE NOCASE,
code nvarchar(50) NULL COLLATE NOCASE,
area_id int NOT NULL DEFAULT 0,
avatar nvarchar(200) NULL COLLATE NOCASE,
role_id int NOT NULL DEFAULT 3,
role_ids nvarchar(200) NULL COLLATE NOCASE,
department_id int NOT NULL DEFAULT 0,
online bit NOT NULL DEFAULT 0,
enable bit NOT NULL DEFAULT 0,
age int NOT NULL DEFAULT 0,
birthday datetime NULL,
logins int NOT NULL DEFAULT 0,
last_login datetime NULL,
last_login_ip nvarchar(50) NULL COLLATE NOCASE,
register_time datetime NULL,
register_ip nvarchar(50) NULL COLLATE NOCASE,
online_time int NOT NULL DEFAULT 0,
ex1 int NOT NULL DEFAULT 0,
ex2 int NOT NULL DEFAULT 0,
ex3 real NOT NULL DEFAULT 0,
ex4 nvarchar(50) NULL COLLATE NOCASE,
ex5 nvarchar(50) NULL COLLATE NOCASE,
ex6 nvarchar(50) NULL COLLATE NOCASE,
update_user nvarchar(50) NOT NULL DEFAULT '' COLLATE NOCASE,
update_user_id int NOT NULL DEFAULT 0,
update_ip nvarchar(50) NULL COLLATE NOCASE,
update_time datetime NOT NULL DEFAULT '0001-01-01',
remark nvarchar(500) NULL COLLATE NOCASE
)
""", rs);
table = table.Clone() as IDataTable;
table.TableName = db.FormatName(table);
foreach (var column in table.Columns)
{
column.ColumnName = db.FormatName(column);
}
var dal = User.Meta.Session.Dal;
//dal.Db.NameFormat = NameFormats.Underline;
//dal.SetTables(table);
dal.Db.CreateMetaData().SetTables(Migration.ReadOnly, table);
}
[Fact]
public void CreateUpperTableMySql()
{
var table = User.Meta.Table.DataTable;
var db = DbFactory.Create(DatabaseType.MySql);
db.NameFormat = NameFormats.Upper;
var rs = db.CreateMetaData().GetSchemaSQL(DDLSchema.CreateTable, table);
Assert.Equal("""
Create Table If Not Exists `USER`(
ID INT NOT NULL AUTO_INCREMENT COMMENT '',
NAME VARCHAR(50) NOT NULL DEFAULT '' COMMENT '',
PASSWORD VARCHAR(200) COMMENT '',
DISPLAYNAME VARCHAR(50) COMMENT '',
SEX INT NOT NULL DEFAULT 0 COMMENT '',
MAIL VARCHAR(50) COMMENT '',
MOBILE VARCHAR(50) COMMENT '',
CODE VARCHAR(50) COMMENT '',
AREAID INT NOT NULL DEFAULT 0 COMMENT '',
AVATAR VARCHAR(200) COMMENT '',
ROLEID INT NOT NULL DEFAULT 3 COMMENT '',
ROLEIDS VARCHAR(200) COMMENT '',
DEPARTMENTID INT NOT NULL DEFAULT 0 COMMENT '',
ONLINE TINYINT NOT NULL DEFAULT 0 COMMENT '线',
ENABLE TINYINT NOT NULL DEFAULT 0 COMMENT '',
AGE INT NOT NULL DEFAULT 0 COMMENT '',
BIRTHDAY DATETIME COMMENT '',
LOGINS INT NOT NULL DEFAULT 0 COMMENT '',
LASTLOGIN DATETIME COMMENT '',
LASTLOGINIP VARCHAR(50) COMMENT 'IP',
REGISTERTIME DATETIME COMMENT '',
REGISTERIP VARCHAR(50) COMMENT 'IP',
ONLINETIME INT NOT NULL DEFAULT 0 COMMENT '线线',
EX1 INT NOT NULL DEFAULT 0 COMMENT '1',
EX2 INT NOT NULL DEFAULT 0 COMMENT '2',
EX3 DOUBLE NOT NULL DEFAULT 0 COMMENT '3',
EX4 VARCHAR(50) COMMENT '4',
EX5 VARCHAR(50) COMMENT '5',
EX6 VARCHAR(50) COMMENT '6',
UPDATEUSER VARCHAR(50) NOT NULL DEFAULT '' COMMENT '',
UPDATEUSERID INT NOT NULL DEFAULT 0 COMMENT '',
UPDATEIP VARCHAR(50) COMMENT '',
UPDATETIME DATETIME NOT NULL DEFAULT '0001-01-01' COMMENT '',
REMARK VARCHAR(500) COMMENT '',
Primary Key (ID)
) DEFAULT CHARSET=utf8mb4;
""", rs);
}
[Fact]
public void CreateLowerTableMySql()
{
var table = User.Meta.Table.DataTable;
var db = DbFactory.Create(DatabaseType.MySql);
db.NameFormat = NameFormats.Lower;
var rs = db.CreateMetaData().GetSchemaSQL(DDLSchema.CreateTable, table);
Assert.Equal("""
Create Table If Not Exists `user`(
id INT NOT NULL AUTO_INCREMENT COMMENT '',
name VARCHAR(50) NOT NULL DEFAULT '' COMMENT '',
password VARCHAR(200) COMMENT '',
displayname VARCHAR(50) COMMENT '',
sex INT NOT NULL DEFAULT 0 COMMENT '',
mail VARCHAR(50) COMMENT '',
mobile VARCHAR(50) COMMENT '',
code VARCHAR(50) COMMENT '',
areaid INT NOT NULL DEFAULT 0 COMMENT '',
avatar VARCHAR(200) COMMENT '',
roleid INT NOT NULL DEFAULT 3 COMMENT '',
roleids VARCHAR(200) COMMENT '',
departmentid INT NOT NULL DEFAULT 0 COMMENT '',
online TINYINT NOT NULL DEFAULT 0 COMMENT '线',
enable TINYINT NOT NULL DEFAULT 0 COMMENT '',
age INT NOT NULL DEFAULT 0 COMMENT '',
birthday DATETIME COMMENT '',
logins INT NOT NULL DEFAULT 0 COMMENT '',
lastlogin DATETIME COMMENT '',
lastloginip VARCHAR(50) COMMENT 'IP',
registertime DATETIME COMMENT '',
registerip VARCHAR(50) COMMENT 'IP',
onlinetime INT NOT NULL DEFAULT 0 COMMENT '线线',
ex1 INT NOT NULL DEFAULT 0 COMMENT '1',
ex2 INT NOT NULL DEFAULT 0 COMMENT '2',
ex3 DOUBLE NOT NULL DEFAULT 0 COMMENT '3',
ex4 VARCHAR(50) COMMENT '4',
ex5 VARCHAR(50) COMMENT '5',
ex6 VARCHAR(50) COMMENT '6',
updateuser VARCHAR(50) NOT NULL DEFAULT '' COMMENT '',
updateuserid INT NOT NULL DEFAULT 0 COMMENT '',
updateip VARCHAR(50) COMMENT '',
updatetime DATETIME NOT NULL DEFAULT '0001-01-01' COMMENT '',
remark VARCHAR(500) COMMENT '',
Primary Key (id)
) DEFAULT CHARSET=utf8mb4;
""", rs);
}
[Fact]
public void CreateUnderlineTableMySql()
{
var table = User.Meta.Table.DataTable;
var db = DbFactory.Create(DatabaseType.MySql);
db.NameFormat = NameFormats.Underline;
var rs = db.CreateMetaData().GetSchemaSQL(DDLSchema.CreateTable, table);
Assert.Equal("""
Create Table If Not Exists `user`(
id INT NOT NULL AUTO_INCREMENT COMMENT '',
name VARCHAR(50) NOT NULL DEFAULT '' COMMENT '',
password VARCHAR(200) COMMENT '',
display_name VARCHAR(50) COMMENT '',
sex INT NOT NULL DEFAULT 0 COMMENT '',
mail VARCHAR(50) COMMENT '',
mobile VARCHAR(50) COMMENT '',
code VARCHAR(50) COMMENT '',
area_id INT NOT NULL DEFAULT 0 COMMENT '',
avatar VARCHAR(200) COMMENT '',
role_id INT NOT NULL DEFAULT 3 COMMENT '',
role_ids VARCHAR(200) COMMENT '',
department_id INT NOT NULL DEFAULT 0 COMMENT '',
online TINYINT NOT NULL DEFAULT 0 COMMENT '线',
enable TINYINT NOT NULL DEFAULT 0 COMMENT '',
age INT NOT NULL DEFAULT 0 COMMENT '',
birthday DATETIME COMMENT '',
logins INT NOT NULL DEFAULT 0 COMMENT '',
last_login DATETIME COMMENT '',
last_login_ip VARCHAR(50) COMMENT 'IP',
register_time DATETIME COMMENT '',
register_ip VARCHAR(50) COMMENT 'IP',
online_time INT NOT NULL DEFAULT 0 COMMENT '线线',
ex1 INT NOT NULL DEFAULT 0 COMMENT '1',
ex2 INT NOT NULL DEFAULT 0 COMMENT '2',
ex3 DOUBLE NOT NULL DEFAULT 0 COMMENT '3',
ex4 VARCHAR(50) COMMENT '4',
ex5 VARCHAR(50) COMMENT '5',
ex6 VARCHAR(50) COMMENT '6',
update_user VARCHAR(50) NOT NULL DEFAULT '' COMMENT '',
update_user_id INT NOT NULL DEFAULT 0 COMMENT '',
update_ip VARCHAR(50) COMMENT '',
update_time DATETIME NOT NULL DEFAULT '0001-01-01' COMMENT '',
remark VARCHAR(500) COMMENT '',
Primary Key (id)
) DEFAULT CHARSET=utf8mb4;
""", rs);
}
[Fact]
public void CreateUpperTableSqlServer()
{
var table = User.Meta.Table.DataTable;
var db = DbFactory.Create(DatabaseType.SqlServer);
db.NameFormat = NameFormats.Upper;
var rs = db.CreateMetaData().GetSchemaSQL(DDLSchema.CreateTable, table);
Assert.Equal("""
Create Table [USER](
ID int IDENTITY(1,1) Primary Key,
NAME nvarchar(50) NOT NULL DEFAULT '',
PASSWORD nvarchar(200) NULL,
DISPLAYNAME nvarchar(50) NULL,
SEX int NOT NULL DEFAULT 0,
MAIL nvarchar(50) NULL,
MOBILE nvarchar(50) NULL,
CODE nvarchar(50) NULL,
AREAID int NOT NULL DEFAULT 0,
AVATAR nvarchar(200) NULL,
ROLEID int NOT NULL DEFAULT 3,
ROLEIDS nvarchar(200) NULL,
DEPARTMENTID int NOT NULL DEFAULT 0,
[ONLINE] bit NOT NULL DEFAULT 0,
ENABLE bit NOT NULL DEFAULT 0,
AGE int NOT NULL DEFAULT 0,
BIRTHDAY datetime NULL,
LOGINS int NOT NULL DEFAULT 0,
LASTLOGIN datetime NULL,
LASTLOGINIP nvarchar(50) NULL,
REGISTERTIME datetime NULL,
REGISTERIP nvarchar(50) NULL,
ONLINETIME int NOT NULL DEFAULT 0,
EX1 int NOT NULL DEFAULT 0,
EX2 int NOT NULL DEFAULT 0,
EX3 float NOT NULL DEFAULT 0,
EX4 nvarchar(50) NULL,
EX5 nvarchar(50) NULL,
EX6 nvarchar(50) NULL,
UPDATEUSER nvarchar(50) NOT NULL DEFAULT '',
UPDATEUSERID int NOT NULL DEFAULT 0,
UPDATEIP nvarchar(50) NULL,
UPDATETIME datetime NOT NULL DEFAULT '0001-01-01',
REMARK nvarchar(500) NULL
)
""", rs);
}
[Fact]
public void CreateLowerTableSqlServer()
{
var table = User.Meta.Table.DataTable;
var db = DbFactory.Create(DatabaseType.SqlServer);
db.NameFormat = NameFormats.Lower;
var rs = db.CreateMetaData().GetSchemaSQL(DDLSchema.CreateTable, table);
Assert.Equal("""
Create Table [user](
id int IDENTITY(1,1) Primary Key,
name nvarchar(50) NOT NULL DEFAULT '',
password nvarchar(200) NULL,
displayname nvarchar(50) NULL,
sex int NOT NULL DEFAULT 0,
mail nvarchar(50) NULL,
mobile nvarchar(50) NULL,
code nvarchar(50) NULL,
areaid int NOT NULL DEFAULT 0,
avatar nvarchar(200) NULL,
roleid int NOT NULL DEFAULT 3,
roleids nvarchar(200) NULL,
departmentid int NOT NULL DEFAULT 0,
[online] bit NOT NULL DEFAULT 0,
enable bit NOT NULL DEFAULT 0,
age int NOT NULL DEFAULT 0,
birthday datetime NULL,
logins int NOT NULL DEFAULT 0,
lastlogin datetime NULL,
lastloginip nvarchar(50) NULL,
registertime datetime NULL,
registerip nvarchar(50) NULL,
onlinetime int NOT NULL DEFAULT 0,
ex1 int NOT NULL DEFAULT 0,
ex2 int NOT NULL DEFAULT 0,
ex3 float NOT NULL DEFAULT 0,
ex4 nvarchar(50) NULL,
ex5 nvarchar(50) NULL,
ex6 nvarchar(50) NULL,
updateuser nvarchar(50) NOT NULL DEFAULT '',
updateuserid int NOT NULL DEFAULT 0,
updateip nvarchar(50) NULL,
updatetime datetime NOT NULL DEFAULT '0001-01-01',
remark nvarchar(500) NULL
)
""", rs);
}
[Fact]
public void CreateUnderlineTableSqlServer()
{
var table = User.Meta.Table.DataTable;
var db = DbFactory.Create(DatabaseType.SqlServer);
db.NameFormat = NameFormats.Underline;
var rs = db.CreateMetaData().GetSchemaSQL(DDLSchema.CreateTable, table);
Assert.Equal("""
Create Table [user](
id int IDENTITY(1,1) Primary Key,
name nvarchar(50) NOT NULL DEFAULT '',
password nvarchar(200) NULL,
display_name nvarchar(50) NULL,
sex int NOT NULL DEFAULT 0,
mail nvarchar(50) NULL,
mobile nvarchar(50) NULL,
code nvarchar(50) NULL,
area_id int NOT NULL DEFAULT 0,
avatar nvarchar(200) NULL,
role_id int NOT NULL DEFAULT 3,
role_ids nvarchar(200) NULL,
department_id int NOT NULL DEFAULT 0,
[online] bit NOT NULL DEFAULT 0,
enable bit NOT NULL DEFAULT 0,
age int NOT NULL DEFAULT 0,
birthday datetime NULL,
logins int NOT NULL DEFAULT 0,
last_login datetime NULL,
last_login_ip nvarchar(50) NULL,
register_time datetime NULL,
register_ip nvarchar(50) NULL,
online_time int NOT NULL DEFAULT 0,
ex1 int NOT NULL DEFAULT 0,
ex2 int NOT NULL DEFAULT 0,
ex3 float NOT NULL DEFAULT 0,
ex4 nvarchar(50) NULL,
ex5 nvarchar(50) NULL,
ex6 nvarchar(50) NULL,
update_user nvarchar(50) NOT NULL DEFAULT '',
update_user_id int NOT NULL DEFAULT 0,
update_ip nvarchar(50) NULL,
update_time datetime NOT NULL DEFAULT '0001-01-01',
remark nvarchar(500) NULL
)
""", rs);
}
}
}