public void Should_handle_TypeLoadException_and_find_1_event_listener()
        {
            // Arrange
            var log = new List<string>();
            SecurityDoctor.Register(e => log.Add(e.Message));

            var throwException = true;
            const string expectedExceptionMessage = "Could not load type X.";

            Func<Assembly, Type[]> assemblyTypeProvider = assembly =>
            {
                if (throwException)
                {
                    throwException = false;
                    throw new TypeLoadException(expectedExceptionMessage);
                }
                return assembly.GetExportedTypes();
            };

            var scanner = new SecurityEventListenerScanner(true, assemblyTypeProvider);
            var assemblies = new List<Assembly>
            {
                GetType().Assembly,
                GetType().Assembly
            };

            // Act
            var types = scanner.Scan(assemblies);

            // Assert
            Assert.That(types.Count(), Is.EqualTo(1));
            Assert.That(log.Single(), Is.EqualTo(expectedExceptionMessage));
        }
        public void Should_find_1_event_listener()
        {
            // Arrange
            var scanner = new SecurityEventListenerScanner();
            var assemblies = new List<Assembly> { GetType().Assembly };

            // Act
            var types = scanner.Scan(assemblies);

            // Assert
            Assert.That(types.Count(), Is.EqualTo(1));
        }