Exemple #1
0
        public void TestDateTimeFormatterCase1()
        {
            //
            //Arrange
            //
            var testRow = 100; //because random result, need more record to ensure it correct
            var format  = @"insert into TableA \(\[ColumnA\]\) values"
                          + @"("
                          + @"\s*\('(2017-01-02|2017-01-09|2017-01-16|2017-01-23|2017-01-30) ([0][9]|[1][0-8]):([0-5][0-9]):([0-5][0-9])'\),*"
                          + @"){" + testRow + "}"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "TableA",
                    ColumnName          = "ColumnA",
                    DataType            = "varchar",
                    GenerateFormat      = @"{dateTime|[\{ DayRange: '2017-01-01~2017-01-31',TimeRangeOfWeekDay:['mon:09:00:00~18:00:00']\} ]}",
                    GenerateRecordCount = testRow
                }
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format.ToString()).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
Exemple #2
0
        public void TestDictionaryFormatterCase3()
        {
            //
            //Arrange
            //
            var testRow = 1;
            var format  = @"insert into TableA \(\[ColumnA\]\) values\s+\('Dear {abc} \w+ \w+'\)"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "TableA",
                    ColumnName          = "ColumnA",
                    DataType            = "varchar",
                    GenerateFormat      = "Dear \\{abc\\} { dict|name:'firstNameDict',field:'Eng' } { dict|name:'LastNameDict',field:'Eng' }",
                    GenerateRecordCount = testRow
                }
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
Exemple #3
0
        public void TestDictionaryFormatterCase6()
        {
            //
            //Arrange
            //
            var testRow = 2;
            var format  = @"insert into TableA \(\[ColumnA\]\) values"
                          + @"\s+\('(\w+)'\),"
                          + @"\s+\('(\w+)'\)"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "TableA",
                    ColumnName          = "ColumnA",
                    DataType            = "varchar",
                    GenerateFormat      = "{  dict|name:'firstNameDict',field:'Eng' }",
                    GenerateRecordCount = testRow
                }
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.AreNotEqual(
                Regex.Match(result, format).Groups[1].Value, Regex.Match(result, format).Groups[2].Value,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
        public void TestSQLGeneratorCase1()
        {
            //
            //Arrange
            //
            var format =
                @"use \[MyDB\];"
                + @"\s+GO"
                + @"\s+insert into TableA \(\[ColumnA\]\) values"
                + @"\s+\('abc'\),"
                + @"\s+\('abc'\)"
                + @";"
                + @"\s+GO"
                + @"\s+use \[MyDB\];"
                + @"\s+GO"
                + @"\s+set IDENTITY_INSERT TableB on;"
                + @"\s+GO"
                + @"\s+insert into TableB \(\[ColumnB\]\) values"
                + @"\s+\('def'\),"
                + @"\s+\('def'\),"
                + @"\s+\('def'\)"
                + @";"
                + @"\s+GO"
                + @"\s+set IDENTITY_INSERT TableB off;"
                + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    DatabaseName        = "MyDB",
                    TableName           = "TableA",
                    ColumnName          = "ColumnA",
                    DataType            = "varchar",
                    GenerateFormat      = @"abc",
                    GenerateRecordCount = 2
                },
                new GenerateConfig {
                    DatabaseName        = "MyDB",
                    TableName           = "TableB",
                    ColumnName          = "ColumnB",
                    DataType            = "varchar",
                    GenerateFormat      = @"def",
                    GenerateRecordCount = 3,
                    IdentityInsert      = true
                }
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format.ToString()).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
        public void TestReferenceColumnFormatterCase2()
        {
            //
            //Arrange
            //
            var testRow = 2;
            var format  = @"insert into Staff \(\[Id\], \[FirstName\], \[LastName\], \[FullName\]\) values"
                          + @"\s*\('E001', 'Benny001', 'Leung001', 'Benny001 Leung001'\),*"
                          + @"\s*\('E002', 'Benny002', 'Leung002', 'Benny002 Leung002'\),*"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "Staff",
                    ColumnName          = "Id",
                    DataType            = "varchar",
                    GenerateFormat      = @"E{seq|start:1,padding:'\{0:000\}'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "Staff",
                    ColumnName          = "FirstName",
                    DataType            = "varchar",
                    GenerateFormat      = @"Benny{seq|start:1,padding:'\{0:000\}'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "Staff",
                    ColumnName          = "LastName",
                    DataType            = "varchar",
                    GenerateFormat      = @"Leung{seq|start:1,padding:'\{0:000\}'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "Staff",
                    ColumnName          = "FullName",
                    DataType            = "varchar",
                    GenerateFormat      = @"{ref|table:'Staff',column:'FirstName'} {ref|table:'Staff',column:'LastName'}",
                    GenerateRecordCount = testRow
                },
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format.ToString()).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
        public void TestReferenceColumnFormatterCase3()
        {
            //
            //Arrange
            //
            var testRow = 1;
            var format  = @"insert into StaffLeave \(\[Id\], \[StartDate\], \[EndDate\], \[DayTaken\]\) values"
                          + @"\s*\('L001', '2017-01-01 00:00:00', '2017-01-02 00:00:00', '1'\),*"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "Id",
                    DataType            = "varchar",
                    GenerateFormat      = @"L{seq|start:1,padding:'\{0:000\}'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "StartDate",
                    DataType            = "varchar",
                    GenerateFormat      = @"2017-01-01 00:00:00",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "EndDate",
                    DataType            = "varchar",
                    GenerateFormat      = @"{ref|table:'StaffLeave',column:'StartDate',converterName:'DateTimeConverter',converterParams:['AddDays', 1]}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "DayTaken",
                    DataType            = "varchar",
                    GenerateFormat      = @"1",
                    GenerateRecordCount = testRow
                },
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format.ToString()).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
        public void TestSequentialNumberFormatterCase1()
        {
            //
            //Arrange
            //
            var testRow = 4;
            var format  = @"insert into TableA \(\[ColumnA\]\) values"
                          + @"\s+\('abc 010 def'\),"
                          + @"\s+\('abc 011 def'\),"
                          + @"\s+\('abc 012 def'\),"
                          + @"\s+\('abc 010 def'\)"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "TableA",
                    ColumnName          = "ColumnA",
                    DataType            = "varchar",
                    GenerateFormat      = @"abc {seq|start:10,end:12,padding:'\{0:000\}'} def",
                    GenerateRecordCount = testRow
                }
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }
        public void TestReferenceColumnFormatterCase1()
        {
            //
            //Arrange
            //
            var testRow = 2;
            var format  = @"insert into Staff \(\[Id\]\) values"
                          + @"\s*\('E001'\),*"
                          + @"\s*\('E002'\),*"
                          + @";"
                          + @"\s+GO"
                          + @"\s*insert into LeaveType \(\[Id\]\) values"
                          + @"\s*\('L001'\),*"
                          + @"\s*\('L002'\),*"
                          + @";"
                          + @"\s+GO"
                          + @"\s*insert into StaffLeave \(\[Id\], \[StaffId\], \[LeaveId\]\) values"
                          + @"\s*\('1', 'E00(1|2)', 'L00(1|2)'\),*"
                          + @"\s*\('2', 'E00(1|2)', 'L00(1|2)'\),*"
                          + @";"
                          + @"\s+GO"
            ;
            var config = new GenerateConfig[] {
                new GenerateConfig {
                    TableName           = "Staff",
                    ColumnName          = "Id",
                    DataType            = "varchar",
                    GenerateFormat      = @"E{seq|start:1,padding:'\{0:000\}'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "Id",
                    DataType            = "varchar",
                    GenerateFormat      = @"{seq|start:1}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "StaffId",
                    DataType            = "varchar",
                    GenerateFormat      = @"{ref|table:'Staff',column:'Id'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "StaffLeave",
                    ColumnName          = "LeaveId",
                    DataType            = "varchar",
                    GenerateFormat      = @"{ref|table:'LeaveType',column:'Id'}",
                    GenerateRecordCount = testRow
                },
                new GenerateConfig {
                    TableName           = "LeaveType",
                    ColumnName          = "Id",
                    DataType            = "varchar",
                    GenerateFormat      = @"L{seq|start:1,padding:'\{0:000\}'}",
                    GenerateRecordCount = testRow
                },
            };

            //
            //Act
            //
            var result = SQLGenerator.GenerateInsertStatement(new MSSQLBuilder(), config).ToString();

            //
            //Assert
            //
            Assert.IsTrue(
                Regex.Match(result, format.ToString()).Success,
                "Format: \"{0}\", Actuals: \"{1}\"", format, result);
        }