Index: Core/Common/src/Core.Common.Assembly/AssemblyResolver.cs
===================================================================
diff -u -r48814d5ba84cbc9db0d6b1b835e603da18d36357 -rf0b103a6b49b09ffb3ff42970b6a5e9a96c0d910
--- Core/Common/src/Core.Common.Assembly/AssemblyResolver.cs (.../AssemblyResolver.cs) (revision 48814d5ba84cbc9db0d6b1b835e603da18d36357)
+++ Core/Common/src/Core.Common.Assembly/AssemblyResolver.cs (.../AssemblyResolver.cs) (revision f0b103a6b49b09ffb3ff42970b6a5e9a96c0d910)
@@ -1,4 +1,4 @@
-// Copyright (C) Stichting Deltares 2019. All rights reserved.
+// Copyright (C) Stichting Deltares 2019. All rights reserved.
//
// This file is part of Riskeer.
//
@@ -154,21 +154,6 @@
}
///
- /// Resets the .
- ///
- ///
- /// After performing this method, equals true.
- ///
- public static void Reset()
- {
- initialized = false;
-
- assemblyLookup = new Dictionary();
-
- AppDomain.CurrentDomain.AssemblyResolve -= LoadFileFromAssemblyLookup;
- }
-
- ///
/// Gets the "Application" directory, containing all built-in and standalone assemblies.
///
/// The full path to the "Application" directory.
@@ -201,7 +186,7 @@
private static System.Reflection.Assembly LoadFileFromAssemblyLookup(object sender, ResolveEventArgs args)
{
- string assemblyName = args.Name.Contains(",")
+ string assemblyName = args.Name.Contains(",")
? args.Name.Substring(0, args.Name.IndexOf(','))
: args.Name;
Index: Core/Common/test/Core.Common.Assembly.Test/AssemblyResolverTest.cs
===================================================================
diff -u -r5e9bdc240bbe3ce6aab0620b08503654b08e3e69 -rf0b103a6b49b09ffb3ff42970b6a5e9a96c0d910
--- Core/Common/test/Core.Common.Assembly.Test/AssemblyResolverTest.cs (.../AssemblyResolverTest.cs) (revision 5e9bdc240bbe3ce6aab0620b08503654b08e3e69)
+++ Core/Common/test/Core.Common.Assembly.Test/AssemblyResolverTest.cs (.../AssemblyResolverTest.cs) (revision f0b103a6b49b09ffb3ff42970b6a5e9a96c0d910)
@@ -26,82 +26,107 @@
namespace Core.Common.Assembly.Test
{
[TestFixture]
+ [Serializable]
public class AssemblyResolverTest
{
private string validAssemblyDirectory;
+ private AppDomain appDomain;
- [OneTimeSetUp]
- public void OneTimeSetUp()
+ [SetUp]
+ public void SetUp()
{
- AssemblyResolver.Reset(); // Reset any initialization by other test projects
-
- validAssemblyDirectory = Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).FullName;
+ appDomain = AppDomain.CreateDomain(nameof(AssemblyResolverTest), AppDomain.CurrentDomain.Evidence,
+ AppDomain.CurrentDomain.SetupInformation);
}
[TearDown]
public void TearDown()
{
- AssemblyResolver.Reset();
+ AppDomain.Unload(appDomain);
}
[Test]
public void RequiresInitialization_AssemblyResolverNotInitialized_ReturnsTrue()
{
- // Call
- bool requiresInitialization = AssemblyResolver.RequiresInitialization;
+ // Setup
+ appDomain.DoCallBack(() =>
+ {
+ // Call
+ bool requiresInitialization = AssemblyResolver.RequiresInitialization;
- // Assert
- Assert.IsTrue(requiresInitialization);
+ // Assert
+ Assert.IsTrue(requiresInitialization);
+ });
}
[Test]
public void RequiresInitialization_AssemblyResolverInitialized_ReturnsFalse()
{
// Setup
- AssemblyResolver.Initialize(validAssemblyDirectory);
+ appDomain.DoCallBack(() =>
+ {
+ AssemblyResolver.Initialize(validAssemblyDirectory);
- // Call
- bool requiresInitialization = AssemblyResolver.RequiresInitialization;
+ // Call
+ bool requiresInitialization = AssemblyResolver.RequiresInitialization;
- // Assert
- Assert.IsFalse(requiresInitialization);
+ // Assert
+ Assert.IsFalse(requiresInitialization);
+ });
}
[Test]
public void Initialize_AssemblyResolverAlreadyInitialized_ThrowsInvalidOperationExceptionAndLeavesAssemblyResolverInitialized()
{
// Setup
- AssemblyResolver.Initialize(validAssemblyDirectory);
+ appDomain.DoCallBack(() =>
+ {
+ AssemblyResolver.Initialize(validAssemblyDirectory);
- // Call
- void Call() => AssemblyResolver.Initialize(validAssemblyDirectory);
+ // Call
+ void Call() => AssemblyResolver.Initialize(validAssemblyDirectory);
- // Assert
- var exception = Assert.Throws(Call);
- Assert.AreEqual("Cannot initialize the assembly resolver more than once.", exception.Message);
- Assert.IsFalse(AssemblyResolver.RequiresInitialization);
+ // Assert
+ var exception = Assert.Throws(Call);
+ Assert.AreEqual("Cannot initialize the assembly resolver more than once.", exception.Message);
+ Assert.IsFalse(AssemblyResolver.RequiresInitialization);
+ });
}
[Test]
public void Initialize_InvalidAssemblyDirectory_ThrowsDirectoryNotFoundExceptionAndLeavesAssemblyResolverStillRequiringInitialization()
{
- // Call
- void Call() => AssemblyResolver.Initialize("Invalid");
+ // Setup
+ appDomain.DoCallBack(() =>
+ {
+ // Call
+ void Call() => AssemblyResolver.Initialize("Invalid");
- // Assert
- var exception = Assert.Throws(Call);
- Assert.AreEqual("Cannot find the directory 'Invalid'.", exception.Message);
- Assert.IsTrue(AssemblyResolver.RequiresInitialization);
+ // Assert
+ var exception = Assert.Throws(Call);
+ Assert.AreEqual("Cannot find the directory 'Invalid'.", exception.Message);
+ Assert.IsTrue(AssemblyResolver.RequiresInitialization);
+ });
}
[Test]
public void GetApplicationDirectory_Always_ReturnsApplicationDirectory()
{
- // Call
- string applicationDirectory = AssemblyResolver.GetApplicationDirectory();
+ // Setup
+ appDomain.DoCallBack(() =>
+ {
+ // Call
+ string applicationDirectory = AssemblyResolver.GetApplicationDirectory();
- // Assert
- StringAssert.EndsWith("Application", applicationDirectory);
+ // Assert
+ StringAssert.EndsWith("Application", applicationDirectory);
+ });
}
+
+ [OneTimeSetUp]
+ public void OneTimeSetUp()
+ {
+ validAssemblyDirectory = Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).FullName;
+ }
}
}
\ No newline at end of file