public void Verify_That_A_ReqIF_Archive_Can_Be_DeserializedAsync_With_Validation() { var cancellationTokenSource = new CancellationTokenSource(); var reqifPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData", "test-multiple-reqif.reqifz"); var deserializer = new ReqIFDeserializer(); Assert.That(async() => await deserializer.DeserializeAsync(reqifPath, cancellationTokenSource.Token, true, this.ValidationEventHandler), Throws.Nothing); using (var sourceStream = new FileStream(reqifPath, FileMode.Open)) { Assert.That(async() => await deserializer.DeserializeAsync(sourceStream, cancellationTokenSource.Token), Throws.Nothing); } }
public async Task Verify_That_A_ReqIF_Archive_Can_Be_DeserializedAsync_Without_Validation() { var cancellationTokenSource = new CancellationTokenSource(); var deserializer = new ReqIFDeserializer(); var reqIf = (await deserializer.DeserializeAsync(Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData", "test-multiple-reqif.reqifz"), cancellationTokenSource.Token)).First(); Assert.AreEqual("en", reqIf.Lang); var firstobject = reqIf.CoreContent.SpecObjects.First(); var xhtmlAttribute = firstobject.Values.OfType <AttributeValueXHTML>().SingleOrDefault(); Assert.IsNotNull(xhtmlAttribute); Assert.IsNotEmpty(xhtmlAttribute.TheValue); Assert.IsNotNull(xhtmlAttribute.AttributeDefinition); Assert.AreEqual(7, reqIf.CoreContent.DataTypes.Count); Assert.AreEqual(4, reqIf.CoreContent.SpecTypes.Count); Assert.AreEqual(3, reqIf.CoreContent.SpecObjects.Count); Assert.AreEqual(1, reqIf.CoreContent.SpecRelations.Count); Assert.AreEqual(2, reqIf.CoreContent.Specifications.Count); Assert.AreEqual(1, reqIf.CoreContent.Specifications[0].Children.Count); Assert.AreEqual(2, reqIf.CoreContent.Specifications[0].Children[0].Children.Count); Assert.AreEqual(1, reqIf.CoreContent.SpecRelationGroups.Count); }
public async Task Verify_that_ExternalObjects_are_created_and_that_local_data_can_be_queried_async() { var sw = Stopwatch.StartNew(); var reqifPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData", "requirements-and-objects.reqifz"); var deserializer = new ReqIFDeserializer(); var cancellationTokenSource = new CancellationTokenSource(); var reqIf = (await deserializer.DeserializeAsync(reqifPath, cancellationTokenSource.Token)).First(); foreach (var specObject in reqIf.CoreContent.SpecObjects) { foreach (var attributeValueXhtml in specObject.Values.OfType <AttributeValueXHTML>()) { foreach (var externalObject in attributeValueXhtml.ExternalObjects) { var targetStream = new MemoryStream(); externalObject.QueryLocalData(reqifPath, targetStream); Assert.That(targetStream.Length, Is.GreaterThan(0)); await targetStream.DisposeAsync(); } } } Console.WriteLine(sw.ElapsedMilliseconds); }
public async Task Verify_That_A_ReqIF_XML_Document_Can_Be_DeserializedAsync_Without_Validation() { var cancellationTokenSource = new CancellationTokenSource(); var deserializer = new ReqIFDeserializer(); var reqIf = (await deserializer.DeserializeAsync(Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData", "output.reqif"), cancellationTokenSource.Token)).First(); Assert.AreEqual("en", reqIf.Lang); var firstobject = reqIf.CoreContent.SpecObjects.First(); var xhtmlAttribute = firstobject.Values.OfType <AttributeValueXHTML>().SingleOrDefault(); Assert.IsNotNull(xhtmlAttribute); Assert.IsNotEmpty(xhtmlAttribute.TheValue); Assert.IsNotNull(xhtmlAttribute.AttributeDefinition); Assert.AreEqual(7, reqIf.CoreContent.DataTypes.Count); Assert.AreEqual(4, reqIf.CoreContent.SpecTypes.Count); Assert.AreEqual(4, reqIf.CoreContent.SpecObjects.Count); Assert.AreEqual(2, reqIf.CoreContent.SpecRelations.Count); Assert.AreEqual(3, reqIf.CoreContent.Specifications.Count); Assert.AreEqual(1, reqIf.CoreContent.Specifications[0].Children.Count); Assert.AreEqual(2, reqIf.CoreContent.Specifications[0].Children[0].Children.Count); Assert.AreEqual(2, reqIf.CoreContent.SpecRelationGroups.Count); var unknownSpecRel = reqIf.CoreContent.SpecRelations.First(x => x.Identifier == "specobject_1-unknown"); Assert.IsNotNull(unknownSpecRel.Target); Assert.AreEqual("unknown-specobject", unknownSpecRel.Target.Identifier); var unknownrelGroup = reqIf.CoreContent.SpecRelationGroups.First(x => x.Identifier == "relationgroup-no-target"); Assert.AreEqual("unknown", unknownrelGroup.TargetSpecification.Identifier); }
public async Task Verify_that_DefaultValueDemo_file_is_deserialized_and_async_serialized_with_equivalent_output() { var cancellationTokenSource = new CancellationTokenSource(); var reqifPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData", "DefaultValueDemo.reqif"); var deserializer = new ReqIFDeserializer(); var reqIfs = await deserializer.DeserializeAsync(reqifPath, cancellationTokenSource.Token); var reqIf = reqIfs.First(); var resultFileUri = Path.Combine(TestContext.CurrentContext.TestDirectory, "DefaultValueDemo-async-reserialize.reqif"); var serializer = new ReqIFSerializer(); await serializer.SerializeAsync(reqIf, resultFileUri, cancellationTokenSource.Token); var reqIf2 = deserializer.Deserialize(resultFileUri).First(); var OBJECT_TYPE = reqIf2.CoreContent.SpecTypes.First(x => x.Identifier == "_94301492-ef46-443d-9778-596b14a0a20e"); var attributeDefinitionEnumeration = OBJECT_TYPE.SpecAttributes.OfType <AttributeDefinitionEnumeration>().First(x => x.Identifier == "_e5e971b3-62e3-4607-8696-f359c1ae85f3"); Assert.That(attributeDefinitionEnumeration.DefaultValue, Is.Not.Null); var defaultEnumerationValue = attributeDefinitionEnumeration.DefaultValue.Values.Single(); Assert.That(defaultEnumerationValue.Identifier, Is.EqualTo("_6feb570f-8ad8-40d9-9517-5abd6fe6f63a")); Assert.That(attributeDefinitionEnumeration.DefaultValue.Definition.Identifier, Is.EqualTo("_e5e971b3-62e3-4607-8696-f359c1ae85f3")); var DOCTYPE_GROUP_TYPE = reqIf2.CoreContent.SpecTypes.First(x => x.Identifier == "_80811ce1-0a28-4554-b49a-11bf2b7e9422"); var attributeDefinitionString = DOCTYPE_GROUP_TYPE.SpecAttributes.OfType <AttributeDefinitionString>().First(x => x.Identifier == "_d0368b53-d0c6-43a1-a746-45243624b027"); Assert.That(attributeDefinitionString.DefaultValue.TheValue, Is.EqualTo("LAH ---.---.---.-")); Assert.That(attributeDefinitionString.DefaultValue.Definition.Identifier, Is.EqualTo("_d0368b53-d0c6-43a1-a746-45243624b027")); }
public void Verify_that_ArgumentException_Are_thrown_on_read_from_file_async() { var cancellationTokenSource = new CancellationTokenSource(); var deserializer = new ReqIFDeserializer(); Assert.That(async() => await deserializer.DeserializeAsync("", cancellationTokenSource.Token), Throws.Exception.TypeOf <ArgumentException>() .With.Message.Contains("The xml file path may not be null or empty")); }
public void Verify_That_when_schema_is_not_available_A_ReqIF_file_Can_Be_DeserializedAsync_With_Validation_and_that_schemavalidationexception_is_thrown() { var cancellationTokenSource = new CancellationTokenSource(); var reqifPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData", "ProR_Traceability-Template-v1.0.reqif"); var deserializer = new ReqIFDeserializer(); Assert.That(async() => await deserializer.DeserializeAsync(reqifPath, cancellationTokenSource.Token, true, this.ValidationEventHandler), Throws.Exception.TypeOf <XmlSchemaValidationException>()); }
public void Verify_that_ArgumentException_Are_thrown_on_read_from_stream_async() { var cancellationTokenSource = new CancellationTokenSource(); var deserializer = new ReqIFDeserializer(); MemoryStream memoryStream = null; Assert.That(async() => await deserializer.DeserializeAsync(memoryStream, cancellationTokenSource.Token), Throws.Exception.TypeOf <ArgumentNullException>()); var validationEventHandler = new ValidationEventHandler(ValidationEventHandler); Assert.That(async() => await deserializer.DeserializeAsync(memoryStream, cancellationTokenSource.Token, false, validationEventHandler), Throws.Exception.TypeOf <ArgumentException>() .With.Message.Contains("validationEventHandler must be null when validate is false")); memoryStream = new MemoryStream(); Assert.That(async() => await deserializer.DeserializeAsync(memoryStream, cancellationTokenSource.Token), Throws.Exception.TypeOf <ArgumentException>()); }
public void Verify_that_when_ValidationEventHandler_is_not_null_exception_is_thrown_async() { var cancellationTokenSource = new CancellationTokenSource(); var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData", "test-multiple-reqif.reqifz"); var deserializer = new ReqIFDeserializer(); Assert.That( async() => await deserializer.DeserializeAsync(path, cancellationTokenSource.Token, false, this.ValidationEventHandler), Throws.Exception.TypeOf <ArgumentException>() .With.Message.Contains("validationEventHandler must be null when validate is false")); }
public async Task Verify_that_XHTML_attributes_can_de_DeserializedAsync() { var cancellationTokenSource = new CancellationTokenSource(); var deserializer = new ReqIFDeserializer(); var reqIf = (await deserializer.DeserializeAsync(Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData", "testreqif.reqif"), cancellationTokenSource.Token)).First(); Assert.AreEqual("en", reqIf.Lang); var specObject = reqIf.CoreContent.SpecObjects.Single(r => r.Identifier == "R001"); var xhtmlValue = specObject.Values.Single(x => x.AttributeDefinition.Identifier == "FUNC-REQ-NOTES") as AttributeValueXHTML; Assert.That(xhtmlValue.TheValue, Is.Not.Null.Or.Empty); }
public async Task Verify_That_A_ReqIF_XML_Document_Can_Be_DeserializedAsync_With_Validation() { var cancellationTokenSource = new CancellationTokenSource(); var deserializer = new ReqIFDeserializer(); var reqIf = (await deserializer.DeserializeAsync(Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData", "output.reqif"), cancellationTokenSource.Token, true, this.ValidationEventHandler)).First(); Assert.AreEqual("en", reqIf.Lang); Assert.AreEqual(7, reqIf.CoreContent.DataTypes.Count); Assert.AreEqual(4, reqIf.CoreContent.SpecTypes.Count); Assert.AreEqual(4, reqIf.CoreContent.SpecObjects.Count); Assert.AreEqual(2, reqIf.CoreContent.SpecRelations.Count); Assert.AreEqual(3, reqIf.CoreContent.Specifications.Count); Assert.AreEqual(2, reqIf.CoreContent.SpecRelationGroups.Count); }
public async Task Verify_That_Datatype_Demo_reqif_file_is_deserialized_and_async_serialized_with_equivalent_output() { var cancellationTokenSource = new CancellationTokenSource(); var reqifPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData", "Datatype-Demo.reqif"); var deserializer = new ReqIFDeserializer(); var reqIfs = await deserializer.DeserializeAsync(reqifPath, cancellationTokenSource.Token); var reqIf = reqIfs.First(); var resultFileUri = Path.Combine(TestContext.CurrentContext.TestDirectory, "Datatype-Demo-async-reserialize.reqif"); var serializer = new ReqIFSerializer(); Assert.DoesNotThrowAsync(async() => await serializer.SerializeAsync(reqIf, resultFileUri, cancellationTokenSource.Token)); }
public async Task Verify_that_External_objects_are_Deserialized_Async() { var deserializer = new ReqIFDeserializer(); var reqIf = await deserializer.DeserializeAsync(this.reqiffile, CancellationToken.None); var specObjects = reqIf.First().CoreContent.SpecObjects; Assert.That(specObjects.Count, Is.EqualTo(4)); var specObjectWithExternalObjects = specObjects.Single(x => x.Identifier == "_5_b23d3568-8478-401c-8ee3-3246da83641d"); var attributeValueXhtml = specObjectWithExternalObjects.Values.OfType <AttributeValueXHTML>().Single(x => x.Definition.Identifier == "_2792cc0c-3af9-4619-9968-c1d0f53d5bcb_OBJECTTEXT"); Assert.That(attributeValueXhtml.ExternalObjects.Count, Is.EqualTo(2)); }
public async Task Verify_that_ReqIF_can_be_DeserializedAsync_from_stream() { var cancellationTokenSource = new CancellationTokenSource(); var deserializer = new ReqIFDeserializer(); var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData", "test-multiple-reqif.reqifz"); using (var fileStream = new FileStream(path, FileMode.Open)) { var sw = Stopwatch.StartNew(); var reqif = (await deserializer.DeserializeAsync(fileStream, cancellationTokenSource.Token, false, null)).First(); Console.WriteLine($"async deserialization done in: {sw.ElapsedMilliseconds} [ms]"); Assert.That(reqif, Is.Not.Null); } }
public async Task Verify_that_the_Tool_Extensions_are_DeserializedAsync_from_ProR_Traceability_template() { var sw = Stopwatch.StartNew(); var cancellationTokenSource = new CancellationTokenSource(); var reqifPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "TestData", "ProR_Traceability-Template-v1.0.reqif"); var deserializer = new ReqIFDeserializer(); var reqIf = (await deserializer.DeserializeAsync(reqifPath, cancellationTokenSource.Token)).First(); Console.WriteLine(sw.ElapsedMilliseconds); Assert.That(reqIf.TheHeader.Identifier, Is.EqualTo("_o7scMadbEeafNduaIhMwQg")); Assert.That(reqIf.TheHeader.Comment, Is.EqualTo("Download this template and others at https://reqif.academy")); Assert.That(reqIf.TheHeader.ReqIFToolId, Is.EqualTo("fmStudio (http://formalmind.com/studio)")); Assert.That(reqIf.TheHeader.ReqIFVersion, Is.EqualTo("1.0")); Assert.That(reqIf.TheHeader.SourceToolId, Is.EqualTo("fmStudio (http://formalmind.com/studio)")); Assert.That(reqIf.TheHeader.Title, Is.EqualTo("Traceability Template")); Assert.That(reqIf.CoreContent.DocumentRoot, Is.EqualTo(reqIf)); Assert.That(reqIf.CoreContent.DataTypes.Count, Is.EqualTo(8)); Assert.That(reqIf.CoreContent.DataTypes.First().ReqIFContent, Is.EqualTo(reqIf.CoreContent)); Assert.That(reqIf.CoreContent.SpecTypes.Count, Is.EqualTo(3)); Assert.That(reqIf.CoreContent.SpecTypes.First().ReqIFContent, Is.EqualTo(reqIf.CoreContent)); Assert.That(reqIf.CoreContent.SpecObjects.Count, Is.EqualTo(21)); Assert.That(reqIf.CoreContent.SpecObjects.First().ReqIFContent, Is.EqualTo(reqIf.CoreContent)); Assert.That(reqIf.CoreContent.SpecRelations.Count, Is.EqualTo(9)); Assert.That(reqIf.CoreContent.SpecRelations.First().ReqIFContent, Is.EqualTo(reqIf.CoreContent)); Assert.That(reqIf.CoreContent.Specifications.Count, Is.EqualTo(2)); Assert.That(reqIf.CoreContent.Specifications.First().ReqIFContent, Is.EqualTo(reqIf.CoreContent)); Assert.That(reqIf.ToolExtension.Count, Is.EqualTo(1)); var toolExtension = reqIf.ToolExtension.First(); Assert.That(toolExtension.InnerXml, Is.Not.Empty); }