From e43560cbbd1ef722180dc04f476fa2fa66270c07 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 25 Nov 2024 22:33:11 -0500 Subject: [PATCH] Add logging tests --- SabreTools.IO.Test/Logging/ConvertersTests.cs | 38 +++++++++++++ .../Logging/InternalStopwatchTests.cs | 40 ++++++++++++++ SabreTools.IO.Test/Logging/LoggerTests.cs | 54 +++++++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 SabreTools.IO.Test/Logging/ConvertersTests.cs create mode 100644 SabreTools.IO.Test/Logging/InternalStopwatchTests.cs create mode 100644 SabreTools.IO.Test/Logging/LoggerTests.cs diff --git a/SabreTools.IO.Test/Logging/ConvertersTests.cs b/SabreTools.IO.Test/Logging/ConvertersTests.cs new file mode 100644 index 0000000..ad38c39 --- /dev/null +++ b/SabreTools.IO.Test/Logging/ConvertersTests.cs @@ -0,0 +1,38 @@ +using SabreTools.IO.Logging; +using Xunit; + +namespace SabreTools.IO.Test.Logging +{ + public class ConvertersTests + { + [Theory] + [InlineData(null, LogLevel.VERBOSE)] + [InlineData("", LogLevel.VERBOSE)] + [InlineData("INVALID", LogLevel.VERBOSE)] + [InlineData("verbose", LogLevel.VERBOSE)] + [InlineData("VERBOSE", LogLevel.VERBOSE)] + [InlineData("user", LogLevel.USER)] + [InlineData("USER", LogLevel.USER)] + [InlineData("warning", LogLevel.WARNING)] + [InlineData("WARNING", LogLevel.WARNING)] + [InlineData("error", LogLevel.ERROR)] + [InlineData("ERROR", LogLevel.ERROR)] + public void AsLogLevelTest(string? level, LogLevel expected) + { + LogLevel actual = level.AsLogLevel(); + Assert.Equal(expected, actual); + } + + [Theory] + [InlineData(LogLevel.VERBOSE, "VERBOSE")] + [InlineData(LogLevel.USER, "USER")] + [InlineData(LogLevel.WARNING, "WARNING")] + [InlineData(LogLevel.ERROR, "ERROR")] + [InlineData((LogLevel)99, null)] + public void FromLogLevelTest(LogLevel level, string? expected) + { + string? actual = level.FromLogLevel(); + Assert.Equal(expected, actual); + } + } +} \ No newline at end of file diff --git a/SabreTools.IO.Test/Logging/InternalStopwatchTests.cs b/SabreTools.IO.Test/Logging/InternalStopwatchTests.cs new file mode 100644 index 0000000..9030c2d --- /dev/null +++ b/SabreTools.IO.Test/Logging/InternalStopwatchTests.cs @@ -0,0 +1,40 @@ +using SabreTools.IO.Logging; +using Xunit; + +namespace SabreTools.IO.Test.Logging +{ + public class InternalStopwatchTests + { + [Fact] + public void Stopwatch_NoSubject_StartNoSubject() + { + var stopwatch = new InternalStopwatch(); + stopwatch.Start(); + stopwatch.Stop(); + } + + [Fact] + public void Stopwatch_NoSubject_StartSubject() + { + var stopwatch = new InternalStopwatch(); + stopwatch.Start("start"); + stopwatch.Stop(); + } + + [Fact] + public void Stopwatch_Subject_StartNoSubject() + { + var stopwatch = new InternalStopwatch("init"); + stopwatch.Start(); + stopwatch.Stop(); + } + + [Fact] + public void Stopwatch_Subject_StartSubject() + { + var stopwatch = new InternalStopwatch("init"); + stopwatch.Start("start"); + stopwatch.Stop(); + } + } +} \ No newline at end of file diff --git a/SabreTools.IO.Test/Logging/LoggerTests.cs b/SabreTools.IO.Test/Logging/LoggerTests.cs new file mode 100644 index 0000000..cf96a6c --- /dev/null +++ b/SabreTools.IO.Test/Logging/LoggerTests.cs @@ -0,0 +1,54 @@ +using System; +using SabreTools.IO.Logging; +using Xunit; + +namespace SabreTools.IO.Test.Logging +{ + public class LoggerTests + { + [Fact] + public void EndToEnd() + { + Assert.Null(LoggerImpl.Filename); + Assert.False(LoggerImpl.LogToFile); + Assert.Null(LoggerImpl.LogDirectory); + Assert.True(LoggerImpl.AppendPrefix); + Assert.False(LoggerImpl.ThrowOnError); + + LoggerImpl.Start(); + + var logger = new Logger(); + + logger.Verbose("verbose"); + logger.Verbose(new Exception()); + logger.Verbose(new Exception(), "verbose"); + logger.Verbose(1, 1, "verbose"); + + logger.User("user"); + logger.User(new Exception()); + logger.User(new Exception(), "user"); + logger.User(1, 1, "user"); + + logger.Warning("warning"); + logger.Warning(new Exception()); + logger.Warning(new Exception(), "warning"); + logger.Warning(1, 1, "warning"); + + logger.Error("error"); + logger.Error(new Exception()); + logger.Error(new Exception(), "error"); + logger.Error(1, 1, "error"); + + LoggerImpl.ThrowOnError = true; + Assert.Throws(() => logger.Error(new Exception())); + + Assert.True(LoggerImpl.StartTime < DateTime.Now); + Assert.True(LoggerImpl.LoggedWarnings); + Assert.True(LoggerImpl.LoggedErrors); + + LoggerImpl.SetFilename("logfile.txt", addDate: true); + + LoggerImpl.Close(); + } + } +} \ No newline at end of file