// Copyright (C) Stichting Deltares 2019. All rights reserved.
//
// This file is part of Riskeer.
//
// Riskeer is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see .
//
// All names, logos, and references to "Deltares" are registered trademarks of
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
using System;
using System.IO;
using NUnit.Framework;
namespace Core.Common.Assembly.Test
{
[TestFixture]
public class AssemblyResolverTest
{
private string validAssemblyDirectory;
[OneTimeSetUp]
public void OneTimeSetUp()
{
AssemblyResolver.Reset(); // Reset any initialization by other test projects
validAssemblyDirectory = Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).FullName;
}
[TearDown]
public void TearDown()
{
AssemblyResolver.Reset();
}
[Test]
public void RequiresInitialization_AssemblyResolverNotInitialized_ReturnsTrue()
{
// Call
bool requiresInitialization = AssemblyResolver.RequiresInitialization;
// Assert
Assert.IsTrue(requiresInitialization);
}
[Test]
public void RequiresInitialization_AssemblyResolverInitialized_ReturnsFalse()
{
// Setup
AssemblyResolver.Initialize(validAssemblyDirectory);
// Call
bool requiresInitialization = AssemblyResolver.RequiresInitialization;
// Assert
Assert.IsFalse(requiresInitialization);
}
[Test]
public void Initialize_AssemblyResolverAlreadyInitialized_ThrowsInvalidOperationExceptionAndLeavesAssemblyResolverInitialized()
{
// Setup
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);
}
[Test]
public void Initialize_InvalidAssemblyDirectory_ThrowsDirectoryNotFoundExceptionAndLeavesAssemblyResolverStillRequiringInitialization()
{
// 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);
}
[Test]
public void GetApplicationDirectory_Always_ReturnsApplicationDirectory()
{
// Call
string applicationDirectory = AssemblyResolver.GetApplicationDirectory();
// Assert
StringAssert.EndsWith("Application", applicationDirectory);
}
}
}