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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 12
0
        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);
        }