/// <summary> /// Initializes the loader using the default values. /// </summary> public Loader() { _containerLoader = this.CreateDefaultContainerLoader(); // Load everything else into the container var hostAssembly = typeof(Loader).Assembly; QueuedActions.Add(container => container.LoadFrom(hostAssembly)); // Make sure that the plugins are only added once if (!Plugins.HasElementWith(p => p is AutoPropertyInjector)) { Plugins.Add(new AutoPropertyInjector()); } if (!Plugins.HasElementWith(p => p is AutoMethodInjector)) { Plugins.Add(new AutoMethodInjector()); } if (!Plugins.HasElementWith(p => p is AutoFieldInjector)) { Plugins.Add(new AutoFieldInjector()); } // Add the initializer to the end of // the instantiation pipeline if (!Plugins.HasElementWith(p => p is InitializerPlugin)) { Plugins.Add(new InitializerPlugin()); } FileLoaders.Add(_containerLoader); }
public void AssemblyContainerLoaderShouldCallTypeLoader() { // HACK: The Cut&Paste is ugly, but it works var containerLoader = new AssemblyContainerLoader(); var filename = "input.dll"; var targetAssembly = typeof(SampleClass).Assembly; // Make sure that it calls the assembly loader _mockAssemblyLoader.Expect(loader => loader.Load(filename)).Returns(targetAssembly); // It must call the Type Extractor _mockTypeExtractor.Expect(extractor => extractor.GetTypes(targetAssembly)) .Returns(new[] { typeof(SampleClass) }); // Make sure that it calls the type loaders _mockTypeLoader.Expect(loader => loader.CanLoad(typeof(SampleClass))).Returns(true); _mockTypeLoader.Expect(loader => loader.Load(typeof(SampleClass))) .Returns(new Action <IServiceContainer> [0]); var assemblyActionLoader = new AssemblyActionLoader <IServiceContainer>(() => containerLoader.TypeLoaders); assemblyActionLoader.TypeExtractor = _mockTypeExtractor.Object; containerLoader.AssemblyLoader = _mockAssemblyLoader.Object; containerLoader.AssemblyActionLoader = assemblyActionLoader; // The container loader should call the type loader // once the load method is called containerLoader.TypeLoaders.Add(_mockTypeLoader.Object); containerLoader.Load(filename); }
public void AssemblyContainerLoaderShouldCallTypeLoader() { // HACK: The Cut&Paste is ugly, but it works var containerLoader = new AssemblyContainerLoader(); string filename = "input.dll"; Assembly targetAssembly = typeof(SampleClass).Assembly; // Make sure that it calls the assembly loader _mockAssemblyLoader.Expect(loader => loader.Load(filename)).Returns(targetAssembly); // It must call the Type Extractor _mockTypeExtractor.Expect(extractor => extractor.GetTypes(targetAssembly)) .Returns(new[] { typeof(SampleClass) }); // Make sure that it calls the type loaders _mockTypeLoader.Expect(loader => loader.CanLoad(typeof(SampleClass))).Returns(true); _mockTypeLoader.Expect(loader => loader.Load(typeof(SampleClass))) .Returns(new Action<IServiceContainer>[0]); var assemblyActionLoader = new AssemblyActionLoader<IServiceContainer>(() => containerLoader.TypeLoaders); assemblyActionLoader.TypeExtractor = _mockTypeExtractor.Object; containerLoader.AssemblyLoader = _mockAssemblyLoader.Object; containerLoader.AssemblyActionLoader = assemblyActionLoader; // The container loader should call the type loader // once the load method is called containerLoader.TypeLoaders.Add(_mockTypeLoader.Object); containerLoader.Load(filename); }
public void AssemblyContainerLoaderShouldCallAssemblyLoader() { var containerLoader = new AssemblyContainerLoader(); // The container loader should use the assembly loader // to load the assembly var filename = "input.dll"; _mockAssemblyLoader.Expect(loader => loader.Load(filename)).Returns(typeof(SampleClass).Assembly); containerLoader.AssemblyLoader = _mockAssemblyLoader.Object; containerLoader.Load(filename); }
public void AssemblyContainerLoaderShouldCallAssemblyLoader() { var containerLoader = new AssemblyContainerLoader(); // The container loader should use the assembly loader // to load the assembly string filename = "input.dll"; _mockAssemblyLoader.Expect(loader => loader.Load(filename)).Returns(typeof(SampleClass).Assembly); containerLoader.AssemblyLoader = _mockAssemblyLoader.Object; containerLoader.Load(filename); }
public void AssemblyContainerLoaderShouldOnlyLoadDllFiles() { var mockTypeLoader = new Mock <ITypeLoader>(); var containerLoader = new AssemblyContainerLoader(); containerLoader.TypeLoaders.Add(mockTypeLoader.Object); // This should return true var validFile = typeof(AssemblyContainerLoaderTests).Assembly.Location; Assert.True(containerLoader.CanLoad(validFile)); // This should return false; var invalidFile = "input.txt"; Assert.False(containerLoader.CanLoad(invalidFile)); }
public void AssemblyContainerLoaderShouldCallTypeExtractor() { var containerLoader = new AssemblyContainerLoader(); string filename = "input.dll"; Assembly targetAssembly = typeof(SampleClass).Assembly; // Make sure that it calls the assembly loader _mockAssemblyLoader.Expect(loader => loader.Load(filename)).Returns(targetAssembly); // It must call the Type Extractor _mockTypeExtractor.Expect(extractor => extractor.GetTypes(targetAssembly)) .Returns(new[] { typeof(SampleClass) }); var assemblyActionLoader = new AssemblyActionLoader<IServiceContainer>(() => containerLoader.TypeLoaders); assemblyActionLoader.TypeExtractor = _mockTypeExtractor.Object; containerLoader.AssemblyLoader = _mockAssemblyLoader.Object; containerLoader.AssemblyActionLoader = assemblyActionLoader; containerLoader.Load(filename); }
public void AssemblyContainerLoaderShouldCallTypeExtractor() { var containerLoader = new AssemblyContainerLoader(); var filename = "input.dll"; var targetAssembly = typeof(SampleClass).Assembly; // Make sure that it calls the assembly loader _mockAssemblyLoader.Expect(loader => loader.Load(filename)).Returns(targetAssembly); // It must call the Type Extractor _mockTypeExtractor.Expect(extractor => extractor.GetTypes(targetAssembly)) .Returns(new[] { typeof(SampleClass) }); var assemblyActionLoader = new AssemblyActionLoader <IServiceContainer>(() => containerLoader.TypeLoaders); assemblyActionLoader.TypeExtractor = _mockTypeExtractor.Object; containerLoader.AssemblyLoader = _mockAssemblyLoader.Object; containerLoader.AssemblyActionLoader = assemblyActionLoader; containerLoader.Load(filename); }
public void AssemblyContainerLoaderShouldOnlyLoadDllFiles() { var mockTypeLoader = new Mock<ITypeLoader>(); var containerLoader = new AssemblyContainerLoader(); containerLoader.TypeLoaders.Add(mockTypeLoader.Object); // This should return true string validFile = typeof(AssemblyContainerLoaderTests).Assembly.Location; Assert.IsTrue(containerLoader.CanLoad(validFile)); // This should return false; string invalidFile = "input.txt"; Assert.IsFalse(containerLoader.CanLoad(invalidFile)); }