JD2022-TU1/main/tools.tests/framework.tests/Plume.tests/src.tests/services.tests/Plume.Bloomberg.Service.Tests/BloombergConfigurationTests.cs

66 lines
No EOL
2.1 KiB
C#

using Bloomberg.Client.Components.Settings;
using NUnit.Framework;
using System;
using System.Reflection;
namespace Plume.Bloomberg.Tests
{
[TestFixture]
public class BloombergConfigurationTests
{
const string ApplicationName = "MyApplication";
const string ExeName = ApplicationName + ".exe";
const string ExePath = "C:/here/there/over_here/" + ExeName;
[Test]
public void Constructor_ValidExePath_ValidInstance()
{
var settings = new TrackedApplication(ExePath);
Assert.AreEqual(ApplicationName, settings.ApplicationName);
Assert.AreEqual(ExeName, settings.ProcessFileName);
}
[Test]
public void Constructor_InvalidExePath_ThrowsException()
{
Assert.Throws<ArgumentException>(() => new TrackedApplication(string.Empty));
}
[Test]
public void GetGameSettings_ValidInstanceReference_ReferencedInstanceHasNotChanged()
{
var settings = new TrackedApplication(ExePath);
var gameSettings = CreateInstanceFromPrivateConstructor<GameSettings>();
var oldRef = gameSettings;
settings.GetGameSettings(ref gameSettings);
Assert.IsTrue(ReferenceEquals(oldRef, gameSettings));
}
[Test]
public void GetBloombergSettings_ValidInstanceReference_ReferencedInstanceHasNotChanged()
{
var settings = new TrackedApplication(ExePath);
var bloombergSettings = CreateInstanceFromPrivateConstructor<BloombergSettings>();
var oldRef = bloombergSettings;
settings.GetBloombergSettings(ref bloombergSettings);
Assert.IsTrue(ReferenceEquals(oldRef, bloombergSettings));
}
private T CreateInstanceFromPrivateConstructor<T>()
{
var constructor = typeof(T).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[0], null);
var instance = (T)constructor?.Invoke(null);
Assert.IsNotNull(instance);
return instance;
}
}
}