public void Check_ReturnsFalse_WhenAssemblyHasDifferentMVID() { // Arrange var directory = _testAssetsManager.CreateTestDirectory(); var output = new StringWriter(); // Load Beta.dll from the future Alpha.dll path to prime the assembly loader var alphaFilePath = LoaderTestResources.Beta.WriteToFile(directory.Path, "Alpha.dll"); var betaFilePath = LoaderTestResources.Beta.WriteToFile(directory.Path, "Beta.dll"); var gammaFilePath = LoaderTestResources.Gamma.WriteToFile(directory.Path, "Gamma.dll"); var deltaFilePath = LoaderTestResources.Delta.WriteToFile(directory.Path, "Delta.dll"); var loader = new TestDefaultExtensionAssemblyLoader(Path.Combine(directory.Path, "shadow")); var checker = new DefaultExtensionDependencyChecker(loader, output, output); // This will cause the loader to cache some inconsistent information. loader.LoadFromPath(alphaFilePath); LoaderTestResources.Alpha.WriteToFile(directory.Path, "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_DoesNotAddDuplicates_AfterLoadingByPath() { // Arrange var directory = _testAssetsManager.CreateTestDirectory(); var alphaFilePath = LoaderTestResources.Alpha.WriteToFile(directory.Path, "Alpha.dll"); var alphaFilePath2 = LoaderTestResources.Alpha.WriteToFile(directory.Path, "Alpha2.dll"); var loader = new TestDefaultExtensionAssemblyLoader(Path.Combine(directory.Path, "shadow")); var assembly1 = loader.LoadFromPath(alphaFilePath); // Act var assembly2 = loader.LoadFromPath(alphaFilePath2); // Assert Assert.Same(assembly1, assembly2); }
public void LoadFromPath_CanLoadAssembly() { // Arrange var directory = _testAssetsManager.CreateTestDirectory(); var alphaFilePath = LoaderTestResources.Alpha.WriteToFile(directory.Path, "Alpha.dll"); var loader = new TestDefaultExtensionAssemblyLoader(Path.Combine(directory.Path, "shadow")); // Act var assembly = loader.LoadFromPath(alphaFilePath); // Assert Assert.NotNull(assembly); }
public void LoadFromPath_WithDependencyPathsSpecified_CanLoadAssemblyDependencies() { // Arrange var directory = _testAssetsManager.CreateTestDirectory(); var alphaFilePath = LoaderTestResources.Alpha.WriteToFile(directory.Path, "Alpha.dll"); var betaFilePath = LoaderTestResources.Beta.WriteToFile(directory.Path, "Beta.dll"); var gammaFilePath = LoaderTestResources.Gamma.WriteToFile(directory.Path, "Gamma.dll"); var deltaFilePath = LoaderTestResources.Delta.WriteToFile(directory.Path, "Delta.dll"); var loader = new TestDefaultExtensionAssemblyLoader(Path.Combine(directory.Path, "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); }