private static void RunTestCase(SqlTypeColumnTestCase testCase) { var tableGenerationScript = $"create table TestTable( FirstName {testCase.ColumnDeclaration});"; var uniqueDbProvider = UniqueTestingDbProvider.GetUniqueSqlConnectionProvider(); using (uniqueDbProvider.ToSelfDeletingDisposable()) { uniqueDbProvider.CreateDatabase(); testCase.PreTestSqlScripts.ForEach(uniqueDbProvider.Execute); uniqueDbProvider.Execute(tableGenerationScript); var query = "select * from TestTable"; var containers = CSharpClassGeneratorFromQueryViaSqlDescribeResultSet.GetDescribeResultSetContainers( uniqueDbProvider, query); var sqlColumns = containers.Select(DescribeResultSetRowToSqlColumnConverter.Convert); var column = sqlColumns.First(); column.SqlDataType.TypeName.Should().Be(testCase.ExpectedSqlType.TypeName); column.SqlDataType.Mantissa.Should().Be(testCase.ExpectedSqlType.Mantissa); column.SqlDataType.MaximumCharLength.Should().Be(testCase.ExpectedSqlType.MaximumCharLength); column.SqlDataType.NumericScale.Should().Be(testCase.ExpectedSqlType.NumericScale); column.SqlDataType.NumericPrecision.Should().Be(testCase.ExpectedSqlType.NumericPrecision); column.SqlDataType.TypeName.Should().Be(testCase.ExpectedSqlType.TypeName); column.SqlDataType.FractionalSecondsPrecision.Should() .Be(testCase.ExpectedSqlType.FractionalSecondsPrecision); } }
public void DecimalPrecisionAndScale() { var testCase = new SqlTypeColumnTestCase() { ColumnDeclaration = "decimal(30,5)", ExpectedSqlType = SqlType.ExactNumericType("decimal", 30, 5) }; RunTestCase(testCase); }
public void DecimalDefault() { var testCase = new SqlTypeColumnTestCase() { ColumnDeclaration = "decimal", ExpectedSqlType = SqlType.ExactNumericType("decimal", 18, 0) }; RunTestCase(testCase); }
public void Int() { var testCase = new SqlTypeColumnTestCase() { ColumnDeclaration = "int", ExpectedSqlType = SqlType.Type("int") }; RunTestCase(testCase); }
public void Varchar() { var testCase = new SqlTypeColumnTestCase() { ColumnDeclaration = "varchar(10)", ExpectedSqlType = SqlType.TextType("varchar", 10) }; RunTestCase(testCase); }
public void Datetime2WithPrecision() { var testCase = new SqlTypeColumnTestCase() { ColumnDeclaration = "datetime2(4)", ExpectedSqlType = SqlType.DateTime("datetime2", 4) }; RunTestCase(testCase); }
public void Datetime() { var testCase = new SqlTypeColumnTestCase() { ColumnDeclaration = "datetime", ExpectedSqlType = SqlType.Type("datetime") }; RunTestCase(testCase); }
public void UserDefinedType() { var testCase = new SqlTypeColumnTestCase() { ColumnDeclaration = "mytypespecial", ExpectedSqlType = SqlType.TextType("nvarchar", 20) }; testCase.PreTestSqlScripts.Add("create type mytypespecial from nvarchar(10);"); RunTestCase(testCase); }