bool IPresenter.GenerateGrammar(XmlElement root)
 {
     try
     {
         Log4NetPatternImporter.GenerateRegularGrammarElement(root, view.PatternTextBoxValue);
     }
     catch (Log4NetImportException e)
     {
         alerts.ShowPopup("Error", "Failed to import the pattern:\n" + e.Message, AlertFlags.Ok | AlertFlags.WarningIcon);
         return(false);
     }
     return(true);
 }
        void TestLayout(string layout, Action <Logger, ExpectedLog> loggingCallback)
        {
            var     logManagerType = log4NetAsm.GetType("log4net.LogManager");
            dynamic hierarchy      = logManagerType.InvokeMember("GetRepository",
                                                                 BindingFlags.Static | BindingFlags.InvokeMethod | BindingFlags.Public, null, null, null);

            dynamic patternLayout = log4NetAsm.CreateInstance("log4net.Layout.PatternLayout");

            patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline";
            patternLayout.ActivateOptions();

            TextWriter logWriter = new StringWriter();

            dynamic memory = log4NetAsm.CreateInstance("log4net.Appender.TextWriterAppender");

            memory.Layout = patternLayout;
            memory.Writer = logWriter;
            memory.ActivateOptions();
            hierarchy.Root.AddAppender(memory);

            //hierarchy.Root.Level = Level.Info;
            hierarchy.Configured = true;

            var logger = logManagerType.InvokeMember("GetLogger",
                                                     BindingFlags.Static | BindingFlags.InvokeMethod | BindingFlags.Public, null, null, new [] { GetType() });

            var expectedLog = new ExpectedLog();

            loggingCallback(new Logger()
            {
                impl = logger
            }, expectedLog);

            var logContent = logWriter.ToString();

            var formatDocument = CreateTestFormatSkeleton();

            Log4NetPatternImporter.GenerateRegularGrammarElement(formatDocument.DocumentElement, layout);

            ParseAndVerifyLog(expectedLog, logContent, formatDocument);
        }