Skip to content

Commit 9e79446

Browse files
feat: Logger tests (MAPCO-9054) (#34)
* add logger tests * format * modify tests * remove tests * add log test
1 parent a2daef6 commit 9e79446

10 files changed

+182
-0
lines changed

Assets/EditorTests/Logger.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using com.mapcolonies.core.Services.LoggerService;
2+
using NUnit.Framework;
3+
4+
namespace EditorTests.Logger
5+
{
6+
public class LoggerServiceConfigTests
7+
{
8+
[Test]
9+
public void Init_WhenJsonExists_LoadsBasicProperties()
10+
{
11+
LoggerServiceConfig config = new LoggerServiceConfig();
12+
config.Init();
13+
Assert.IsTrue(config.ServiceEnabled);
14+
Assert.IsTrue(config.EnableConsole);
15+
Assert.AreEqual("Logger/log4net.xml", config.Log4NetConfigXml);
16+
Assert.AreEqual("DEBUG", config.MinLogLevel);
17+
}
18+
}
19+
}

Assets/EditorTests/Logger/LoggerServiceConfigTests.cs.meta

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using System.IO;
2+
using com.mapcolonies.core.Services.LoggerService;
3+
using NUnit.Framework;
4+
using UnityEngine;
5+
6+
namespace EditorTests.Logger
7+
{
8+
public class LoggerServiceIntegrationTests
9+
{
10+
[Test]
11+
public void DebugLog_WritesToInfoLogFile()
12+
{
13+
LoggerServiceConfig config = new LoggerServiceConfig();
14+
config.Init();
15+
16+
Assert.IsTrue(config.ServiceEnabled, "ServiceEnabled must be true for this integration test.");
17+
Assert.IsFalse(string.IsNullOrEmpty(config.Log4NetConfigXml), "Log4NetConfigXml must point to a valid XML file.");
18+
19+
string logsDir = config.GetSystemLogsDirectory();
20+
Directory.CreateDirectory(logsDir);
21+
22+
foreach (string file in Directory.GetFiles(logsDir, "info.log*"))
23+
{
24+
File.Delete(file);
25+
}
26+
27+
ILogHandler originalHandler = Debug.unityLogger.logHandler;
28+
29+
using (new LoggerService(config))
30+
{
31+
Assert.IsInstanceOf<Log4NetHandler>(Debug.unityLogger.logHandler, "LoggerService must replace Unity's log handler with Log4NetHandler when initialized.");
32+
33+
Debug.Log("IntegrationTest: DebugLog_WritesToInfoLogFile");
34+
}
35+
36+
Debug.unityLogger.logHandler = originalHandler;
37+
38+
string[] infoFiles = Directory.GetFiles(logsDir, "info.log*");
39+
Assert.IsNotEmpty(infoFiles, $"No info.log* files were found after logging. Log directory: {logsDir}");
40+
41+
FileInfo fi = new FileInfo(infoFiles[0]);
42+
Assert.Greater(fi.Length, 0, $"The log file '{fi.FullName}' is empty, but it should contain at least one log entry.");
43+
}
44+
}
45+
}

Assets/EditorTests/Logger/LoggerServiceIntegrationTests.cs.meta

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using com.mapcolonies.core.Services.LoggerService;
2+
using NUnit.Framework;
3+
using UnityEngine;
4+
5+
namespace EditorTests.Logger
6+
{
7+
public class LoggerServiceTests
8+
{
9+
private ILogHandler _originalHandler;
10+
11+
[SetUp]
12+
public void SetUp()
13+
{
14+
_originalHandler = Debug.unityLogger.logHandler;
15+
}
16+
17+
[TearDown]
18+
public void TearDown()
19+
{
20+
Debug.unityLogger.logHandler = _originalHandler;
21+
}
22+
23+
[Test]
24+
public void Ctor_WhenConfigValid_ReplacesUnityLogHandlerWithLog4NetHandler()
25+
{
26+
LoggerServiceConfig config = new LoggerServiceConfig();
27+
config.Init();
28+
29+
ILogHandler before = Debug.unityLogger.logHandler;
30+
LoggerService loggerService = null;
31+
32+
try
33+
{
34+
loggerService = new LoggerService(config);
35+
Assert.IsInstanceOf<Log4NetHandler>(Debug.unityLogger.logHandler);
36+
Assert.IsTrue(Debug.unityLogger.logEnabled);
37+
}
38+
finally
39+
{
40+
loggerService?.Dispose();
41+
Assert.AreSame(before, Debug.unityLogger.logHandler);
42+
}
43+
}
44+
}
45+
}

Assets/EditorTests/Logger/LoggerServiceTests.cs.meta

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/PlayModeTests/Logger.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
using System.Collections;
2+
using System.Reflection;
3+
using com.mapcolonies.core.Services.LoggerService;
4+
using NUnit.Framework;
5+
using UnityEngine;
6+
using UnityEngine.TestTools;
7+
8+
namespace PlayModeTests.Logger
9+
{
10+
public class LoggerInitializerPlayModeTests
11+
{
12+
private ILogHandler _originalHandler;
13+
14+
[SetUp]
15+
public void SetUp()
16+
{
17+
_originalHandler = Debug.unityLogger.logHandler;
18+
Log4NetHandler.ApplicationDataPath = null;
19+
Log4NetHandler.UnityVersion = null;
20+
}
21+
22+
[TearDown]
23+
public void TearDown()
24+
{
25+
TryCallDispose();
26+
Debug.unityLogger.logHandler = _originalHandler;
27+
}
28+
29+
[UnityTest]
30+
public IEnumerator Init_SetsHandlerAndStaticFields_AndDisposeRestoresHandler()
31+
{
32+
LoggerInitializer.Init();
33+
yield return null;
34+
35+
Assert.IsInstanceOf<Log4NetHandler>(Debug.unityLogger.logHandler);
36+
Assert.AreEqual(Application.dataPath, Log4NetHandler.ApplicationDataPath);
37+
Assert.NotNull(Log4NetHandler.UnityVersion);
38+
39+
TryCallDispose();
40+
Assert.AreSame(_originalHandler, Debug.unityLogger.logHandler);
41+
}
42+
43+
private void TryCallDispose()
44+
{
45+
MethodInfo m = typeof(LoggerInitializer).GetMethod("Dispose", BindingFlags.NonPublic | BindingFlags.Static);
46+
m?.Invoke(null, null);
47+
}
48+
}
49+
}

Assets/PlayModeTests/Logger/LoggerInitializerPlayModeTests.cs.meta

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)