@@ -27,16 +27,43 @@ namespace ReqIFSharp.Tests
2727 using System . Threading . Tasks ;
2828 using System . Xml ;
2929
30+ using Microsoft . Extensions . Logging ;
31+
3032 using NUnit . Framework ;
3133
3234 using ReqIFSharp ;
3335
36+ using Serilog ;
37+
3438 /// <summary>
3539 /// Suite of tests for the <see cref="AttributeDefinitionDate"/>
3640 /// </summary>
3741 [ TestFixture ]
3842 public class AttributeDefinitionDateTestFixture
3943 {
44+ private ILoggerFactory loggerFactory ;
45+
46+ [ OneTimeSetUp ]
47+ public void OneTimeSetUp ( )
48+ {
49+ Log . Logger = new LoggerConfiguration ( )
50+ . MinimumLevel . Verbose ( )
51+ . WriteTo . Console ( outputTemplate : "[{Timestamp:HH:mm:ss} {Level:u3}] {SourceContext} - {Message:lj}{NewLine}{Exception}" )
52+ . CreateLogger ( ) ;
53+
54+ this . loggerFactory = LoggerFactory . Create ( builder =>
55+ {
56+ builder . AddSerilog ( ) ;
57+ } ) ;
58+ }
59+
60+ [ Test ]
61+ public void Verify_that_constructor_does_not_throw_exception ( )
62+ {
63+ Assert . That ( ( ) => new AttributeDefinitionDate ( null ) , Throws . Nothing ) ;
64+ Assert . That ( ( ) => new AttributeDefinitionDate ( this . loggerFactory ) , Throws . Nothing ) ;
65+ }
66+
4067 [ Test ]
4168 public void Verify_That_The_Attribute_Definition_Can_Be_Set_Or_Get ( )
4269 {
@@ -153,5 +180,100 @@ public async Task Verify_that_WriteXmlAsync_does_not_throw_exception()
153180 Assert . That ( async ( ) => await attributeDefinitionDate . WriteXmlAsync ( writer , cancellationTokenSource . Token ) ,
154181 Throws . Nothing ) ;
155182 }
183+
184+ [ Test ]
185+ public void Verify_that_ReadXml_sets_references_and_properties ( )
186+ {
187+ var xml = """
188+ <ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_eULasAfhEeelU71CdMk83g" LAST-CHANGE="2017-03-13T12:37:41.309+01:00" LONG-NAME="Date">
189+ <ALTERNATIVE-ID>
190+ <ALTERNATIVE-ID IDENTIFIER="_eULasAfhEeelU71CdMk83g"/>
191+ </ALTERNATIVE-ID>
192+ <DEFAULT-VALUE>
193+ <ATTRIBUTE-VALUE-DATE THE-VALUE="1976-08-20T12:00:00.000+01:00"/>
194+ </DEFAULT-VALUE>
195+ <TYPE />
196+ </ATTRIBUTE-DEFINITION-DATE>
197+ """ ;
198+
199+ using var reader = XmlReader . Create ( new StringReader ( xml ) , new XmlReaderSettings { Async = true } ) ;
200+ reader . MoveToContent ( ) ;
201+
202+ var content = new ReqIFContent ( this . loggerFactory ) ;
203+ var specificationType = new SpecificationType ( content , this . loggerFactory ) ;
204+ var attributeDefinitionDate = new AttributeDefinitionDate ( specificationType , this . loggerFactory ) ;
205+
206+ attributeDefinitionDate . ReadXml ( reader ) ;
207+
208+ using ( Assert . EnterMultipleScope ( ) )
209+ {
210+ Assert . That ( attributeDefinitionDate . Identifier , Is . EqualTo ( "_eULasAfhEeelU71CdMk83g" ) ) ;
211+ Assert . That ( attributeDefinitionDate . LongName , Is . EqualTo ( "Date" ) ) ;
212+ Assert . That ( attributeDefinitionDate . AlternativeId . Identifier , Is . EqualTo ( "_eULasAfhEeelU71CdMk83g" ) ) ;
213+ }
214+ }
215+
216+ [ Test ]
217+ public async Task Verify_that_ReadXmlAsync_sets_references_and_properties ( )
218+ {
219+ var xml = """
220+ <ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_eULasAfhEeelU71CdMk83g" LAST-CHANGE="2017-03-13T12:37:41.309+01:00" LONG-NAME="Date">
221+ <ALTERNATIVE-ID>
222+ <ALTERNATIVE-ID IDENTIFIER="_eULasAfhEeelU71CdMk83g"/>
223+ </ALTERNATIVE-ID>
224+ <DEFAULT-VALUE>
225+ <ATTRIBUTE-VALUE-DATE THE-VALUE="1976-08-20T12:00:00.000+01:00"/>
226+ </DEFAULT-VALUE>
227+ <TYPE />
228+ </ATTRIBUTE-DEFINITION-DATE>
229+ """ ;
230+
231+ using var reader = XmlReader . Create ( new StringReader ( xml ) , new XmlReaderSettings { Async = true } ) ;
232+ await reader . MoveToContentAsync ( ) ;
233+
234+ var content = new ReqIFContent ( this . loggerFactory ) ;
235+ var specificationType = new SpecificationType ( content , this . loggerFactory ) ;
236+ var attributeDefinitionDate = new AttributeDefinitionDate ( specificationType , this . loggerFactory ) ;
237+
238+ var cts = new CancellationTokenSource ( ) ;
239+
240+ await attributeDefinitionDate . ReadXmlAsync ( reader , cts . Token ) ;
241+
242+ using ( Assert . EnterMultipleScope ( ) )
243+ {
244+ Assert . That ( attributeDefinitionDate . Identifier , Is . EqualTo ( "_eULasAfhEeelU71CdMk83g" ) ) ;
245+ Assert . That ( attributeDefinitionDate . LongName , Is . EqualTo ( "Date" ) ) ;
246+ Assert . That ( attributeDefinitionDate . AlternativeId . Identifier , Is . EqualTo ( "_eULasAfhEeelU71CdMk83g" ) ) ;
247+ }
248+ }
249+
250+ [ Test ]
251+ public async Task Verify_that_when_ReadXmlAsync_cancel_throws_OperationCanceledException ( )
252+ {
253+ var xml = """
254+ <ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_eULasAfhEeelU71CdMk83g" LAST-CHANGE="2017-03-13T12:37:41.309+01:00" LONG-NAME="Date">
255+ <ALTERNATIVE-ID>
256+ <ALTERNATIVE-ID IDENTIFIER="_eULasAfhEeelU71CdMk83g"/>
257+ </ALTERNATIVE-ID>
258+ <DEFAULT-VALUE>
259+ <ATTRIBUTE-VALUE-DATE THE-VALUE="1976-08-20T12:00:00.000+01:00"/>
260+ </DEFAULT-VALUE>
261+ <TYPE />
262+ </ATTRIBUTE-DEFINITION-DATE>
263+ """ ;
264+
265+ using var reader = XmlReader . Create ( new StringReader ( xml ) , new XmlReaderSettings { Async = true } ) ;
266+ await reader . MoveToContentAsync ( ) ;
267+
268+ var content = new ReqIFContent ( this . loggerFactory ) ;
269+ var specificationType = new SpecificationType ( content , this . loggerFactory ) ;
270+ var attributeDefinitionDate = new AttributeDefinitionDate ( specificationType , this . loggerFactory ) ;
271+
272+ var cts = new CancellationTokenSource ( ) ;
273+
274+ await cts . CancelAsync ( ) ;
275+
276+ await Assert . ThatAsync ( ( ) => attributeDefinitionDate . ReadXmlAsync ( reader , cts . Token ) , Throws . InstanceOf < OperationCanceledException > ( ) ) ;
277+ }
156278 }
157279}
0 commit comments