Skip to content

Commit 9ca6687

Browse files
Improve ReqIF extension coverage (#58)
* Improve ReqIF extension coverage
1 parent 4fa6f58 commit 9ca6687

8 files changed

+511
-140
lines changed

ReqIFSharp.Extensions.Tests/ReqIFExtensions/AttributeDefinitionExtensionsTestFixture.cs

Lines changed: 125 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@
2020

2121
namespace ReqIFSharp.Extensions.Tests.ReqIFExtensions
2222
{
23-
using System.Linq;
23+
using System;
24+
using System.Linq;
25+
using System.Threading;
26+
using System.Threading.Tasks;
2427

2528
using Microsoft.Extensions.Logging;
2629

@@ -54,9 +57,9 @@ public void OneTimeSetUp()
5457
});
5558
}
5659

57-
[Test]
58-
public void Verify_that_QueryDatatypeName_returns_expected_results()
59-
{
60+
[Test]
61+
public void Verify_that_QueryDatatypeName_returns_expected_results()
62+
{
6063
var attributeDefinitionBoolean = new AttributeDefinitionBoolean();
6164
Assert.That(attributeDefinitionBoolean.QueryDatatypeName(), Is.EqualTo("Boolean"));
6265

@@ -96,13 +99,29 @@ public void Verify_that_QueryDatatypeName_returns_expected_results()
9699
var attributeDefinitionXhtml = new AttributeDefinitionXHTML();
97100
Assert.That(attributeDefinitionXhtml.QueryDatatypeName(), Is.EqualTo("XHTML"));
98101

99-
attributeDefinitionXhtml = new AttributeDefinitionXHTML(this.loggerFactory);
100-
Assert.That(attributeDefinitionXhtml.QueryDatatypeName(), Is.EqualTo("XHTML"));
101-
}
102-
103-
[Test]
104-
public void Verify_that_QueryDefaultValueAsFormattedString_returns_expected_results()
105-
{
102+
attributeDefinitionXhtml = new AttributeDefinitionXHTML(this.loggerFactory);
103+
Assert.That(attributeDefinitionXhtml.QueryDatatypeName(), Is.EqualTo("XHTML"));
104+
}
105+
106+
[Test]
107+
public void Verify_that_QueryDatatypeName_throws_when_input_is_null()
108+
{
109+
Assert.That(() => AttributeDefinitionExtensions.QueryDatatypeName(null), Throws.ArgumentNullException);
110+
}
111+
112+
[Test]
113+
public void Verify_that_QueryDatatypeName_throws_when_type_is_not_supported()
114+
{
115+
var unsupportedAttributeDefinition = new UnsupportedAttributeDefinition();
116+
117+
Assert.That(
118+
() => unsupportedAttributeDefinition.QueryDatatypeName(),
119+
Throws.Exception.TypeOf<InvalidOperationException>());
120+
}
121+
122+
[Test]
123+
public void Verify_that_QueryDefaultValueAsFormattedString_returns_expected_results()
124+
{
106125
var testDataCreator = new ReqIFTestDataCreator();
107126
var reqif = testDataCreator.Create();
108127

@@ -126,8 +145,98 @@ public void Verify_that_QueryDefaultValueAsFormattedString_returns_expected_resu
126145
var attributeDefinitionString = (AttributeDefinitionString)specType.SpecAttributes.Single(x => x.Identifier == "requirement-string-attribute");
127146
Assert.That(attributeDefinitionString.QueryDefaultValueAsFormattedString(), Is.EqualTo("NOT SET"));
128147

129-
var attributeDefinitionXHTML = (AttributeDefinitionXHTML)specType.SpecAttributes.Single(x => x.Identifier == "requirement-xhtml-attribute");
130-
Assert.That(attributeDefinitionXHTML.QueryDefaultValueAsFormattedString(), Is.EqualTo("NOT SET"));
131-
}
132-
}
133-
}
148+
var attributeDefinitionXHTML = (AttributeDefinitionXHTML)specType.SpecAttributes.Single(x => x.Identifier == "requirement-xhtml-attribute");
149+
Assert.That(attributeDefinitionXHTML.QueryDefaultValueAsFormattedString(), Is.EqualTo("NOT SET"));
150+
}
151+
152+
[Test]
153+
public void Verify_that_QueryDefaultValueAsFormattedString_returns_formatted_default_values()
154+
{
155+
var attributeDefinitionBoolean = new AttributeDefinitionBoolean
156+
{
157+
DefaultValue = new AttributeValueBoolean { TheValue = true }
158+
};
159+
160+
Assert.That(attributeDefinitionBoolean.QueryDefaultValueAsFormattedString(), Is.EqualTo("True"));
161+
162+
var attributeDefinitionDate = new AttributeDefinitionDate
163+
{
164+
DefaultValue = new AttributeValueDate { TheValue = new DateTime(2020, 12, 25) }
165+
};
166+
167+
Assert.That(attributeDefinitionDate.QueryDefaultValueAsFormattedString(), Is.EqualTo("December 25, 2020"));
168+
169+
var enumValue = new EnumValue { Identifier = "enum" };
170+
var attributeDefinitionEnumeration = new AttributeDefinitionEnumeration
171+
{
172+
DefaultValue = new AttributeValueEnumeration()
173+
};
174+
attributeDefinitionEnumeration.DefaultValue.Values.Add(enumValue);
175+
176+
Assert.That(
177+
attributeDefinitionEnumeration.QueryDefaultValueAsFormattedString(),
178+
Is.EqualTo(enumValue.ToString()));
179+
180+
var attributeDefinitionInteger = new AttributeDefinitionInteger
181+
{
182+
DefaultValue = new AttributeValueInteger { TheValue = 42 }
183+
};
184+
185+
Assert.That(attributeDefinitionInteger.QueryDefaultValueAsFormattedString(), Is.EqualTo("42"));
186+
187+
var attributeDefinitionReal = new AttributeDefinitionReal
188+
{
189+
DefaultValue = new AttributeValueReal { TheValue = 4.2 }
190+
};
191+
192+
Assert.That(attributeDefinitionReal.QueryDefaultValueAsFormattedString(), Is.EqualTo("4.2"));
193+
194+
var attributeDefinitionString = new AttributeDefinitionString
195+
{
196+
DefaultValue = new AttributeValueString { TheValue = "value" }
197+
};
198+
199+
Assert.That(attributeDefinitionString.QueryDefaultValueAsFormattedString(), Is.EqualTo("value"));
200+
201+
var attributeDefinitionXhtml = new AttributeDefinitionXHTML
202+
{
203+
DefaultValue = new AttributeValueXHTML { TheValue = "<xhtml:p>content</xhtml:p>" }
204+
};
205+
206+
Assert.That(attributeDefinitionXhtml.QueryDefaultValueAsFormattedString(), Is.EqualTo("<xhtml:p>content</xhtml:p>"));
207+
}
208+
209+
[Test]
210+
public void Verify_that_QueryDefaultValueAsFormattedString_throws_when_input_is_null()
211+
{
212+
Assert.That(() => AttributeDefinitionExtensions.QueryDefaultValueAsFormattedString(null), Throws.ArgumentNullException);
213+
}
214+
215+
[Test]
216+
public void Verify_that_QueryDefaultValueAsFormattedString_throws_when_type_is_not_supported()
217+
{
218+
var unsupportedAttributeDefinition = new UnsupportedAttributeDefinition();
219+
220+
Assert.That(
221+
() => unsupportedAttributeDefinition.QueryDefaultValueAsFormattedString(),
222+
Throws.Exception.TypeOf<InvalidOperationException>());
223+
}
224+
225+
private class UnsupportedAttributeDefinition : AttributeDefinition
226+
{
227+
protected override DatatypeDefinition GetDatatypeDefinition()
228+
{
229+
return null;
230+
}
231+
232+
protected override void SetDatatypeDefinition(DatatypeDefinition datatypeDefinition)
233+
{
234+
}
235+
236+
internal override Task ReadXmlAsync(System.Xml.XmlReader reader, CancellationToken token)
237+
{
238+
return Task.CompletedTask;
239+
}
240+
}
241+
}
242+
}

