public async Task TestReceiveDllImplementationRelational() { #region arrange var path = AppContext.BaseDirectory; string fileName = Path.Combine(path, "StanskinsImplementation.dll"); #endregion #region act var rd = new ReceiverFromDllRelational(fileName); await rd.LoadData(); #endregion #region assert rd.valuesRead.ShouldNotBeNull(); rd.valuesRead.Length.ShouldBe(1); var assembly = rd.valuesRead[0] as IRowReceiveRelation; assembly.ShouldNotBeNull(); assembly.Values.ShouldNotBeNull(); assembly.Values.ShouldContainKey("Name"); assembly.Values["Name"].ShouldBe("StanskinsImplementation"); assembly.Relations.ShouldNotBeNull(); assembly.Relations.ShouldContainKey("Types"); var types = assembly.Relations["Types"]; types.Count.ShouldBeGreaterThan(0); var ssm = types.FirstOrDefault(it => it.Values["Name"]?.ToString() == "SyncSenderMultiple"); ssm.ShouldNotBeNull("should contain type SyncSenderMultiple"); var interfaces = ssm.Relations["Interfaces"]; var props = ssm.Relations["Properties"]; interfaces.Count.ShouldBeGreaterThan(0); props.Count.ShouldBeGreaterThan(0); #endregion }
static string SimpleJobDllLoadTypes() { string dir = Environment.CurrentDirectory; IReceive folderWithDll = new ReceiverFolderHierarchical("#static:Directory.GetCurrentDirectory()#", "*.dll"); var filterFiles = new FilterForFilesHierarchical(); var recContentFile = new ReceiverFromDllRelational(); var loadDllromFiles = new TransformerApplyReceiver(recContentFile, "DllFileName", "FullName"); var fileRazor = Path.Combine(dir, "relationalGeneric.cshtml"); string filename = "#static:Directory.GetCurrentDirectory()#\\relationalDLL.html"; ISend senderHTML = new SyncSenderMultiple( new Sender_Text(filename, "<html><body>") { FileMode = FileMode.Create }, new Sender_HTMLRazor("Views/" + Path.GetFileName(fileRazor), filename), //new Sender_HTMLRelationViz("Name", filename), new Sender_Text(filename, "</body></html>") ) ; var job = new SimpleJob(); job.Receivers.Add(0, folderWithDll); job.FiltersAndTransformers.Add(0, filterFiles); job.FiltersAndTransformers.Add(1, loadDllromFiles); job.Senders.Add(0, senderHTML); return(job.SerializeMe()); }
public async Task TestReceiveSendDllHtml() { #region arrange var path = AppContext.BaseDirectory; var dir = AppContext.BaseDirectory; dir = Path.Combine(dir, "TestReceiveSendDllHtml"); if (Directory.Exists(dir)) { Directory.Delete(dir, true); } Directory.CreateDirectory(dir); var fileRazor = Path.Combine(dir, "relationalGeneric.cshtml"); File.Copy(@"Views\relationalGeneric.cshtml", fileRazor, true); string fileNameDll = Path.Combine(path, "StanskinsImplementation.dll"); string filename = Path.Combine(dir, "senderhtml.html"); if (File.Exists(filename)) { File.Delete(filename); } var receiverDll = new ReceiverFromDllRelational(fileNameDll); ISend senderHTML = new SyncSenderMultiple( new Sender_Text(filename, "<html><body>"), new Sender_HTMLRazor("TestReceiveSendDllHtml/" + Path.GetFileName(fileRazor), filename), new Sender_HTMLRelationViz("Name", filename), new Sender_Text(filename, "</body></html>") ) ; #endregion #region act var job = new SimpleJob(); job.Receivers.Add(0, receiverDll); job.Senders.Add(0, senderHTML); await job.Execute(); #endregion #region assert File.Exists(filename).ShouldBeTrue($"file {filename} should exists"); //Process.Start("explorer.exe", filename); #endregion }
static string JobDllBlockly() { string dir = Environment.CurrentDirectory; IReceive folderWithDll = new ReceiverFolderHierarchical("#static:Directory.GetCurrentDirectory()#", "*.dll"); var filterFiles = new FilterForFilesHierarchical(); var recContentFile = new ReceiverFromDllRelational(); var loadDllFromFiles = new TransformerApplyReceiver(recContentFile, "DllFileName", "FullName"); //retain just types var filterTypes = new FilterRetainRelationalName(FilterType.Equal, "Types"); //load types that are not generic or abstract //var justTypes = new FilterComparableEqual(typeof(string), "Types", "NameRelation"); var notAbstract = new FilterComparableEqual(typeof(bool), false, "IsAbstract"); var notGeneric = new FilterComparableEqual(typeof(bool), false, "IsGeneric"); var notInterface = new FilterComparableEqual(typeof(bool), false, "IsInterface"); //var noInterface = new FilterExcludeRelation("Interfaces"); //var rel2plain = new TransformerRelationalToPlain(); var haveProps = new FilterComparableGreat(typeof(int), 0, "PropertiesNr"); //var justRelations = new FilterRetainItemsWithKey("NameRelation", FilterType.Equal); var fileRazor = Path.Combine(dir, "blockly.cshtml"); string filename = "#static:Directory.GetCurrentDirectory()#\\blockly.html"; ISend senderHTML = new SyncSenderMultiple( new Sender_Text(filename, "<html><body>") { FileMode = FileMode.Create }, new Sender_HTMLRazor("Views/" + Path.GetFileName(fileRazor), filename), //new Sender_HTMLRelationViz("Name", filename), new Sender_Text(filename, "</body></html>") ) ; var senderRow = new SenderByRowToFile("Name", "txt", "Block Definition", "txt"); var clear = new TransformClearValues(); var trReceiveHtml = new ReceiverHTMLTable(@"blockly.html", Encoding.UTF8); var decodeHtml = new TransformerHtmlDecode(); //var addJS = new TransformModifyField("Name", "{0}.js"); var senderBlockTag = new SenderByRowToFile("Name", "_def.txt", "Block definition", "txt"); var senderBlockDefinitionJs = new SenderByRowToFile("Name", "_block.js", "Block JS", "js"); var senderBlockCodeJs = new SenderByRowToFile("Name", "_code.js", "Block CodeGenerator", "js"); var job = new SimpleJobConditionalTransformers(); job .AddReceiver(folderWithDll) .AddFilter(filterFiles) .AddTransformer(loadDllFromFiles) .AddFilter(filterTypes) .AddFilter(notAbstract) .AddFilter(notGeneric) .AddFilter(notInterface) .AddFilter(haveProps) //.AddTransformer(noInterface) //.AddTransformer(rel2plain) .AddSender(senderHTML) .AddTransformer(clear) .Add(clear, trReceiveHtml) .Add(trReceiveHtml, decodeHtml) .Add(decodeHtml, senderBlockTag) .Add(decodeHtml, senderBlockDefinitionJs) .Add(decodeHtml, senderBlockCodeJs) ; return(job.SerializeMe()); }