コード例 #1
0
        public void Should_Add_New_Log_With_Specific_Output_Source_And_Null_Message(LogOutputItem log)
        {
            var viewModel = ViewModelFactory();

            viewModel.Text.ShouldBeNullOrWhiteSpace();

            viewModel.AddLog(log);

            viewModel.Text.ShouldBeNullOrWhiteSpace();
        }
コード例 #2
0
        /// <summary>
        /// The logging function
        /// </summary>
        /// <param name="message">A message to log</param>
        /// <param name="category">The category of logging</param>
        /// <param name="priority">The priority of logging</param>
        public void LogOutput(LogOutputItem log)
        {
            var        trace  = new StackTrace();
            StackFrame frame  = trace.GetFrame(1); // 0 will be the inner-most method
            MethodBase method = frame.GetMethod();

            Logger.Log(LogLevel.Info, method.DeclaringType + ": " + log.Message);

            _aggregator.GetEvent <LogOutputEvent>().Publish(log);
        }
コード例 #3
0
        public void Should_Add_Clear_Current_Context_Log_For_Default_OutputSource(LogOutputItem log)
        {
            var viewModel = ViewModelFactory();

            viewModel.Text.ShouldBeNullOrWhiteSpace();
            viewModel.AddLog(log);
            viewModel.Text.ShouldNotBeNullOrWhiteSpace();

            viewModel.ClearCurrentContextLog();

            viewModel.Text.ShouldBeNullOrWhiteSpace();
        }
コード例 #4
0
        public void Should_Output_Source_Removed_Event_Not_Change_Text_If_Not_Current_OutputSource()
        {
            var viewModel        = ViewModelFactory();
            var outputSourceName = "RandomOutputSource";

            viewModel.AddOutputSource(outputSourceName);

            viewModel.Text.ShouldBeNullOrWhiteSpace();
            var log = new LogOutputItem("Test message", OutputCategory.Warn, OutputPriority.None, outputSourceName);

            viewModel.AddLog(log);
            viewModel.Text.ShouldBeNullOrWhiteSpace();
        }
コード例 #5
0
        public void Should_Text_Property_Changed()
        {
            var isFired   = false;
            var viewModel = ViewModelFactory();

            viewModel.PropertyChanged += (o, e) =>
            {
                if (e.PropertyName == nameof(viewModel.Text))
                {
                    isFired = true;
                }
            };

            var log = new LogOutputItem("Test message", OutputCategory.Warn, OutputPriority.None);

            viewModel.AddLog(log);

            isFired.ShouldBe(true);
        }
コード例 #6
0
        public void AddLog(LogOutputItem log)
        {
            if (!string.IsNullOrWhiteSpace(log.Message))
            {
                var message = $"{DateTime.Now.ToShortTimeString()} - {log.Message}\n";

                if (log.OutputSource != null)
                {
                    _outputSource[log.OutputSource] += message;
                }
                else
                {
                    //Append to default
                    _outputSource[DefaultOutputSource] += message;
                }

                if (CurrentOutputContext == DefaultOutputSource)
                {
                    OnPropertyChanged(() => Text);
                }
            }
        }