ReqIFSharp.Extensions.Tests/ReqIFExtensions/AttributeValueExtensionsTestFixture.cs

Lines changed: 89 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@
2020

2121
namespace ReqIFSharp.Extensions.Tests.ReqIFExtensions
2222
{
23-
using System.Linq;
23+
using System;
24+
using System.Collections.Generic;
25+
using System.Linq;
26+
using System.Threading;
27+
using System.Threading.Tasks;
2428

2529
using NUnit.Framework;
2630

@@ -34,11 +38,11 @@ namespace ReqIFSharp.Extensions.Tests.ReqIFExtensions
3438
[TestFixture]
3539
public class AttributeValueExtensionsTestFixture
3640
{
37-
[Test]
38-
public void Verify_that_QueryFormattedValue_returns_expected_results()
39-
{
40-
var testDataCreator = new ReqIFTestDataCreator();
41-
var reqif = testDataCreator.Create();
41+
[Test]
42+
public void Verify_that_QueryFormattedValue_returns_expected_results()
43+
{
44+
var testDataCreator = new ReqIFTestDataCreator();
45+
var reqif = testDataCreator.Create();
4246

4347
var specObject = reqif.CoreContent.SpecObjects.Single(x => x.Identifier == "specobject_1");
4448

@@ -60,8 +64,82 @@ public void Verify_that_QueryFormattedValue_returns_expected_results()
6064
var attributeValueString = specObject.Values.OfType<AttributeValueString>().Single();
6165
Assert.That(attributeValueString.QueryFormattedValue(), Is.EqualTo("a string value"));
6266

63-
var attributeValueXhtml = specObject.Values.OfType<AttributeValueXHTML>().First();
64-
Assert.That(attributeValueXhtml.QueryFormattedValue(), Is.EqualTo("<xhtml:p>XhtmlPType<xhtml:a accesskey=\"a\" charset=\"UTF-8\" href=\"http://eclipse.org/rmf\" hreflang=\"en\" rel=\"LinkTypes\" rev=\"LinkTypes\" style=\"text-decoration:underline\" tabindex=\"1\" title=\"text\" type=\"text/html\"> text before br<xhtml:br/>text after br text before span<xhtml:span>XhtmlSpanType</xhtml:span>text after span text before em<xhtml:em>XhtmlEmType</xhtml:em>text after em text before strong<xhtml:strong>XhtmlStrongType</xhtml:strong>text after strong text before dfn<xhtml:dfn>XhtmlDfnType</xhtml:dfn>text after dfn text before code<xhtml:code>XhtmlCodeType</xhtml:code>text after code text before samp<xhtml:samp>XhtmlSampType</xhtml:samp>text after samp text before kbd<xhtml:kbd>XhtmlKbdType</xhtml:kbd>text after kbd text before var<xhtml:var>XhtmlVarType</xhtml:var>text after var text before cite<xhtml:cite>XhtmlCiteType</xhtml:cite>text after cite text before abbr<xhtml:abbr>XhtmlAbbrType</xhtml:abbr>text after abbr text before acronym<xhtml:acronym>XhtmlAcronymType</xhtml:acronym>text after acronym text before q<xhtml:q>XhtmlQType</xhtml:q>text after q text before tt<xhtml:tt>XhtmlInlPresType</xhtml:tt>text after tt text before i<xhtml:i>XhtmlInlPresType</xhtml:i>text after i text before b<xhtml:b>XhtmlInlPresType</xhtml:b>text after b text before big<xhtml:big>XhtmlInlPresType</xhtml:big>text after big text before small<xhtml:small>XhtmlInlPresType</xhtml:small>text after small text before sub<xhtml:sub>XhtmlInlPresType</xhtml:sub>text after sub text before sup<xhtml:sup>XhtmlInlPresType</xhtml:sup>text after sup text before ins<xhtml:ins>XhtmlEditType</xhtml:ins>text after ins text before del<xhtml:del>XhtmlEditType</xhtml:del>text after del</xhtml:a></xhtml:p>"));
65-
}
66-
}
67-
}
67+
var attributeValueXhtml = specObject.Values.OfType<AttributeValueXHTML>().First();
68+
Assert.That(attributeValueXhtml.QueryFormattedValue(), Is.EqualTo("<xhtml:p>XhtmlPType<xhtml:a accesskey=\"a\" charset=\"UTF-8\" href=\"http://eclipse.org/rmf\" hreflang=\"en\" rel=\"LinkTypes\" rev=\"LinkTypes\" style=\"text-decoration:underline\" tabindex=\"1\" title=\"text\" type=\"text/html\"> text before br<xhtml:br/>text after br text before span<xhtml:span>XhtmlSpanType</xhtml:span>text after span text before em<xhtml:em>XhtmlEmType</xhtml:em>text after em text before strong<xhtml:strong>XhtmlStrongType</xhtml:strong>text after strong text before dfn<xhtml:dfn>XhtmlDfnType</xhtml:dfn>text after dfn text before code<xhtml:code>XhtmlCodeType</xhtml:code>text after code text before samp<xhtml:samp>XhtmlSampType</xhtml:samp>text after samp text before kbd<xhtml:kbd>XhtmlKbdType</xhtml:kbd>text after kbd text before var<xhtml:var>XhtmlVarType</xhtml:var>text after var text before cite<xhtml:cite>XhtmlCiteType</xhtml:cite>text after cite text before abbr<xhtml:abbr>XhtmlAbbrType</xhtml:abbr>text after abbr text before acronym<xhtml:acronym>XhtmlAcronymType</xhtml:acronym>text after acronym text before q<xhtml:q>XhtmlQType</xhtml:q>text after q text before tt<xhtml:tt>XhtmlInlPresType</xhtml:tt>text after tt text before i<xhtml:i>XhtmlInlPresType</xhtml:i>text after i text before b<xhtml:b>XhtmlInlPresType</xhtml:b>text after b text before big<xhtml:big>XhtmlInlPresType</xhtml:big>text after big text before small<xhtml:small>XhtmlInlPresType</xhtml:small>text after small text before sub<xhtml:sub>XhtmlInlPresType</xhtml:sub>text after sub text before sup<xhtml:sup>XhtmlInlPresType</xhtml:sup>text after sup text before ins<xhtml:ins>XhtmlEditType</xhtml:ins>text after ins text before del<xhtml:del>XhtmlEditType</xhtml:del>text after del</xhtml:a></xhtml:p>"));
69+
}
70+
71+
[Test]
72+
public void Verify_that_QueryFormattedValue_joins_multiple_enumeration_values()
73+
{
74+
var enumerationValueA = new EnumValue
75+
{
76+
Properties = new EmbeddedValue { OtherContent = "A" }
77+
};
78+
79+
var enumerationValueB = new EnumValue
80+
{
81+
Properties = new EmbeddedValue { OtherContent = "B" }
82+
};
83+
84+
var attributeValueEnumeration = new AttributeValueEnumeration();
85+
attributeValueEnumeration.Values.Add(enumerationValueA);
86+
attributeValueEnumeration.Values.Add(enumerationValueB);
87+
88+
Assert.That(attributeValueEnumeration.QueryFormattedValue(), Is.EqualTo("A;B"));
89+
}
90+
91+
[Test]
92+
public void Verify_that_QueryFormattedValue_throws_when_attributeValue_is_null()
93+
{
94+
Assert.That(() => AttributeValueExtensions.QueryFormattedValue(null), Throws.ArgumentNullException);
95+
}
96+
97+
[Test]
98+
public void Verify_that_QueryFormattedValue_throws_when_type_is_not_supported()
99+
{
100+
var unsupportedAttributeValue = new UnsupportedAttributeValue();
101+
102+
Assert.That(
103+
() => unsupportedAttributeValue.QueryFormattedValue(),
104+
Throws.Exception.TypeOf<InvalidOperationException>());
105+
}
106+
107+
private class UnsupportedAttributeValue : AttributeValue
108+
{
109+
public override object ObjectValue
110+
{
111+
get => null;
112+
set
113+
{
114+
}
115+
}
116+
117+
protected override AttributeDefinition GetAttributeDefinition()
118+
{
119+
return null;
120+
}
121+
122+
protected override void SetAttributeDefinition(AttributeDefinition attributeDefinition)
123+
{
124+
}
125+
126+
internal override void ReadXml(System.Xml.XmlReader reader)
127+
{
128+
}
129+
130+
internal override Task ReadXmlAsync(System.Xml.XmlReader reader, CancellationToken token)
131+
{
132+
return Task.CompletedTask;
133+
}
134+
135+
internal override void WriteXml(System.Xml.XmlWriter writer)
136+
{
137+
}
138+
139+
internal override Task WriteXmlAsync(System.Xml.XmlWriter writer, CancellationToken token)
140+
{
141+
return Task.CompletedTask;
142+
}
143+
}
144+
}
145+
}

