Skip to content

Commit dfefdc7

Browse files
[Improve] code coverage
1 parent 991351e commit dfefdc7

1 file changed

Lines changed: 121 additions & 0 deletions

File tree

ReqIFSharp.Tests/ReqIFHeaderTestFixture.cs

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,20 @@ namespace ReqIFSharp.Tests
2222
{
2323
using System;
2424
using System.IO;
25+
using System.Linq;
26+
using System.Runtime.Serialization;
2527
using System.Threading;
28+
using System.Threading.Tasks;
2629
using System.Xml;
2730

2831
using Microsoft.Extensions.Logging;
2932

3033
using NUnit.Framework;
3134

35+
using ReqIFSharp;
36+
3237
using Serilog;
38+
using Serilog.Events;
3339

3440
/// <summary>
3541
/// Suite of tests for the <see cref="ReqIFHeader"/> class
@@ -39,12 +45,17 @@ public class ReqIFHeaderTestFixture
3945
{
4046
private ILoggerFactory loggerFactory;
4147

48+
private TestLogEventSink testLogEventSink;
49+
4250
[OneTimeSetUp]
4351
public void OneTimeSetUp()
4452
{
53+
this.testLogEventSink = new TestLogEventSink();
54+
4555
Log.Logger = new LoggerConfiguration()
4656
.MinimumLevel.Verbose()
4757
.WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {SourceContext} - {Message:lj}{NewLine}{Exception}")
58+
.WriteTo.Sink(this.testLogEventSink)
4859
.CreateLogger();
4960

5061
this.loggerFactory = LoggerFactory.Create(builder =>
@@ -53,6 +64,12 @@ public void OneTimeSetUp()
5364
});
5465
}
5566

67+
[SetUp]
68+
public void SetUp()
69+
{
70+
this.testLogEventSink.Events.Clear();
71+
}
72+
5673
[Test]
5774
public void Verify_that_ReadXmlAsync_throws_exception_when_cancelled()
5875
{
@@ -85,5 +102,109 @@ public void Verify_That_WriteXmlAsync_throws_exception_when_cancelled()
85102
async () => await reqIfHeader.WriteXmlAsync(writer, cts.Token),
86103
Throws.Exception.TypeOf<OperationCanceledException>());
87104
}
105+
106+
[Test]
107+
public void Verify_that_when_unsupported_element_ReqIFHeader_ReadXml_logs_warning()
108+
{
109+
var xml = """
110+
<THE-HEADER>
111+
<REQ-IF-HEADER IDENTIFIER="_jgCysQfNEeeAO8RifBaE-g">
112+
<COMMENT>Created by: jastram</COMMENT>
113+
<CREATION-TIME>2017-03-13T10:15:09.017+01:00</CREATION-TIME>
114+
<REPOSITORY-ID>repos-id</REPOSITORY-ID>
115+
<REQ-IF-TOOL-ID>fmStudio (http://formalmind.com/studio)</REQ-IF-TOOL-ID>
116+
<REQ-IF-VERSION>1.0</REQ-IF-VERSION>
117+
<SOURCE-TOOL-ID>ProR (http://pror.org)</SOURCE-TOOL-ID>
118+
<TITLE>Specification Title</TITLE>
119+
<UNSUPPORTED-ELEMENT />
120+
</REQ-IF-HEADER>
121+
</THE-HEADER>
122+
""";
123+
124+
using var reader = XmlReader.Create(new StringReader(xml), new XmlReaderSettings { Async = true });
125+
reader.MoveToContent();
126+
127+
var reqIfHeader = new ReqIFHeader(this.loggerFactory);
128+
129+
Assert.That(() => reqIfHeader.ReadXml(reader), Throws.Nothing);
130+
131+
var warningEvent = this.testLogEventSink.Events
132+
.Where(e => e.Level == LogEventLevel.Warning)
133+
.ToList().First();
134+
135+
Assert.That(warningEvent.Properties["LocalName"].ToString().Trim('"'),
136+
Is.EqualTo("UNSUPPORTED-ELEMENT"));
137+
}
138+
139+
[Test]
140+
public async Task Verify_that_when_unsupported_element_ReqIFHeader_ReadXmlAsync_logs_warning()
141+
{
142+
var xml = """
143+
<THE-HEADER>
144+
<REQ-IF-HEADER IDENTIFIER="_jgCysQfNEeeAO8RifBaE-g">
145+
<COMMENT>Created by: jastram</COMMENT>
146+
<CREATION-TIME>2017-03-13T10:15:09.017+01:00</CREATION-TIME>
147+
<REPOSITORY-ID>repos-id</REPOSITORY-ID>
148+
<REQ-IF-TOOL-ID>fmStudio (http://formalmind.com/studio)</REQ-IF-TOOL-ID>
149+
<REQ-IF-VERSION>1.0</REQ-IF-VERSION>
150+
<SOURCE-TOOL-ID>ProR (http://pror.org)</SOURCE-TOOL-ID>
151+
<TITLE>Specification Title</TITLE>
152+
<UNSUPPORTED-ELEMENT />
153+
</REQ-IF-HEADER>
154+
</THE-HEADER>
155+
""";
156+
157+
using var reader = XmlReader.Create(new StringReader(xml), new XmlReaderSettings { Async = true });
158+
await reader.MoveToContentAsync();
159+
160+
var reqIfHeader = new ReqIFHeader(this.loggerFactory);
161+
162+
await reqIfHeader.ReadXmlAsync(reader, CancellationToken.None);
163+
164+
var warningEvent = this.testLogEventSink.Events
165+
.Where(e => e.Level == LogEventLevel.Warning)
166+
.ToList().First();
167+
168+
Assert.That(warningEvent.Properties["LocalName"].ToString().Trim('"'),
169+
Is.EqualTo("UNSUPPORTED-ELEMENT"));
170+
}
171+
172+
[Test]
173+
public void Verify_that_when_invalid_date_ReqIFHeader_ReadXml_throws_exception()
174+
{
175+
var xml = """
176+
<THE-HEADER>
177+
<REQ-IF-HEADER IDENTIFIER="_abc">
178+
<CREATION-TIME>invalid-date</CREATION-TIME>
179+
</REQ-IF-HEADER>
180+
</THE-HEADER>
181+
""";
182+
183+
using var reader = XmlReader.Create(new StringReader(xml), new XmlReaderSettings { Async = false });
184+
reader.MoveToContent();
185+
186+
var reqIfHeader = new ReqIFHeader(this.loggerFactory);
187+
188+
Assert.That(() => reqIfHeader.ReadXml(reader), Throws.TypeOf<SerializationException>());
189+
}
190+
191+
[Test]
192+
public async Task Verify_that_when_invalid_date_ReqIFHeader_ReadXmlAsync_throws_exception()
193+
{
194+
var xml = """
195+
<THE-HEADER>
196+
<REQ-IF-HEADER IDENTIFIER="_abc">
197+
<CREATION-TIME>invalid-date</CREATION-TIME>
198+
</REQ-IF-HEADER>
199+
</THE-HEADER>
200+
""";
201+
202+
using var reader = XmlReader.Create(new StringReader(xml), new XmlReaderSettings { Async = true });
203+
await reader.MoveToContentAsync();
204+
205+
var reqIfHeader = new ReqIFHeader(this.loggerFactory);
206+
207+
await Assert.ThatAsync(() => reqIfHeader.ReadXmlAsync(reader, CancellationToken.None), Throws.TypeOf<SerializationException>());
208+
}
88209
}
89210
}

0 commit comments

Comments
 (0)