diff --git a/ModuleManager/Logging/LogSplitter.cs b/ModuleManager/Logging/LogSplitter.cs new file mode 100644 index 00000000..53712f20 --- /dev/null +++ b/ModuleManager/Logging/LogSplitter.cs @@ -0,0 +1,29 @@ +using System; +using UnityEngine; + +namespace ModuleManager.Logging +{ + public class LogSplitter : IBasicLogger + { + private readonly IBasicLogger logger1; + private readonly IBasicLogger logger2; + + public LogSplitter(IBasicLogger logger1, IBasicLogger logger2) + { + this.logger1 = logger1 ?? throw new ArgumentNullException(nameof(logger1)); + this.logger2 = logger2 ?? throw new ArgumentNullException(nameof(logger2)); + } + + public void Log(LogType logType, string message) + { + logger1.Log(logType, message); + logger2.Log(logType, message); + } + + public void Exception(string message, Exception exception) + { + logger1.Exception(message, exception); + logger2.Exception(message, exception); + } + } +} diff --git a/ModuleManager/ModuleManager.csproj b/ModuleManager/ModuleManager.csproj index c22076f6..51550b90 100644 --- a/ModuleManager/ModuleManager.csproj +++ b/ModuleManager/ModuleManager.csproj @@ -50,6 +50,7 @@ + diff --git a/ModuleManagerTests/Logging/LogSplitterTest.cs b/ModuleManagerTests/Logging/LogSplitterTest.cs new file mode 100644 index 00000000..2375a3a3 --- /dev/null +++ b/ModuleManagerTests/Logging/LogSplitterTest.cs @@ -0,0 +1,56 @@ +using System; +using Xunit; +using NSubstitute; +using UnityEngine; +using ModuleManager.Logging; + +namespace ModuleManagerTests.Logging +{ + public class LogSplitterTest + { + [Fact] + public void TestConstructor__Logger1Null() + { + ArgumentNullException ex = Assert.Throws(delegate + { + new LogSplitter(null, Substitute.For()); + }); + + Assert.Equal("logger1", ex.ParamName); + } + + [Fact] + public void TestConstructor__Logger2Null() + { + ArgumentNullException ex = Assert.Throws(delegate + { + new LogSplitter(Substitute.For(), null); + }); + + Assert.Equal("logger2", ex.ParamName); + } + + [Fact] + public void TestLog() + { + IBasicLogger logger1 = Substitute.For(); + IBasicLogger logger2 = Substitute.For(); + LogSplitter logSplitter = new LogSplitter(logger1, logger2); + logSplitter.Log(LogType.Log, "some stuff"); + logger1.Received().Log(LogType.Log, "some stuff"); + logger2.Received().Log(LogType.Log, "some stuff"); + } + + [Fact] + public void TestException() + { + IBasicLogger logger1 = Substitute.For(); + IBasicLogger logger2 = Substitute.For(); + LogSplitter logSplitter = new LogSplitter(logger1, logger2); + Exception ex = new Exception(); + logSplitter.Exception("some stuff", ex); + logger1.Received().Exception("some stuff", ex); + logger2.Received().Exception("some stuff", ex); + } + } +} diff --git a/ModuleManagerTests/ModuleManagerTests.csproj b/ModuleManagerTests/ModuleManagerTests.csproj index f07b5c07..f5d9a47e 100644 --- a/ModuleManagerTests/ModuleManagerTests.csproj +++ b/ModuleManagerTests/ModuleManagerTests.csproj @@ -85,6 +85,7 @@ +