ReqIFSharp.Extensions.Tests/ReqIFExtensions/RelationGroupTypeExtensionsTestFixture.cs

Lines changed: 50 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@
2121
namespace ReqIFSharp.Extensions.Tests.ReqIFExtensions
2222
{
2323
using System;
24-
using System.Linq;
25-
26-
using NUnit.Framework;
27-
28-
using ReqIFSharp.Extensions.ReqIFExtensions;
29-
using ReqIFSharp.Extensions.Tests.TestData;
24+
using System.Linq;
25+
26+
using NUnit.Framework;
27+
28+
using ReqIFSharp;
29+
using ReqIFSharp.Extensions.ReqIFExtensions;
30+
using ReqIFSharp.Extensions.Tests.TestData;
3031

3132
/// <summary>
3233
/// Suite of tests for the <see cref="RelationGroupTypeExtensions"/> class.
@@ -45,20 +46,49 @@ public void SetUp()
4546
}
4647

4748
[Test]
48-
public void Verify_that_QueryReferencingRelationGroups_returns_expected_results()
49-
{
50-
var relationGroupType = (RelationGroupType)this.reqIf.CoreContent.SpecTypes.Single(x => x.Identifier == "relationgrouptype");
51-
52-
var specObjects = relationGroupType.QueryReferencingRelationGroups();
53-
54-
Assert.That(specObjects.Count(), Is.EqualTo(1));
55-
}
56-
57-
[Test]
58-
public void Verify_that_on_QueryReferencingRelationGroups_NullReferenceException_is_thrown_when_owning_ReqIFContent_is_not_set()
59-
{
60-
var relationGroupType = new RelationGroupType();
61-
49+
public void Verify_that_QueryReferencingRelationGroups_returns_expected_results()
50+
{
51+
var relationGroupType = (RelationGroupType)this.reqIf.CoreContent.SpecTypes.Single(x => x.Identifier == "relationgrouptype");
52+
53+
var specObjects = relationGroupType.QueryReferencingRelationGroups();
54+
55+
Assert.That(specObjects.Count(), Is.EqualTo(1));
56+
}
57+
58+
[Test]
59+
public void Verify_that_QueryReferencingRelationGroups_returns_empty_when_none_reference_type()
60+
{
61+
var reqIf = new ReqIF
62+
{
63+
CoreContent = new ReqIFContent()
64+
};
65+
66+
var relationGroupType = new RelationGroupType { ReqIFContent = reqIf.CoreContent };
67+
var otherRelationGroupType = new RelationGroupType { ReqIFContent = reqIf.CoreContent };
68+
69+
var relationGroup = new RelationGroup(reqIf.CoreContent, null)
70+
{
71+
Type = otherRelationGroupType
72+
};
73+
74+
reqIf.CoreContent.SpecRelationGroups.Add(relationGroup);
75+
76+
var result = relationGroupType.QueryReferencingRelationGroups();
77+
78+
Assert.That(result, Is.Empty);
79+
}
80+
81+
[Test]
82+
public void Verify_that_QueryReferencingRelationGroups_throws_when_relationGroupType_is_null()
83+
{
84+
Assert.That(() => RelationGroupTypeExtensions.QueryReferencingRelationGroups(null), Throws.ArgumentNullException);
85+
}
86+
87+
[Test]
88+
public void Verify_that_on_QueryReferencingRelationGroups_NullReferenceException_is_thrown_when_owning_ReqIFContent_is_not_set()
89+
{
90+
var relationGroupType = new RelationGroupType();
91+
6292
Assert.That(() => relationGroupType.QueryReferencingRelationGroups(),
6393
Throws.Exception.TypeOf<InvalidOperationException>()
6494
.With.Message.Contains("The owning ReqIFContent of the RelationGroupType is not set."));

ReqIFSharp.Extensions.Tests/ReqIFExtensions/SpecElementWithAttributesExtensionTestFixture.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace ReqIFSharp.Extensions.Tests.ReqIFExtensions
2424
using System.Linq;
2525
using System.Threading;
2626
using System.Threading.Tasks;
27-
27+
2828
using NUnit.Framework;
2929

3030
using ReqIFSharp;

0 commit comments

Comments
 (0)