public void CanAddNewAssembly()
 {
     var sweeper = new ServiceLocationAssemblyScanner();
     var assemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();
     var temp = assemblies.First();
     
     Assert.IsFalse(sweeper.HasNewAssemblies);
     
     sweeper.AddAssembly(temp);
     
     Assert.IsTrue(sweeper.HasNewAssemblies);
     Assert.AreEqual(1,sweeper._assemblies.Count);
 }
 public void CanGetRegistrarTypes()
 {
     var sweeper = new ServiceLocationAssemblyScanner();
     Assert.IsFalse(sweeper.HasNewAssemblies);
     
     sweeper.AddAssembly(this.GetType().Assembly);
     Assert.IsTrue(sweeper.HasNewAssemblies);
     
     var types = sweeper.GetRegistrarTypes().ToList();
     Assert.IsTrue(sweeper.HasNewAssemblies);
     Assert.AreEqual(2, types.Count());
     Assert.IsTrue(types.Contains(typeof(TestRegistrar)));
     Assert.IsTrue(types.Contains(typeof(OtherTestRegistrar)));
 }
        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 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 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 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());
        }
        public void CanGetRegistrarTypesWithEmptyAssembliesCollection()
        {
            var sweeper = new ServiceLocationAssemblyScanner();
            Assert.IsFalse(sweeper.HasNewAssemblies);

            var types = sweeper.GetRegistrarTypes().ToList();
            Assert.IsFalse(sweeper.HasNewAssemblies);

            Assert.AreEqual(0, types.Count());
        }
        public void CanGetRegistrarTypesWithAssemblyThatHasNoRegistrars()
        {
            var sweeper = new ServiceLocationAssemblyScanner();
            Assert.IsFalse(sweeper.HasNewAssemblies);
            var assemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();
            var temp = assemblies.First();

            sweeper.AddAssembly(temp);
            Assert.IsTrue(sweeper.HasNewAssemblies);

            var types = sweeper.GetRegistrarTypes().ToList();
            Assert.IsTrue(sweeper.HasNewAssemblies);

            Assert.AreEqual(0, types.Count());
        }