Пример #1
0
    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);
        }
    }
Пример #2
0
    public void DecimalPrecisionAndScale()
    {
        var testCase = new SqlTypeColumnTestCase()
        {
            ColumnDeclaration = "decimal(30,5)",
            ExpectedSqlType   = SqlType.ExactNumericType("decimal", 30, 5)
        };

        RunTestCase(testCase);
    }
Пример #3
0
    public void DecimalDefault()
    {
        var testCase = new SqlTypeColumnTestCase()
        {
            ColumnDeclaration = "decimal",
            ExpectedSqlType   = SqlType.ExactNumericType("decimal", 18, 0)
        };

        RunTestCase(testCase);
    }
Пример #4
0
    public void Int()
    {
        var testCase = new SqlTypeColumnTestCase()
        {
            ColumnDeclaration = "int",
            ExpectedSqlType   = SqlType.Type("int")
        };

        RunTestCase(testCase);
    }
Пример #5
0
    public void Varchar()
    {
        var testCase = new SqlTypeColumnTestCase()
        {
            ColumnDeclaration = "varchar(10)",
            ExpectedSqlType   = SqlType.TextType("varchar", 10)
        };

        RunTestCase(testCase);
    }
Пример #6
0
    public void Datetime2WithPrecision()
    {
        var testCase = new SqlTypeColumnTestCase()
        {
            ColumnDeclaration = "datetime2(4)",
            ExpectedSqlType   = SqlType.DateTime("datetime2", 4)
        };

        RunTestCase(testCase);
    }
Пример #7
0
    public void Datetime()
    {
        var testCase = new SqlTypeColumnTestCase()
        {
            ColumnDeclaration = "datetime",
            ExpectedSqlType   = SqlType.Type("datetime")
        };

        RunTestCase(testCase);
    }
Пример #8
0
    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);
    }