Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 59 additions & 59 deletions src/LogLibrary.Tests/LoggerFixture.cs
Original file line number Diff line number Diff line change
@@ -1,63 +1,63 @@
using NSubstitute;
using NUnit.Framework;

#pragma warning disable S2699 // Tests should include assertions

namespace LogLibrary.Tests
{
[TestFixture]
public class LoggerFixture
{
private Logger _sut;
ILogDestination _logDestination;

[SetUp]
public void SetUp()
{
_logDestination = Substitute.For<ILogDestination>();
}

private void CreateLogger(LogLevel level)
{
_sut = new Logger(level, _logDestination);
}

[Test]
public void Verify_debug_log_not_logged_if_level_is_info()
{
CreateLogger(LogLevel.Info);
_sut.Log(LogLevel.Debug, "This should not be logged");
_logDestination.DidNotReceive().AddLog(Arg.Any<LogMessage>());
}

[Test]
public void Verify_info_log_is_logged_if_level_is_info()
{
CreateLogger(LogLevel.Info);
_sut.Log(LogLevel.Info, "This should not be logged");
_logDestination.Received().AddLog(Arg.Any<LogMessage>());
}

using NSubstitute;
using NUnit.Framework;
#pragma warning disable S2699 // Tests should include assertions
namespace LogLibrary.Tests
{
[TestFixture]
public class LoggerFixture
{
private Logger _sut;
private ILogDestination _logDestination;
[SetUp]
public void SetUp()
{
_logDestination = Substitute.For<ILogDestination>();
}
private void CreateLogger(LogLevel level)
{
_sut = new Logger(level, _logDestination);
}
[Test]
public void Verify_debug_log_not_logged_if_level_is_info()
{
CreateLogger(LogLevel.Info);
_sut.Log(LogLevel.Debug, "This should not be logged");
_logDestination.DidNotReceive().AddLog(Arg.Any<LogMessage>());
}
[Test]
public void Verify_info_log_is_logged_if_level_is_info()
{
CreateLogger(LogLevel.Info);
_sut.Log(LogLevel.Info, "This should not be logged");
_logDestination.Received().AddLog(Arg.Any<LogMessage>());
}
[Test]

public void Verify_warn_log_is_logged_if_level_is_info()
{
CreateLogger(LogLevel.Info);
_sut.Log(LogLevel.Warn, "This should not be logged");
_logDestination.Received().AddLog(Arg.Any<LogMessage>());
}

[Test]
public void Verify_log_formatting()
{
CreateLogger(LogLevel.Info);
_sut.Log(LogLevel.Info, "This have a parameter {0}", "value");
{
CreateLogger(LogLevel.Info);
_sut.Log(LogLevel.Warn, "This should not be logged");
_logDestination.Received().AddLog(Arg.Any<LogMessage>());
}
[Test]
public void Verify_log_formatting()
{
CreateLogger(LogLevel.Info);
_sut.Log(LogLevel.Info, "This have a parameter {0}", "value");
_logDestination.Received().AddLog(Arg.Do<LogMessage>(m =>
{
Assert.That(m.RenderedMessage, Is.EqualTo("This have a parameter value"));
}));
}
}
}

#pragma warning restore S2699 // Tests should include assertions
{
Assert.That(m.RenderedMessage, Is.EqualTo("This have a parameter value"));
}));
}
}
}
#pragma warning restore S2699 // Tests should include assertions
21 changes: 21 additions & 0 deletions src/LogLibrary/FileLogDestination.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System;
using System.IO;

namespace LogLibrary
{
public class FileLogDestination : ILogDestination
{
private readonly StreamWriter _streamWriter;

public FileLogDestination(String fileName)
{
var _fileStream = new FileStream(fileName, FileMode.OpenOrCreate);
_fileStream.Seek(0, SeekOrigin.End);
_streamWriter = new StreamWriter(_fileStream);
}
public void AddLog(LogMessage message)
{
_streamWriter.Write($"{message.Level}[{message.Timestamp}] - {message.RenderedMessage}");
}
}
}
1 change: 1 addition & 0 deletions src/LogLibrary/LogLibrary.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="ConsoleLogDestination.cs" />
<Compile Include="FileLogDestination.cs" />
<Compile Include="ILogDestination.cs" />
<Compile Include="Logger.cs" />
<Compile Include="LogMessage.cs" />
Expand Down