public void LoadFromPath_WithDependencyPathsSpecified_CanLoadAssemblyDependencies() { using (var directory = TempDirectory.Create()) { // Arrange var alphaFilePath = LoaderTestResources.Alpha.WriteToFile(directory.DirectoryPath, "Alpha.dll"); var betaFilePath = LoaderTestResources.Beta.WriteToFile(directory.DirectoryPath, "Beta.dll"); var gammaFilePath = LoaderTestResources.Gamma.WriteToFile(directory.DirectoryPath, "Gamma.dll"); var deltaFilePath = LoaderTestResources.Delta.WriteToFile(directory.DirectoryPath, "Delta.dll"); var loader = new TestDefaultExtensionAssemblyLoader(Path.Combine(directory.DirectoryPath, "shadow")); loader.AddAssemblyLocation(gammaFilePath); loader.AddAssemblyLocation(deltaFilePath); // Act var alpha = loader.LoadFromPath(alphaFilePath); var beta = loader.LoadFromPath(betaFilePath); // Assert var builder = new StringBuilder(); var a = alpha.CreateInstance("Alpha.A"); a.GetType().GetMethod("Write").Invoke(a, new object[] { builder, "Test A" }); var b = beta.CreateInstance("Beta.B"); b.GetType().GetMethod("Write").Invoke(b, new object[] { builder, "Test B" }); var expected = @"Delta: Gamma: Alpha: Test A Delta: Gamma: Beta: Test B "; var actual = builder.ToString(); Assert.Equal(expected, actual, ignoreLineEndingDifferences: true); } }
public void Check_ReturnsFalse_WhenAssemblyHasDifferentMVID() { using (var directory = TempDirectory.Create()) { // Arrange var output = new StringWriter(); // Load Beta.dll from the future Alpha.dll path to prime the assembly loader var alphaFilePath = LoaderTestResources.Beta.WriteToFile(directory.DirectoryPath, "Alpha.dll"); var betaFilePath = LoaderTestResources.Beta.WriteToFile(directory.DirectoryPath, "Beta.dll"); var gammaFilePath = LoaderTestResources.Gamma.WriteToFile(directory.DirectoryPath, "Gamma.dll"); var deltaFilePath = LoaderTestResources.Delta.WriteToFile(directory.DirectoryPath, "Delta.dll"); var loader = new TestDefaultExtensionAssemblyLoader(Path.Combine(directory.DirectoryPath, "shadow")); var checker = new DefaultExtensionDependencyChecker(loader, output); // This will cause the loader to cache some inconsistent information. loader.LoadFromPath(alphaFilePath); LoaderTestResources.Alpha.WriteToFile(directory.DirectoryPath, "Alpha.dll"); // Act var result = checker.Check(new[] { alphaFilePath, gammaFilePath, deltaFilePath, }); // Assert Assert.False(result, "Check should not have passed: " + output.ToString()); } }
public void LoadFromPath_CanLoadAssembly() { using (var directory = TempDirectory.Create()) { // Arrange var alphaFilePath = LoaderTestResources.Alpha.WriteToFile(directory.DirectoryPath, "Alpha.dll"); var loader = new TestDefaultExtensionAssemblyLoader(Path.Combine(directory.DirectoryPath, "shadow")); // Act var assembly = loader.LoadFromPath(alphaFilePath); // Assert Assert.NotNull(assembly); } }
public void Load_CanLoadAssemblyByName_AfterLoadingByPath() { using (var directory = TempDirectory.Create()) { // Arrange var alphaFilePath = LoaderTestResources.Alpha.WriteToFile(directory.DirectoryPath, "Alpha.dll"); var loader = new TestDefaultExtensionAssemblyLoader(Path.Combine(directory.DirectoryPath, "shadow")); var assembly1 = loader.LoadFromPath(alphaFilePath); // Act var assembly2 = loader.Load(assembly1.FullName); // Assert Assert.Same(assembly1, assembly2); } }
public void Check_ReturnsFalse_WithMissingDependency() { using (var directory = TempDirectory.Create()) { // Arrange var output = new StringWriter(); var alphaFilePath = LoaderTestResources.Alpha.WriteToFile(directory.DirectoryPath, "Alpha.dll"); var loader = new TestDefaultExtensionAssemblyLoader(Path.Combine(directory.DirectoryPath, "shadow")); var checker = new DefaultExtensionDependencyChecker(loader, output); // Act var result = checker.Check(new[] { alphaFilePath, }); // Assert Assert.False(result, "Check should not have passed: " + output.ToString()); } }
public void LoadFromPath_DoesNotAddDuplicates_AfterLoadingByName() { using (var directory = TempDirectory.Create()) { // Arrange var alphaFilePath = LoaderTestResources.Alpha.WriteToFile(directory.DirectoryPath, "Alpha.dll"); var alphaFilePath2 = LoaderTestResources.Alpha.WriteToFile(directory.DirectoryPath, "Alpha2.dll"); var loader = new TestDefaultExtensionAssemblyLoader(Path.Combine(directory.DirectoryPath, "shadow")); loader.AddAssemblyLocation(alphaFilePath); var assembly1 = loader.Load("Alpha"); // Act var assembly2 = loader.LoadFromPath(alphaFilePath2); // Assert Assert.Same(assembly1, assembly2); } }
public void Check_ReturnsTrue_WithAllDependenciesProvided() { using (var directory = TempDirectory.Create()) { // Arrange var output = new StringWriter(); var alphaFilePath = LoaderTestResources.Alpha.WriteToFile(directory.DirectoryPath, "Alpha.dll"); var betaFilePath = LoaderTestResources.Beta.WriteToFile(directory.DirectoryPath, "Beta.dll"); var gammaFilePath = LoaderTestResources.Gamma.WriteToFile(directory.DirectoryPath, "Gamma.dll"); var deltaFilePath = LoaderTestResources.Delta.WriteToFile(directory.DirectoryPath, "Delta.dll"); var loader = new TestDefaultExtensionAssemblyLoader(Path.Combine(directory.DirectoryPath, "shadow")); var checker = new DefaultExtensionDependencyChecker(loader, output); // Act var result = checker.Check(new[] { alphaFilePath, betaFilePath, gammaFilePath, deltaFilePath, }); // Assert Assert.True(result, "Check should have passed: " + output.ToString()); } }