public void CachingLogger_EmitResultsCorrectlyBasedOnRules()
        {
            Result result01            = GenerateResult();
            ReportingDescriptor rule01 = GenerateRule();

            var logger = new CachingLogger();

            Assert.Throws <ArgumentNullException>(() => logger.Log(null, result01));
            Assert.Throws <ArgumentNullException>(() => logger.Log(rule01, null));

            rule01.Id       = "TEST0001";
            result01.RuleId = "TEST0002";

            Assert.Throws <ArgumentException>(() => logger.Log(rule01, result01));

            rule01.Id       = "TEST0001";
            result01.RuleId = "TEST0001";

            // Validate simple insert
            logger.Log(rule01, result01);
            logger.Results.Should().HaveCount(1);
            logger.Results.Should().ContainKey(rule01);

            // Updating value from a specific key
            logger.Log(rule01, result01);
            logger.Results.Should().HaveCount(1);
            logger.Results.Should().ContainKey(rule01);
            logger.Results[rule01].Should().HaveCount(2);
        }
        public void CachingLogger_EmitNotificationsCorrectly()
        {
            string messageGuid = Guid.NewGuid().ToString();

            var notification = new Notification
            {
                Message = new Message
                {
                    Text = messageGuid
                }
            };

            var logger = new CachingLogger();

            logger.LogConfigurationNotification(notification);
            logger.ConfigurationNotifications.Should().HaveCount(1);

            logger.LogToolNotification(notification);
            logger.ToolNotifications.Should().HaveCount(1);
        }