public void CanGetNewRegistrars()
        {
            var sweeper = new ServiceLocationAssemblyScanner();
            var assemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();
            Assert.IsFalse(sweeper.HasNewAssemblies);

            var registrars = sweeper.GetRegistrars();
            Assert.IsFalse(sweeper.HasNewAssemblies);
            Assert.AreEqual(0, registrars.Count());

           sweeper.AddAssembly( this.GetType().Assembly );
           Assert.IsTrue(sweeper.HasNewAssemblies);
            
            registrars = sweeper.GetRegistrars();
            Assert.IsFalse(sweeper.HasNewAssemblies);
            Assert.AreEqual(2, registrars.Count());
        }
        public void NewRegistrarsIfNewAssembliesPresent()
        {
            bool getRegistrarsCalled = false;
            var sweeper = new ServiceLocationAssemblyScanner();
            sweeper.HasNewAssemblies = true;
            sweeper.GetRegistrarTypes = () =>
            {
                getRegistrarsCalled = true;
                return new List<Type>() { typeof(TestRegistrar)};
            };

            var regs = sweeper.GetRegistrars().ToList();
            Assert.IsTrue(getRegistrarsCalled);
            Assert.AreEqual(1, regs.Count());
            Assert.IsTrue(regs.First() is TestRegistrar);
        }
        public void ExistingRegistrarIsOverwritenWhenNewAssemblyFoundThatContainsIt()
        {
            bool getRegistrarsCalled = false;
            var sweeper = new ServiceLocationAssemblyScanner();
            sweeper._registrars.Add(typeof(TestRegistrar));
            sweeper.HasNewAssemblies = true;
            sweeper.GetRegistrarTypes = () =>
            {
                getRegistrarsCalled = true;
                return new List<Type>() { typeof(TestRegistrar) };
            };

            var regs = sweeper.GetRegistrars().ToList();
            Assert.IsTrue(getRegistrarsCalled);
            Assert.AreEqual(1, regs.Count());
            Assert.IsTrue(regs.First() is TestRegistrar);
            Assert.AreEqual(1, sweeper._registrars.Count);
            Assert.AreEqual(typeof(TestRegistrar), sweeper._registrars.First());
        }
        public void NoNewRegistrarsIfNoNewAssemblies()
        {
            bool getRegistrarsCalled = false;
            var sweeper = new ServiceLocationAssemblyScanner();
            sweeper.GetRegistrarTypes = () => { getRegistrarsCalled = false;
                                                  return new List<Type>();
            };

            var regs = sweeper.GetRegistrars();
            Assert.IsFalse(getRegistrarsCalled);
            Assert.AreEqual(0, regs.Count());
        }