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); }
public void LoadFromPath_DoesNotAddDuplicates_AfterLoadingByName() { // 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")); loader.AddAssemblyLocation(alphaFilePath); var assembly1 = loader.Load("Alpha"); // Act var assembly2 = loader.LoadFromPath(alphaFilePath2); // Assert Assert.Same(assembly1, assembly2); }