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); }
public void generateMaterial(string savePath, string matFileName, string mainTexPath) { instMaterial = null; GenerateConfig config = generateConfigs[genType]; Shader shader = Shader.Find(config.shaderName); instMaterial = new Material(shader); instMaterial.enableInstancing = true; Texture2D saved_animTex = AssetDatabase.LoadAssetAtPath <Texture2D>(animTexturePath); // 材质 if (File.Exists(mainTexPath)) { Texture2D mainTex = AssetDatabase.LoadAssetAtPath <Texture2D>(mainTexPath); instMaterial.SetTexture("_MainTex", mainTex); } instMaterial.SetTexture("_AnimationTex", saved_animTex); string matPath = Path.Combine(savePath, matFileName); AssetDatabase.CreateAsset(instMaterial, matPath); EditorUtility.SetDirty(instMaterial); }
public static bool Generate(GenerateConfig config) { ApplicationClass pd = new ApplicationClass(); //打开模型,并获取模型基类 Model model = (Model)pd.OpenModel(config.PDMFilePath, OpenModelFlags.omf_Hidden); //根据模型生成 switch (config.DatabaseType) { case EDatabaseType.MSSQL: case EDatabaseType.Oracle: case EDatabaseType.MySQL: case EDatabaseType.SQLite: new PDMModelGenerator().Generate(config, model); model.Close(); break; //new PDMGeneratorOfOracle().Generate(config, model); //break; //new PDMGeneratorOfMySQL().Generate(config, model); //break; default: break; } return(true); }
private static string InitializeRepository(GenerateConfig config, string directory) { directory = Path.Combine(directory, config.Branch); if (!Directory.Exists(directory)) { Repository.Clone(libpgQueryRepo, directory, new CloneOptions { BranchName = config.Branch }); foreach (var fetchFile in config.Fetches) { var file = Path.Combine(directory, fetchFile.File); var code = new StringBuilder(File.ReadAllText(file)); foreach (var fetch in fetchFile.Fetches) { code.Replace(fetch.Find, fetch.Replace); } File.WriteAllText(file, code.ToString()); } } return(directory); }
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); }
private void Form1_Load(object sender, EventArgs e) { var dbTypes = Enum.GetNames(typeof(EDatabaseType)); cb_dbType.DataSource = dbTypes; GenerateConfigs.Load(); cb_source.DataSource = GenerateConfigs.Items.Select(c => c.PDMFilePath).ToList(); cb_source.Refresh(); var lastestItem = GenerateConfigs.Items.FirstOrDefault(c => c.PDMFilePath == GenerateConfigs.LastestPDMFilePath); if (lastestItem != null) { cb_source.SelectedItem = lastestItem; CurrentGenerateConfig = lastestItem; } else { GenerateConfigs.Items.FirstOrDefault(c => c.PDMFilePath == cb_source.Text); } if (CurrentGenerateConfig != null) { cb_source.Text = CurrentGenerateConfig.PDMFilePath; tb_target.Text = CurrentGenerateConfig.RootPath; tb_namespace.Text = CurrentGenerateConfig.RootNamespace; cb_dbType.Text = CurrentGenerateConfig.DatabaseType.ToString(); cb_wcf.Checked = CurrentGenerateConfig.IsSupportWCF; } }
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); }
private static CppCompilation Compile(GenerateConfig config, string directory) { Environment.CurrentDirectory = directory; Regex[] sourcePatterns = config.CompileConfig.Sources .Select(StringExtension.MakeWildcardPattern) .ToArray(); Regex[] sourceExcludePatterns = config.CompileConfig.SourceExcludes .Select(StringExtension.MakeWildcardPattern) .ToArray(); List <string> sources = Directory.GetFiles(directory, "*.*", SearchOption.AllDirectories) .Select(f => Path.GetRelativePath(directory, f).Replace("\\", "/")) .Where(f => { if (!sourcePatterns.Any(p => p.IsMatch(f))) { return(false); } if (sourceExcludePatterns.Any(p => p.IsMatch(f))) { return(false); } return(true); }) .ToList(); var parserOptions = new CppParserOptions { ParseAsCpp = true, ParseMacros = true, ParseAttributes = true, ParseSystemIncludes = true, AdditionalArguments = { "--target=x86_64-apple-darwin19.5.0", "-Wall", "-Wno-unused-function", "-Wno-unused-value", "-Wno-unused-variable", "-fno-strict-aliasing", "-fwrapv", "-fPIC", "-Wno-nullability-completeness" } }; parserOptions.IncludeFolders.AddRange(GetGnuIncludes()); parserOptions.IncludeFolders.Add("./"); parserOptions.IncludeFolders.AddRange(config.CompileConfig.IncludeFolders); return(CppParser.ParseFiles(sources, parserOptions)); }
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 GenerateBaseVM() { GenerateConfig = new GenerateConfig(); var classes = DbHelper.Instance.GetClasses(); foreach (var item in classes) { GenerateConfig.Classes.Add(new KeyValueDisplay() { Key = item.ClassNo, Value = item.ClassName }); } }
private void ctlSourcePdmFile_TextChanged(object sender, EventArgs e) { CurrentGenerateConfig = GenerateConfigs.Items.FirstOrDefault(c => c.PDMFilePath == cb_source.Text); if (CurrentGenerateConfig == null) { CurrentGenerateConfig = new GenerateConfig(); //新pdm地址 保留 CurrentGenerateConfig.RootPath = tb_target.Text; CurrentGenerateConfig.RootNamespace = tb_namespace.Text; CurrentGenerateConfig.DatabaseType = (EDatabaseType)Enum.Parse(typeof(EDatabaseType), cb_dbType.Text); CurrentGenerateConfig.IsSupportWCF = cb_wcf.Checked; } //新pdm地址 清空 tb_target.Text = CurrentGenerateConfig.RootPath; tb_namespace.Text = CurrentGenerateConfig.RootNamespace; cb_dbType.Text = CurrentGenerateConfig.DatabaseType.ToString(); cb_wcf.Checked = CurrentGenerateConfig.IsSupportWCF; }
/// <summary> /// Gets all the properties of the associated project. /// </summary> /// <returns></returns> private void LoadProjectProperties() { var dteProjectItem = (ProjectItem)this.provider.GetService(typeof(ProjectItem)); var dteProject = dteProjectItem.ContainingProject; var msbProject = this.projectsCollection.LoadProject(dteProject.FullName); var pi = msbProject.CreateProjectInstance(); foreach (var itm in pi.Items) { try { if (itm.GetMetadataValue(Constants.GeneratorProperty) != Constants.GeneratorName) { continue; } var fullPath = Path.Combine(pi.Directory, itm.EvaluatedInclude); var config = new GenerateConfig(); var val = itm.GetMetadataValue(Constants.IsThreadSafeProperty); if (val != null && val.ToLowerInvariant() == "false") { config.IsThreadSafe = false; } val = itm.GetMetadataValue(Constants.IsObjectGraphProperty); if (val != null && val.ToLowerInvariant() == "false") { config.IsObjectGraph = false; } val = itm.GetMetadataValue(Constants.IsNewOnlyProperty); if (val != null && val.ToLowerInvariant() == "false") { config.IsNewOnly = false; } configMap[fullPath] = config; } catch { } } }
private void ctlSourcePdmFile_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.Back || e.KeyData == Keys.Delete) { GenerateConfigs.Items.Remove(CurrentGenerateConfig); cb_source.DataSource = GenerateConfigs.Items.Select(c => c.PDMFilePath).ToList(); cb_source.Refresh(); CurrentGenerateConfig = GenerateConfigs.Items.FirstOrDefault(c => c.PDMFilePath == cb_source.Text); if (CurrentGenerateConfig == null) { CurrentGenerateConfig = new GenerateConfig(); cb_source.Text = ""; } tb_target.Text = CurrentGenerateConfig.RootPath; tb_namespace.Text = CurrentGenerateConfig.RootNamespace; cb_dbType.Text = CurrentGenerateConfig.DatabaseType.ToString(); cb_wcf.Checked = CurrentGenerateConfig.IsSupportWCF; } if (e.KeyData == Keys.Enter) { var generateConfig = GenerateConfigs.Items.FirstOrDefault(c => c.PDMFilePath == cb_source.Text); if (generateConfig != null && !string.IsNullOrEmpty(generateConfig.PDMFilePath)) { CurrentGenerateConfig = generateConfig; } else if (generateConfig != null) { CurrentGenerateConfig = new GenerateConfig(); } else { CurrentGenerateConfig = new GenerateConfig(); CurrentGenerateConfig.PDMFilePath = cb_source.Text; GenerateConfigs.Items.Add(CurrentGenerateConfig); } //cb_source.Text = GenerateConfig.PDMFilePath; tb_target.Text = CurrentGenerateConfig.RootPath; tb_namespace.Text = CurrentGenerateConfig.RootNamespace; cb_dbType.Text = CurrentGenerateConfig.DatabaseType.ToString(); cb_wcf.Checked = CurrentGenerateConfig.IsSupportWCF; } }
public void refreshGeneratorInfo() { animData = ScriptableObject.CreateInstance <GpuSkinningAnimData>(); int totalFrame = 0; int clipFrame = 0; clipsData.Clear(); boneIds = resortBone(curGameObject); animData.totalBoneNum = boneIds.Count; animClips = clipList.ToArray(); for (int i = 0; i < animClips.Length; ++i) { AnimationClip clip = animClips[i]; clipFrame = (int)(clip.frameRate * clip.length / compression); GpuSkinningAnimClip clipData = new GpuSkinningAnimClip(clip.name, totalFrame, totalFrame + clipFrame - 1, clip.frameRate / compression); clipsData.Add(clipData); totalFrame += clipFrame; } animData.totalFrame = totalFrame; animData.clips = clipsData.ToArray(); GenerateConfig config = generateConfigs[genType]; if (config.animationType == AnimationType.Vertices) { // 顶点动画 Mesh mesh = selectedSkinnedMeshRenderer.sharedMesh; animData.texWidth = mesh.vertices.Length; animData.texHeight = totalFrame * 2; // vec3需要两个像素表示(rgba32->float16) } else { // 骨骼动画 long totalPixels = boneIds.Count * DEFAULT_PER_FRAME_BONE_DATASPACE * totalFrame; calTextureSize(totalPixels, out animData.texWidth, out animData.texHeight); } }
private void rebuildAllMeshes(string savePath, string parentFolder) { { SkinnedMeshRenderer sm = selectedSkinnedMeshRenderer; if (!IslegalString(sm.name)) { string strLog = string.Format("Mesh 命名错误: {0} -> {1}", curGameObject.name, sm.name); Warning("命名错误", strLog); } string meshName = sm.sharedMesh.name; instMesh = null; GenerateConfig config = generateConfigs[genType]; string meshPath = Path.Combine(Path.GetDirectoryName(savePath), meshName) + config.saveMeshName; if (File.Exists(parentFolder + meshPath.Replace("\\", "/"))) { AssetDatabase.DeleteAsset(meshPath); } if (sm.sharedMesh.subMeshCount > 1) { Debug.LogError("Not subMeshCount > 1:" + meshName); } instMesh = UnityEngine.Object.Instantiate <Mesh>(sm.sharedMesh); instMesh.uv2 = null; instMesh.uv3 = null; AssetDatabase.CreateAsset(instMesh, meshPath); rebulidMeshBindPose(curGameObject, sm, instMesh, boneIds); EditorUtility.SetDirty(instMesh); } AssetDatabase.Refresh(); AssetDatabase.SaveAssets(); }
private bool UpdateConfig() { if (string.IsNullOrEmpty(cb_source.Text)) { MessageBox.Show("请输入pdm文件路径"); return(false); } if (GenerateConfigs.Items.FirstOrDefault(c => c.PDMFilePath == CurrentGenerateConfig.PDMFilePath) == null) { CurrentGenerateConfig = new GenerateConfig(); GenerateConfigs.Items.Add(CurrentGenerateConfig); } CurrentGenerateConfig.PDMFilePath = cb_source.Text; CurrentGenerateConfig.RootPath = tb_target.Text; CurrentGenerateConfig.RootNamespace = tb_namespace.Text; CurrentGenerateConfig.IsSupportWCF = cb_wcf.Checked; if (!string.IsNullOrEmpty(cb_dbType.Text)) { CurrentGenerateConfig.DatabaseType = (EDatabaseType)Enum.Parse(typeof(EDatabaseType), cb_dbType.Text); } GenerateConfigs.LastestPDMFilePath = CurrentGenerateConfig.PDMFilePath; return(true); }
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 bool Compile( string filename, string nameSpace, TextWriter writer, ProgressReporter reporter) { GenerateConfig config; if (!configMap.TryGetValue(filename, out config)) { config = new GenerateConfig(); } var env = new Env(); try { InstallResult ires; var progName = new ProgramName(filename); env.Install(filename, out ires); PrintFlags(ires.Flags, reporter); if (!ires.Succeeded) { return(false); } AST <API.Nodes.Program> program = null; foreach (var touched in ires.Touched) { if (touched.Program.Node.Name.Equals(progName)) { program = touched.Program; break; } } if (program == null) { reporter.Error(filename, 0, 0, "Could not find input file"); return(false); } string name; string modName = null; var moduleQuery = new NodePred[] { NodePredFactory.Instance.Star, NodePredFactory.Instance.Module }; program.FindAll( moduleQuery, (ch, n) => { if (n.TryGetStringAttribute(AttributeKind.Name, out name)) { if (modName == null) { modName = name; } else { reporter.Warning( filename, n.Span.StartLine, n.Span.StartCol, string.Format("Code will only be generated for module {0}; ignoring module {1}.", modName, name)); } } }); if (modName == null) { reporter.Warning(filename, 0, 0, "Could not find any modules in input file."); return(true); } var opts = new GeneratorOptions( GeneratorOptions.Language.CSharp, config.IsThreadSafe, config.IsNewOnly, modName, nameSpace); Task <GenerateResult> gres; env.Generate(progName, modName, writer, opts, out gres); gres.Wait(); PrintFlags(filename, gres.Result.Flags, reporter); return(gres.Result.Succeeded); } catch (Exception e) { reporter.Error(filename, 0, 0, e.Message); return(false); } }
public static List <string> GetReferences(this EGenerateTargetType targetType, GenerateConfig config) { var result = new List <string>(); switch (targetType) { case EGenerateTargetType.DomainEntities: result.Add("System"); result.Add("System.Collections.Generic"); result.Add("System.Linq"); result.Add(NamespaceOfDAS); result.Add(NamespaceOfORM); //result.Add(NamespaceOfProtocol); //result.Add(EGenerateTargetType.Entities.GetNamespace(config.RootNamespace)); //result.Add(GetNamespace(EGenerateTargetType.Enums, config.RootNamespace)); break; case EGenerateTargetType.Entities: result.Add("System"); result.Add("System.Collections.Generic"); result.Add("System.Data"); //if (config.IsSupportWCF) //{ // result.Add("System.Runtime.Serialization"); //} result.Add("System.Runtime.Serialization"); result.Add(NamespaceOfORM); break; case EGenerateTargetType.EntityProperties: result.Add("System"); result.Add(NamespaceOfORM); break; case EGenerateTargetType.EntityOperators: result.Add("System"); result.Add("System.Collections.Generic"); result.Add("System.Linq"); result.Add(NamespaceOfDAS); result.Add(NamespaceOfORM); //result.Add(NamespaceOfProtocol); //result.Add(EGenerateTargetType.Entities.GetNamespace(config.RootNamespace)); break; case EGenerateTargetType.References: result.Add("System"); result.Add("System.Collections.Generic"); result.Add(NamespaceOfORM); break; case EGenerateTargetType.ReferenceFetchers: result.Add("System"); result.Add("System.Collections.Generic"); result.Add(NamespaceOfDAS); result.Add(NamespaceOfORM); //result.Add(NamespaceOfProtocol); //result.Add(EGenerateTargetType.Entities.GetNamespace(config.RootNamespace)); break; case EGenerateTargetType.Enums: if (config.IsSupportWCF) { result.Add("System.Runtime.Serialization"); } break; case EGenerateTargetType.Manual: break; default: throw new NotImplementedException(); } return(result); }
/// <summary> /// 生成Enums /// </summary> /// <param name="config"></param> /// <param name="tables"></param> /// <returns></returns> protected abstract bool GenerateEnums(GenerateConfig config, ObjectCol tables);
/// <summary> /// 生成References /// </summary> /// <param name="config"></param> /// <param name="model"></param> /// <returns></returns> protected abstract bool GenerateReferences(GenerateConfig config, Model model);
/// <summary> /// 生成代码 /// </summary> /// <param name="config"></param> public abstract void Generate(GenerateConfig config, Model model);
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); }
public Pg10Generator(GenerateConfig config) { _config = config; _typeMap = config.TypeMap ?? new Dictionary <string, string>(); }