Пример #1
0
        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
        }
Пример #2
0
        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());
        }
Пример #3
0
        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
        }
Пример #4
0
        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());
        }