Skip to content

Commit 04016ea

Browse files
committed
logging tests
1 parent f54f82d commit 04016ea

1 file changed

Lines changed: 131 additions & 0 deletions

File tree

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
namespace PolylineAlgorithm.Abstraction.Tests.Internal;
2+
3+
using Microsoft.Extensions.Logging;
4+
using Microsoft.Extensions.Logging.Testing;
5+
using PolylineAlgorithm.Abstraction.Internal;
6+
7+
[TestClass]
8+
public class LoggingTest {
9+
static FakeLoggerProvider _loggerProvider = new FakeLoggerProvider();
10+
static ILoggerFactory _loggerFactory = new FakeLoggerFactory(_loggerProvider);
11+
12+
[TestMethod]
13+
[DataRow(null)]
14+
[DataRow("")]
15+
[DataRow(" ")]
16+
[DataRow("argumentName")]
17+
public void ILogger_LogNullArgumentError_Ok(string value) {
18+
// Arrange
19+
string argumentName = value;
20+
21+
// Act
22+
_loggerFactory
23+
.CreateLogger<LoggingTest>()
24+
.LogNullArgumentError(argumentName);
25+
26+
// Assert
27+
Assert.AreEqual(1, _loggerProvider.Collector.LatestRecord.Id);
28+
Assert.AreEqual(LogLevel.Error, _loggerProvider.Collector.LatestRecord.Level);
29+
Assert.AreEqual($"Argument {value ?? "(null)"} cannot be null.", _loggerProvider.Collector.LatestRecord.Message);
30+
}
31+
32+
[TestMethod]
33+
[DataRow(null)]
34+
[DataRow("")]
35+
[DataRow(" ")]
36+
[DataRow("argumentName")]
37+
public void ILogger_LogEmptyArgumentError_Ok(string value) {
38+
// Arrange
39+
string argumentName = value;
40+
41+
// Act
42+
_loggerFactory
43+
.CreateLogger<LoggingTest>()
44+
.LogEmptyArgumentError(argumentName);
45+
46+
// Assert
47+
Assert.AreEqual(2, _loggerProvider.Collector.LatestRecord.Id);
48+
Assert.AreEqual(LogLevel.Error, _loggerProvider.Collector.LatestRecord.Level);
49+
Assert.AreEqual($"Argument {value ?? "(null)"} cannot be empty.", _loggerProvider.Collector.LatestRecord.Message);
50+
}
51+
52+
[TestMethod]
53+
public void ILogger_LogInternalBufferOverflowError_Ok() {
54+
// Arrange
55+
int position = 5;
56+
int bufferLength = 10;
57+
int requiredSpace = 15;
58+
59+
// Act
60+
_loggerFactory
61+
.CreateLogger<LoggingTest>()
62+
.LogInternalBufferOverflowError(position, bufferLength, requiredSpace);
63+
64+
// Assert
65+
Assert.AreEqual(3, _loggerProvider.Collector.LatestRecord.Id);
66+
Assert.AreEqual(LogLevel.Error, _loggerProvider.Collector.LatestRecord.Level);
67+
Assert.AreEqual(
68+
$"Internal buffer has {bufferLength} length. At position {position} is required additional {requiredSpace} length.",
69+
_loggerProvider.Collector.LatestRecord.Message);
70+
}
71+
72+
[TestMethod]
73+
public void ILogger_LogCannotWriteValueToBufferError_Ok() {
74+
// Arrange
75+
int position = 5;
76+
77+
// Act
78+
_loggerFactory
79+
.CreateLogger<LoggingTest>()
80+
.LogCannotWriteValueToBufferError(position);
81+
82+
// Assert
83+
Assert.AreEqual(4, _loggerProvider.Collector.LatestRecord.Id);
84+
Assert.AreEqual(LogLevel.Error, _loggerProvider.Collector.LatestRecord.Level);
85+
Assert.AreEqual($"Cannot write to internal buffer at position {position}.", _loggerProvider.Collector.LatestRecord.Message);
86+
}
87+
88+
[TestMethod]
89+
[DataRow(null)]
90+
[DataRow("")]
91+
[DataRow(" ")]
92+
[DataRow("argumentName")]
93+
public void ILogger_LogPolylineCannotBeShorterThanError_Ok(string value) {
94+
// Arrange
95+
string argumentName = value;
96+
int actualLength = 10;
97+
int minimumLength = 5;
98+
99+
// Act
100+
_loggerFactory
101+
.CreateLogger<LoggingTest>()
102+
.LogPolylineCannotBeShorterThanError(argumentName, actualLength, minimumLength);
103+
104+
// Assert
105+
Assert.AreEqual(5, _loggerProvider.Collector.LatestRecord.Id);
106+
Assert.AreEqual(LogLevel.Error, _loggerProvider.Collector.LatestRecord.Level);
107+
Assert.AreEqual(
108+
$"Argument {value} is too short. Minimal length is {minimumLength}. Actual length is {actualLength}.",
109+
_loggerProvider.Collector.LatestRecord.Message);
110+
}
111+
112+
113+
[TestMethod]
114+
public void ILogger_LogRequestedBufferSizeExceedsMaxBufferLengthWarning_Ok() {
115+
// Arrange
116+
int requestedBufferLength = 5;
117+
int maxBufferLength = 10;
118+
119+
// Act
120+
_loggerFactory
121+
.CreateLogger<LoggingTest>()
122+
.LogRequestedBufferSizeExceedsMaxBufferLengthWarning(requestedBufferLength, maxBufferLength);
123+
124+
// Assert
125+
Assert.AreEqual(6, _loggerProvider.Collector.LatestRecord.Id);
126+
Assert.AreEqual(LogLevel.Warning, _loggerProvider.Collector.LatestRecord.Level);
127+
Assert.AreEqual(
128+
$"Requested buffer size of {requestedBufferLength} exceeds maximum allowed buffer length of {maxBufferLength}.",
129+
_loggerProvider.Collector.LatestRecord.Message);
130+
}
131+
}

0 commit comments

Comments
 (0)