diff --git a/strictdoc/backend/reqif/p01_sdoc/reqif_to_sdoc_converter.py b/strictdoc/backend/reqif/p01_sdoc/reqif_to_sdoc_converter.py index 45b002d3e..7bab74534 100644 --- a/strictdoc/backend/reqif/p01_sdoc/reqif_to_sdoc_converter.py +++ b/strictdoc/backend/reqif/p01_sdoc/reqif_to_sdoc_converter.py @@ -22,6 +22,11 @@ DocumentGrammar, GrammarElement, ) +from strictdoc.backend.sdoc.models.model import ( + SDocDocumentIF, + SDocNodeIF, + SDocSectionIF, +) from strictdoc.backend.sdoc.models.node import SDocNode, SDocNodeField from strictdoc.backend.sdoc.models.reference import ( ParentReqReference, @@ -97,19 +102,6 @@ def convert_reqif_bundle( documents.append(document) return documents - @staticmethod - def is_spec_object_requirement(_): - return True - - @staticmethod - def is_spec_object_section( - spec_object: ReqIFSpecObject, reqif_bundle: ReqIFBundle - ): - spec_object_type = reqif_bundle.lookup.get_spec_type_by_ref( - spec_object.spec_object_type - ) - return spec_object_type.long_name == "SECTION" - @staticmethod def convert_requirement_field_from_reqif(field_name: str) -> str: if field_name in ReqIFRequirementReservedField.SET: @@ -123,10 +115,26 @@ def _create_document_from_reqif_specification( reqif_bundle: ReqIFBundle, context: P01_ReqIFToSDocBuildContext, ): - document = P01_ReqIFToSDocConverter.create_document( - specification=specification, context=context + # This lookup object is used to first collect the spec object type identifiers + # that are actually used by this document. This is needed to ensure that a + # StrictDoc document is not created with irrelevant grammar elements that + # actually belong to other Specifications in this ReqIF bundle. + # Using Dict as an ordered set. + spec_object_type_identifiers_used_by_this_document: OrderedSet[str] = ( + OrderedSet() ) - document.section_contents = [] + section_spec_types = set() + for hierarchy_ in reqif_bundle.iterate_specification_hierarchy( + specification, + ): + spec_object = reqif_bundle.get_spec_object_by_ref( + hierarchy_.spec_object + ) + spec_object_type_identifiers_used_by_this_document.add( + spec_object.spec_object_type + ) + if hierarchy_.children is not None: + section_spec_types.add(spec_object.spec_object_type) for ( spec_object_type_ @@ -134,84 +142,61 @@ def _create_document_from_reqif_specification( if not isinstance(spec_object_type_, ReqIFSpecObjectType): continue - # FIXME: [[NODE]] - if spec_object_type_.long_name == "SECTION": - continue - grammar_element: GrammarElement = P01_ReqIFToSDocConverter.create_grammar_element_from_spec_object_type( spec_object_type=spec_object_type_, reqif_bundle=reqif_bundle, + is_composite=spec_object_type_.identifier in section_spec_types, ) context.map_spec_object_type_identifier_to_grammar_node_tags[ spec_object_type_.identifier ] = grammar_element - # This lookup object is used to first collect the spec object type identifiers - # that are actually used by this document. This is needed to ensure that a - # StrictDoc document is not created with irrelevant grammar elements that - # actually belong to other Specifications in this ReqIF bundle. - # Using Dict as an ordered set. - spec_object_type_identifiers_used_by_this_document: OrderedSet[str] = ( - OrderedSet() + document = P01_ReqIFToSDocConverter.create_document( + specification=specification, context=context ) + document.section_contents = [] + + node_stack: List[Union[SDocDocumentIF, SDocNodeIF]] = [document] - def node_converter_lambda( - current_hierarchy_, - current_section_, + for hierarchy_ in reqif_bundle.iterate_specification_hierarchy( + specification, ): - spec_object = reqif_bundle.get_spec_object_by_ref( - current_hierarchy_.spec_object - ) - spec_object_type_identifiers_used_by_this_document.add( - spec_object.spec_object_type - ) + while len(node_stack) > hierarchy_.level: + node_stack.pop() - is_section = P01_ReqIFToSDocConverter.is_spec_object_section( - spec_object, - reqif_bundle=reqif_bundle, - ) + parent_node = node_stack[-1] - converted_node: Union[SDocSection, SDocNode] - if is_section: - converted_node = ( - P01_ReqIFToSDocConverter.create_section_from_spec_object( - spec_object=spec_object, - context=context, - parent_section=current_section_, - level=current_hierarchy_.level, - reqif_bundle=reqif_bundle, - ) - ) - else: - converted_node = P01_ReqIFToSDocConverter.create_requirement_from_spec_object( + spec_object = reqif_bundle.get_spec_object_by_ref( + hierarchy_.spec_object + ) + converted_node: SDocNode = ( + P01_ReqIFToSDocConverter.create_requirement_from_spec_object( spec_object=spec_object, context=context, - parent_section=current_section_, + parent_section=parent_node, reqif_bundle=reqif_bundle, - level=current_hierarchy_.level, + level=hierarchy_.level, ) - current_section_.section_contents.append(converted_node) + ) + parent_node.section_contents.append(converted_node) - return converted_node, is_section - - reqif_bundle.iterate_specification_hierarchy_for_conversion( - specification, - document, - lambda s: s.ng_level, - node_converter_lambda, - ) + if spec_object.spec_object_type in section_spec_types: + node_stack.append(converted_node) elements: List[GrammarElement] = [] for ( - spec_object_type_identifier_ - ) in spec_object_type_identifiers_used_by_this_document: - spec_object_type: ReqIFSpecObjectType = ( - reqif_bundle.lookup.get_spec_type_by_ref( - spec_object_type_identifier_ - ) - ) - if spec_object_type.long_name == "SECTION": + spec_object_type_ + ) in reqif_bundle.core_content.req_if_content.spec_types: + if not isinstance(spec_object_type_, ReqIFSpecObjectType): continue + + spec_object_type_identifier_ = spec_object_type_.identifier + if ( + spec_object_type_identifier_ + not in spec_object_type_identifiers_used_by_this_document + ): + continue + grammar_element = ( context.map_spec_object_type_identifier_to_grammar_node_tags[ spec_object_type_identifier_ @@ -229,7 +214,10 @@ def node_converter_lambda( grammar = DocumentGrammar(parent=document, elements=elements) grammar.is_default = False else: + # This case is mainly a placeholder for simple edge cases such as + # an empty [DOCUMENT] where there are no grammar or nodes declared. grammar = DocumentGrammar.create_default(parent=document) + document.grammar = grammar return document @@ -239,6 +227,7 @@ def create_grammar_element_from_spec_object_type( *, spec_object_type: ReqIFSpecObjectType, reqif_bundle: ReqIFBundle, + is_composite: bool, ): fields: List[ Union[ @@ -247,6 +236,7 @@ def create_grammar_element_from_spec_object_type( GrammarElementFieldSingleChoice, ] ] = [] + for attribute in spec_object_type.attribute_definitions: field_name = ( P01_ReqIFToSDocConverter.convert_requirement_field_from_reqif( @@ -316,9 +306,7 @@ def create_grammar_element_from_spec_object_type( requirement_element = GrammarElement( parent=None, tag=create_safe_requirement_tag_string(spec_object_type.long_name), - # FIXME: MERGE NODES - # When the migration is done, make the nodes to be always recursive. - property_is_composite="", + property_is_composite="True" if is_composite else "", property_prefix="", property_view_style="", fields=fields, @@ -429,9 +417,9 @@ def create_section_from_spec_object( def create_requirement_from_spec_object( spec_object: ReqIFSpecObject, context: P01_ReqIFToSDocBuildContext, - parent_section: Union[SDocSection, SDocDocument], + parent_section: Union[SDocSectionIF, SDocDocumentIF, SDocNodeIF], reqif_bundle: ReqIFBundle, - level, + level: int, ) -> SDocNode: fields = [] spec_object_type = reqif_bundle.lookup.get_spec_type_by_ref( @@ -548,6 +536,10 @@ def create_requirement_from_spec_object( node_type=grammar_element.tag, fields=fields, relations=[], + is_composite=grammar_element.property_is_composite is True, + node_type_close=grammar_element.tag + if grammar_element.property_is_composite + else None, ) requirement.ng_level = level for field_ in fields: diff --git a/strictdoc/backend/reqif/p01_sdoc/sdoc_to_reqif_converter.py b/strictdoc/backend/reqif/p01_sdoc/sdoc_to_reqif_converter.py index 26f04190d..662415351 100644 --- a/strictdoc/backend/reqif/p01_sdoc/sdoc_to_reqif_converter.py +++ b/strictdoc/backend/reqif/p01_sdoc/sdoc_to_reqif_converter.py @@ -3,7 +3,7 @@ import uuid from collections import defaultdict from enum import Enum -from typing import Dict, List, Optional, Tuple +from typing import Dict, List, Optional, Tuple, Union from reqif.models.reqif_core_content import ReqIFCoreContent from reqif.models.reqif_data_type import ( @@ -123,13 +123,14 @@ def convert_document_tree( document: SDocDocument for document in document_tree.document_list: for element in document.grammar.elements: - fields_names = element.get_field_titles() - statement_field_idx = fields_names.index("STATEMENT") - for field_idx_, field in enumerate(element.fields): - multiline = field_idx_ >= statement_field_idx + for field in element.fields: + multiline = element.is_field_multiline(field.title) if isinstance(field, GrammarElementFieldString): - data_type: ReqIFDataTypeDefinitionString + data_type: Union[ + ReqIFDataTypeDefinitionString, + ReqIFDataTypeDefinitionXHTML, + ] if multiline: if ( StrictDocReqIFTypes.MULTI_LINE_STRING.value @@ -227,8 +228,6 @@ def convert_document_tree( document_iterator = DocumentCachingIterator(document) - parents: Dict[ReqIFSpecHierarchy, ReqIFSpecHierarchy] = {} - # TODO: This is a throw-away object. It gets discarded when the # iteration is over. Find a way to do without it. root_hierarchy = ReqIFSpecHierarchy( @@ -243,80 +242,48 @@ def convert_document_tree( level=0, ) - current_hierarchy = root_hierarchy + node_stack: List[ReqIFSpecHierarchy] = [root_hierarchy] # FIXME: ReqIF must export complete documents including fragments. for node_, _ in document_iterator.all_content( print_fragments=False, print_fragments_from_files=False ): - if node_.is_section(): - section: SDocSection = assert_cast(node_, SDocSection) - # fmt: off - spec_object = ( - P01_SDocToReqIFObjectConverter - ._convert_section_to_spec_object( - section=section, - context=context, - ) - ) - # fmt: on - spec_objects.append(spec_object) - hierarchy = ReqIFSpecHierarchy( - xml_node=None, - is_self_closed=False, - identifier=generate_unique_identifier("SPEC-HIERARCHY"), - last_change=None, - long_name=None, - spec_object=spec_object.identifier, - children=[], - ref_then_children_order=True, - level=section.ng_level, - ) - if section.ng_level > current_hierarchy.level: - parents[hierarchy] = current_hierarchy - current_hierarchy.add_child(hierarchy) - elif section.ng_level < current_hierarchy.level: - for _ in range( - 0, (current_hierarchy.level - section.ng_level + 1) - ): - current_hierarchy = parents[current_hierarchy] - current_hierarchy.add_child(hierarchy) - parents[hierarchy] = current_hierarchy - else: - current_hierarchy_parent = parents[current_hierarchy] - current_hierarchy_parent.add_child(hierarchy) - parents[hierarchy] = current_hierarchy_parent - current_hierarchy = hierarchy - - elif node_.is_requirement(): - requirement = assert_cast(node_, SDocNode) - spec_object = cls._convert_requirement_to_spec_object( - requirement=requirement, - grammar=assert_cast(document.grammar, DocumentGrammar), - context=context, - data_types=data_types, - data_types_lookup=data_types_lookup, + if isinstance(node_, SDocSection): + raise AssertionError( + "[SECTION] tags are deprecated when using ReqIF export/import. " + "Use [[SECTION]] tags instead." ) - spec_objects.append(spec_object) - hierarchy = ReqIFSpecHierarchy( - xml_node=None, - is_self_closed=False, - identifier=generate_unique_identifier( - "SPEC-IDENTIFIER" - ), - last_change=None, - long_name=None, - spec_object=spec_object.identifier, - children=None, - ref_then_children_order=True, - level=requirement.ng_level, - ) - for _ in range( - 0, (current_hierarchy.level - requirement.ng_level + 1) - ): - current_hierarchy = parents[current_hierarchy] - parents[hierarchy] = current_hierarchy - current_hierarchy.add_child(hierarchy) + + if not isinstance(node_, SDocNode): + continue + leaf_or_composite_node = assert_cast(node_, SDocNode) + while len(node_stack) > assert_cast(node_.ng_level, int): + node_stack.pop() + + current_hierarchy = node_stack[-1] + + spec_object = cls._convert_requirement_to_spec_object( + requirement=leaf_or_composite_node, + grammar=assert_cast(document.grammar, DocumentGrammar), + context=context, + data_types=data_types, + data_types_lookup=data_types_lookup, + ) + spec_objects.append(spec_object) + hierarchy = ReqIFSpecHierarchy( + xml_node=None, + is_self_closed=False, + identifier=generate_unique_identifier("SPEC-IDENTIFIER"), + last_change=None, + long_name=None, + spec_object=spec_object.identifier, + children=None, + ref_then_children_order=True, + level=leaf_or_composite_node.ng_level, + ) + current_hierarchy.add_child(hierarchy) + if leaf_or_composite_node.is_composite: + node_stack.append(hierarchy) specification_identifier: str if context.enable_mid and document.reserved_mid is not None: @@ -483,7 +450,9 @@ def _convert_requirement_to_spec_object( if enable_mid and requirement.reserved_mid is not None: requirement_identifier = requirement.reserved_mid else: - requirement_identifier = generate_unique_identifier("REQUIREMENT") + requirement_identifier = generate_unique_identifier( + requirement.node_type + ) grammar_element = grammar.elements_by_type[requirement.node_type] @@ -603,14 +572,11 @@ def _convert_document_grammar_to_spec_types( ) for element in grammar.elements: - fields_names = element.get_field_titles() - statement_field_idx = fields_names.index("STATEMENT") - attribute_definitions = [] field: GrammarElementField - for field_idx_, field in enumerate(element.fields): - multiline = field_idx_ >= statement_field_idx + for field in element.fields: + multiline = element.is_field_multiline(field.title) if isinstance(field, GrammarElementFieldString): field_title = field.title @@ -684,13 +650,6 @@ def _convert_document_grammar_to_spec_types( ] = spec_object_type assert grammar.parent is not None - section_spec_type = ( - P01_SDocToReqIFObjectConverter._create_section_spec_object_type() - ) - context.map_grammar_node_tags_to_spec_object_type[grammar_document][ - "SECTION" - ] = section_spec_type - spec_object_types.append(section_spec_type) # Using dict as an ordered set. spec_relation_tuples: OrderedSet[Tuple[str, Optional[str]]] = ( @@ -719,24 +678,3 @@ def _convert_document_grammar_to_spec_types( ] = spec_relation_type return spec_object_types + spec_relation_types - - @classmethod - def _create_section_spec_object_type( - cls, - ): - attribute_definitions = [] - chapter_name_attribute = SpecAttributeDefinition.create( - attribute_type=SpecObjectAttributeType.STRING, - identifier="ReqIF.ChapterName", - datatype_definition=StrictDocReqIFTypes.SINGLE_LINE_STRING.value, - long_name="ReqIF.ChapterName", - ) - attribute_definitions.append(chapter_name_attribute) - - spec_object_type_identifier = "SECTION_" + uuid.uuid4().hex - spec_object_type = ReqIFSpecObjectType.create( - identifier=spec_object_type_identifier, - long_name="SECTION", - attribute_definitions=attribute_definitions, - ) - return spec_object_type diff --git a/strictdoc/backend/sdoc/models/model.py b/strictdoc/backend/sdoc/models/model.py index 4c6ac924e..24c479494 100644 --- a/strictdoc/backend/sdoc/models/model.py +++ b/strictdoc/backend/sdoc/models/model.py @@ -11,6 +11,7 @@ class SDocNodeFieldIF(ABC): class SDocNodeIF(ABC): node_type: str + ng_level: Optional[int] ng_resolved_custom_level: Optional[str] section_contents: List["SDocSectionContentIF"] @@ -45,6 +46,7 @@ def get_prefix(self) -> Optional[str]: class SDocSectionIF(ABC): parent: Union["SDocDocumentIF", "SDocSectionIF"] + ng_level: Optional[int] ng_resolved_custom_level: Optional[str] section_contents: List["SDocSectionContentIF"] @@ -76,6 +78,7 @@ class SDocDocumentIF(ABC): section_contents: List["SDocSectionContentIF"] included_documents: List["SDocDocumentIF"] is_bundle_document: bool + ng_level: Optional[int] @abstractmethod def get_prefix(self) -> str: diff --git a/tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/expected_output/Document_1.sdoc b/tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/expected_output/Document_1.sdoc similarity index 86% rename from tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/expected_output/Document_1.sdoc rename to tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/expected_output/Document_1.sdoc index 890669baf..1a44cc43c 100644 --- a/tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/expected_output/Document_1.sdoc +++ b/tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/expected_output/Document_1.sdoc @@ -6,7 +6,7 @@ STATEMENT: >>> Document 1 free text. <<< -[SECTION] +[[SECTION]] TITLE: Document 1 section [TEXT] @@ -14,4 +14,4 @@ STATEMENT: >>> Document 1 statement. <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/expected_output/Document_2.sdoc b/tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/expected_output/Document_2.sdoc similarity index 86% rename from tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/expected_output/Document_2.sdoc rename to tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/expected_output/Document_2.sdoc index 3cf08ce1e..873025d37 100644 --- a/tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/expected_output/Document_2.sdoc +++ b/tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/expected_output/Document_2.sdoc @@ -6,7 +6,7 @@ STATEMENT: >>> Document 2 free text. <<< -[SECTION] +[[SECTION]] TITLE: Document 2 section [TEXT] @@ -14,4 +14,4 @@ STATEMENT: >>> Document 2 statement. <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/expected_output/strictdoc.toml b/tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/expected_output/strictdoc.toml similarity index 100% rename from tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/expected_output/strictdoc.toml rename to tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/expected_output/strictdoc.toml diff --git a/tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/input/Document_1.sdoc b/tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/input/Document_1.sdoc similarity index 86% rename from tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/input/Document_1.sdoc rename to tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/input/Document_1.sdoc index 890669baf..1a44cc43c 100644 --- a/tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/input/Document_1.sdoc +++ b/tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/input/Document_1.sdoc @@ -6,7 +6,7 @@ STATEMENT: >>> Document 1 free text. <<< -[SECTION] +[[SECTION]] TITLE: Document 1 section [TEXT] @@ -14,4 +14,4 @@ STATEMENT: >>> Document 1 statement. <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/input/Document_2.sdoc b/tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/input/Document_2.sdoc similarity index 86% rename from tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/input/Document_2.sdoc rename to tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/input/Document_2.sdoc index 3cf08ce1e..873025d37 100644 --- a/tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/input/Document_2.sdoc +++ b/tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/input/Document_2.sdoc @@ -6,7 +6,7 @@ STATEMENT: >>> Document 2 free text. <<< -[SECTION] +[[SECTION]] TITLE: Document 2 section [TEXT] @@ -14,4 +14,4 @@ STATEMENT: >>> Document 2 statement. <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/input/strictdoc.toml b/tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/input/strictdoc.toml similarity index 100% rename from tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/input/strictdoc.toml rename to tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/input/strictdoc.toml diff --git a/tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/test_UC56_T01_export_tree_to_reqif.py b/tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/test_case.py similarity index 96% rename from tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/test_UC56_T01_export_tree_to_reqif.py rename to tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/test_case.py index cb34e3eb8..4c727db59 100644 --- a/tests/end2end/project_index/export_tree_to_reqif/UC56_T01_export_tree_to_reqif/test_UC56_T01_export_tree_to_reqif.py +++ b/tests/end2end/project_index/export_tree_to_reqif/basic_reqif_export/test_case.py @@ -15,7 +15,7 @@ ) -class Test_UC56_T01_ExportTreeToReqIF(E2ECase): +class Test(E2ECase): def test(self): shutil.rmtree(DOWNLOADED_FILES_PATH, ignore_errors=True) diff --git a/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/expected_output/Document_1.sdoc b/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/expected_output/Document_1.sdoc index 6b22fdcba..5fdde25de 100644 --- a/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/expected_output/Document_1.sdoc +++ b/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/expected_output/Document_1.sdoc @@ -3,6 +3,25 @@ TITLE: Document 1 [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: TEXT FIELDS: - TITLE: STATEMENT @@ -17,7 +36,7 @@ STATEMENT: >>> Document 1 free text. <<< -[SECTION] +[[SECTION]] TITLE: Document 1 section [TEXT] @@ -25,4 +44,4 @@ STATEMENT: >>> Document 1 statement. <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/expected_output/Document_2.sdoc b/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/expected_output/Document_2.sdoc index 21b1deaba..ca036c033 100644 --- a/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/expected_output/Document_2.sdoc +++ b/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/expected_output/Document_2.sdoc @@ -3,6 +3,25 @@ TITLE: Document 2 [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: TEXT FIELDS: - TITLE: STATEMENT @@ -17,7 +36,7 @@ STATEMENT: >>> Document 2 free text. <<< -[SECTION] +[[SECTION]] TITLE: Document 2 section [TEXT] @@ -25,4 +44,4 @@ STATEMENT: >>> Document 2 statement. <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/sample.reqif b/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/sample.reqif index 3e930966d..85714de77 100644 --- a/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/sample.reqif +++ b/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/sample.reqif @@ -1,8 +1,8 @@ - - 2024-05-04T22:03:10.520056+02:00 + + 2025-06-09T01:31:56.369818+02:00 strictdoc 1.0 strictdoc @@ -16,8 +16,8 @@ - - + + @@ -29,12 +29,7 @@ SDOC_DATATYPE_SINGLE_LINE_STRING - - - SDOC_DATATYPE_SINGLE_LINE_STRING - - - + SDOC_DATATYPE_SINGLE_LINE_STRING @@ -44,21 +39,6 @@ SDOC_DATATYPE_SINGLE_LINE_STRING - - - SDOC_DATATYPE_MULTI_LINE_STRING - - - - - SDOC_DATATYPE_MULTI_LINE_STRING - - - - - SDOC_DATATYPE_MULTI_LINE_STRING - - SDOC_DATATYPE_SINGLE_LINE_STRING @@ -66,25 +46,23 @@ - + - + - SDOC_DATATYPE_SINGLE_LINE_STRING + SDOC_DATATYPE_MULTI_LINE_STRING - - - - - + - SDOC_DATATYPE_MULTI_LINE_STRING + SDOC_DATATYPE_SINGLE_LINE_STRING - + + + @@ -96,12 +74,7 @@ SDOC_DATATYPE_SINGLE_LINE_STRING - - - SDOC_DATATYPE_SINGLE_LINE_STRING - - - + SDOC_DATATYPE_SINGLE_LINE_STRING @@ -111,21 +84,6 @@ SDOC_DATATYPE_SINGLE_LINE_STRING - - - SDOC_DATATYPE_MULTI_LINE_STRING - - - - - SDOC_DATATYPE_MULTI_LINE_STRING - - - - - SDOC_DATATYPE_MULTI_LINE_STRING - - SDOC_DATATYPE_SINGLE_LINE_STRING @@ -133,27 +91,25 @@ - + - + - SDOC_DATATYPE_SINGLE_LINE_STRING + SDOC_DATATYPE_MULTI_LINE_STRING - - - - - + - SDOC_DATATYPE_MULTI_LINE_STRING + SDOC_DATATYPE_SINGLE_LINE_STRING + + - + @@ -162,16 +118,23 @@ - TEXT_f9e9fa8f512c4b849565ff3cdf78580f + TEXT_7be03c2c0eb8482096dd1c16be346fa5 - + - ReqIF.ChapterName + ReqIF.Name + + + SECTION_c64fc52d54934de5bb885d4b103f3d5e + + + + ReqIF.Text @@ -179,10 +142,10 @@ - SECTION_335405e45c37495497612628b8721bb2 + TEXT_7be03c2c0eb8482096dd1c16be346fa5 - + @@ -191,16 +154,23 @@ - TEXT_e15ea4392dd544149fc22396337cfd6c + TEXT_4d64637759bd466e934596cfc562733c - + - ReqIF.ChapterName + ReqIF.Name + + + SECTION_23e5c615d01f481c9158f14273b0e413 + + + + ReqIF.Text @@ -208,51 +178,57 @@ - SECTION_e7ebaf8ba5924eb8a328ddb746dd2d9c + TEXT_4d64637759bd466e934596cfc562733c - + SDOC_SPECIFICATION_TYPE_SINGLETON - + - DOCUMENT_TEXT-a7f10fba-8b78-4ec2-b3e8-788d63c9d1f4 + TEXT-1c8b1683-349d-48f5-bf38-046cc7a6900e - - - + - SECTION-c24ef667-abdd-4dd4-9e4e-72fb523b3f17 + SECTION-31219e62-b2c9-4557-ac49-fae2ad7b856e + + + TEXT-f7e0f759-42a6-4015-ac85-111fafe7df14 + + - + SDOC_SPECIFICATION_TYPE_SINGLETON - + - DOCUMENT_TEXT-8dd10304-7574-4cb0-bb77-d80683b4dd32 + TEXT-83ff58b0-f1c8-4b88-b91c-3b1e63f690f8 - - - + - SECTION-e61a381a-c24c-4fcb-9c41-c20c3ae0719c + SECTION-94850266-89dd-4831-832d-991ac00147fe + + + TEXT-809c12d7-5022-4886-8171-2d98448ca982 + + diff --git a/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/test_case.py b/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/test_case.py index 53845ef13..ba1e6707b 100644 --- a/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/test_case.py +++ b/tests/end2end/project_index/import_document_from_reqif/import_document_from_reqif_tree_of_two_documents/test_case.py @@ -16,7 +16,6 @@ ) -# FIXME class Test(E2ECase): def test(self): test_setup = End2EndTestSetup(path_to_test_file=__file__) diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-enable-mid/01_cli_option/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-enable-mid/01_cli_option/sample.sdoc index a35afd3bd..bb4fe01fb 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-enable-mid/01_cli_option/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-enable-mid/01_cli_option/sample.sdoc @@ -6,6 +6,28 @@ OPTIONS: [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: MID + TYPE: String + REQUIRED: False + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: MID @@ -38,7 +60,7 @@ ELEMENTS: RELATIONS: - TYPE: Parent -[SECTION] +[[SECTION]] MID: eece0e6eeb9f4dacbe1026a0ec818b4b TITLE: Section #1 @@ -55,4 +77,4 @@ RELATIONS: - TYPE: Parent VALUE: REQ-001 -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-enable-mid/02_toml_option/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-enable-mid/02_toml_option/sample.sdoc index a35afd3bd..bb4fe01fb 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-enable-mid/02_toml_option/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-enable-mid/02_toml_option/sample.sdoc @@ -6,6 +6,28 @@ OPTIONS: [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: MID + TYPE: String + REQUIRED: False + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: MID @@ -38,7 +60,7 @@ ELEMENTS: RELATIONS: - TYPE: Parent -[SECTION] +[[SECTION]] MID: eece0e6eeb9f4dacbe1026a0ec818b4b TITLE: Section #1 @@ -55,4 +77,4 @@ RELATIONS: - TYPE: Parent VALUE: REQ-001 -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-import-markup/01_cli_option/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-import-markup/01_cli_option/sample.sdoc index 34625faa2..5872f2edd 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-import-markup/01_cli_option/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-import-markup/01_cli_option/sample.sdoc @@ -5,6 +5,28 @@ OPTIONS: [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: MID + TYPE: String + REQUIRED: False + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: UID @@ -34,7 +56,7 @@ ELEMENTS: RELATIONS: - TYPE: Parent -[SECTION] +[[SECTION]] TITLE: Section #1 [REQUIREMENT] @@ -48,4 +70,4 @@ RELATIONS: - TYPE: Parent VALUE: REQ-001 -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-import-markup/02_toml_option/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-import-markup/02_toml_option/sample.sdoc index 34625faa2..5872f2edd 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-import-markup/02_toml_option/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-import-markup/02_toml_option/sample.sdoc @@ -5,6 +5,28 @@ OPTIONS: [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: MID + TYPE: String + REQUIRED: False + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: UID @@ -34,7 +56,7 @@ ELEMENTS: RELATIONS: - TYPE: Parent -[SECTION] +[[SECTION]] TITLE: Section #1 [REQUIREMENT] @@ -48,4 +70,4 @@ RELATIONS: - TYPE: Parent VALUE: REQ-001 -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-multiline-is-xhtml/01_cli_option/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-multiline-is-xhtml/01_cli_option/sample.sdoc index 2515ad854..6c1be6d70 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-multiline-is-xhtml/01_cli_option/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-multiline-is-xhtml/01_cli_option/sample.sdoc @@ -3,6 +3,28 @@ TITLE: sample [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: MID + TYPE: String + REQUIRED: False + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: TEXT FIELDS: - TITLE: UID @@ -49,7 +71,7 @@ STATEMENT: >>> Document free text. <<< -[SECTION] +[[SECTION]] TITLE: Section [TEXT] @@ -66,4 +88,4 @@ Statement line #2 Statement line #3 <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-multiline-is-xhtml/02_toml_option/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-multiline-is-xhtml/02_toml_option/sample.sdoc index 2515ad854..6c1be6d70 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-multiline-is-xhtml/02_toml_option/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/--reqif-multiline-is-xhtml/02_toml_option/sample.sdoc @@ -3,6 +3,28 @@ TITLE: sample [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: MID + TYPE: String + REQUIRED: False + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: TEXT FIELDS: - TITLE: UID @@ -49,7 +71,7 @@ STATEMENT: >>> Document free text. <<< -[SECTION] +[[SECTION]] TITLE: Section [TEXT] @@ -66,4 +88,4 @@ Statement line #2 Statement line #3 <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/03_one_section_one_requirement/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/03_one_section_one_requirement/sample.sdoc index b0d48f57e..d004be729 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/03_one_section_one_requirement/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/03_one_section_one_requirement/sample.sdoc @@ -3,6 +3,25 @@ TITLE: sample [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: UID @@ -33,7 +52,7 @@ ELEMENTS: - TYPE: Parent - TYPE: File -[SECTION] +[[SECTION]] TITLE: Section #1 [REQUIREMENT] @@ -42,4 +61,4 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/04_one_section_one_subsection_one_requirement/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/04_one_section_one_subsection_one_requirement/sample.sdoc index 9c17b85d8..039878d16 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/04_one_section_one_subsection_one_requirement/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/04_one_section_one_subsection_one_requirement/sample.sdoc @@ -3,6 +3,25 @@ TITLE: sample [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: UID @@ -33,10 +52,10 @@ ELEMENTS: - TYPE: Parent - TYPE: File -[SECTION] +[[SECTION]] TITLE: Section #1 -[SECTION] +[[SECTION]] TITLE: Section #1.1 [REQUIREMENT] @@ -45,6 +64,6 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/05_two_sections/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/05_two_sections/sample.sdoc index 1fc272df2..faba4dd27 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/05_two_sections/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/05_two_sections/sample.sdoc @@ -3,6 +3,25 @@ TITLE: sample [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: UID @@ -33,7 +52,7 @@ ELEMENTS: - TYPE: Parent - TYPE: File -[SECTION] +[[SECTION]] TITLE: Section #1 [REQUIREMENT] @@ -42,9 +61,9 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] -[SECTION] +[[SECTION]] TITLE: Section #2 [REQUIREMENT] @@ -53,4 +72,4 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/06_three_sections/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/06_three_sections/sample.sdoc index 584820ffb..d9c02be8a 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/06_three_sections/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/06_three_sections/sample.sdoc @@ -3,6 +3,25 @@ TITLE: sample [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: UID @@ -33,7 +52,7 @@ ELEMENTS: - TYPE: Parent - TYPE: File -[SECTION] +[[SECTION]] TITLE: Section #1 [REQUIREMENT] @@ -42,9 +61,9 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] -[SECTION] +[[SECTION]] TITLE: Section #2 [REQUIREMENT] @@ -53,9 +72,9 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] -[SECTION] +[[SECTION]] TITLE: Section #3 [REQUIREMENT] @@ -64,4 +83,4 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/07_one_nested_section/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/07_one_nested_section/sample.sdoc index 72a2c459b..59a6aa399 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/07_one_nested_section/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/07_one_nested_section/sample.sdoc @@ -3,6 +3,25 @@ TITLE: sample [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: UID @@ -33,10 +52,10 @@ ELEMENTS: - TYPE: Parent - TYPE: File -[SECTION] +[[SECTION]] TITLE: Section #1 -[SECTION] +[[SECTION]] TITLE: Section #1.1 [REQUIREMENT] @@ -51,9 +70,9 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] -[SECTION] +[[SECTION]] TITLE: Section #1.2 [REQUIREMENT] @@ -68,6 +87,6 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/08_two_nested_sections/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/08_two_nested_sections/sample.sdoc index c88ab77f5..baee91436 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/08_two_nested_sections/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/08_two_nested_sections/sample.sdoc @@ -3,6 +3,25 @@ TITLE: sample [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: UID @@ -33,10 +52,10 @@ ELEMENTS: - TYPE: Parent - TYPE: File -[SECTION] +[[SECTION]] TITLE: Section #1 -[SECTION] +[[SECTION]] TITLE: Section #1.1 [REQUIREMENT] @@ -51,9 +70,9 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] -[SECTION] +[[SECTION]] TITLE: Section #1.2 [REQUIREMENT] @@ -68,14 +87,14 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] -[/SECTION] +[[/SECTION]] -[SECTION] +[[SECTION]] TITLE: Section #2 -[SECTION] +[[SECTION]] TITLE: Section #2.1 [REQUIREMENT] @@ -90,9 +109,9 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] -[SECTION] +[[SECTION]] TITLE: Section #2.2 [REQUIREMENT] @@ -107,6 +126,6 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/09_next_requirement_drop_in_level/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/09_next_requirement_drop_in_level/sample.sdoc index 383307360..ae7cd5e8f 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/09_next_requirement_drop_in_level/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/09_next_requirement_drop_in_level/sample.sdoc @@ -3,6 +3,25 @@ TITLE: sample [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: UID @@ -33,10 +52,10 @@ ELEMENTS: - TYPE: Parent - TYPE: File -[SECTION] +[[SECTION]] TITLE: Section #1 -[SECTION] +[[SECTION]] TITLE: Section #1.1 [REQUIREMENT] @@ -45,7 +64,7 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] [REQUIREMENT] UID: REQ-1.2.1 @@ -53,4 +72,4 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/10_next_requirement_drop_of_two_levels/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/10_next_requirement_drop_of_two_levels/sample.sdoc index 6576e93b3..7ad6d403b 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/10_next_requirement_drop_of_two_levels/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/10_next_requirement_drop_of_two_levels/sample.sdoc @@ -3,6 +3,25 @@ TITLE: sample [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: UID @@ -33,10 +52,10 @@ ELEMENTS: - TYPE: Parent - TYPE: File -[SECTION] +[[SECTION]] TITLE: Section #1 -[SECTION] +[[SECTION]] TITLE: Section #1.1 [REQUIREMENT] @@ -45,9 +64,9 @@ STATEMENT: >>> The mapping function shall map requirement_ID to UID. <<< -[/SECTION] +[[/SECTION]] -[/SECTION] +[[/SECTION]] [REQUIREMENT] UID: REQ-1.2.1 diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/11_exporting_sections_free_text/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/11_exporting_sections_free_text/sample.sdoc index 441a16095..b783b8f67 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/11_exporting_sections_free_text/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/11_exporting_sections_free_text/sample.sdoc @@ -3,6 +3,28 @@ TITLE: sample [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: MID + TYPE: String + REQUIRED: False + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: TEXT FIELDS: - TITLE: UID @@ -15,7 +37,7 @@ ELEMENTS: - TYPE: Parent - TYPE: File -[SECTION] +[[SECTION]] TITLE: Section #1 [TEXT] @@ -27,4 +49,4 @@ This is a free text line #2. This is a free text line #3. <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/15_composite_requirement/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/15_composite_requirement/sample.sdoc new file mode 100644 index 000000000..edd86db1f --- /dev/null +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/15_composite_requirement/sample.sdoc @@ -0,0 +1,39 @@ +[DOCUMENT] +TITLE: sample + +[GRAMMAR] +ELEMENTS: +- TAG: COMPOSITE_REQUIREMENT + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: STATEMENT + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File +- TAG: REQUIREMENT + FIELDS: + - TITLE: STATEMENT + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File + +[[COMPOSITE_REQUIREMENT]] +UID: REQ-1.1.1 +STATEMENT: >>> +The mapping function shall map requirement_ID to UID. +<<< + +[REQUIREMENT] +STATEMENT: >>> +Shall statement. +<<< + +[[/COMPOSITE_REQUIREMENT]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/15_composite_requirement/test.itest b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/15_composite_requirement/test.itest new file mode 100644 index 000000000..410007d4f --- /dev/null +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/15_composite_requirement/test.itest @@ -0,0 +1,3 @@ +RUN: %strictdoc export --formats=reqif-sdoc %S/sample.sdoc +RUN: %strictdoc import reqif sdoc %S/output/reqif/output.reqif %S/output/ +RUN: %diff %S/sample.sdoc %S/output/sample.sdoc diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/15_composite_requirements_not_supported_yet/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/15_composite_requirements_not_supported_yet/sample.sdoc deleted file mode 100644 index 42336359c..000000000 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/15_composite_requirements_not_supported_yet/sample.sdoc +++ /dev/null @@ -1,8 +0,0 @@ -[DOCUMENT] -TITLE: Document with a composite requirement - -[COMPOSITE_REQUIREMENT] -UID: REQ-1.1.1 -STATEMENT: The mapping function shall map requirement_ID to UID. - -[/COMPOSITE_REQUIREMENT] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/15_composite_requirements_not_supported_yet/test.itest b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/15_composite_requirements_not_supported_yet/test.itest deleted file mode 100644 index 51e92d4c4..000000000 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/15_composite_requirements_not_supported_yet/test.itest +++ /dev/null @@ -1,5 +0,0 @@ -UNSUPPORTED: true -# https://github.com/strictdoc-project/strictdoc/issues/1788 - -RUN: %expect_exit 1 %strictdoc export --formats=reqif-sdoc %S/sample.sdoc | filecheck %s -CHECK: Exporting composite requirements is not supported yet. diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/33_custom_grammar_multiple_node_types/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/33_custom_grammar_multiple_node_types/sample.sdoc index 89f32fd67..76758163a 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/33_custom_grammar_multiple_node_types/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/33_custom_grammar_multiple_node_types/sample.sdoc @@ -3,6 +3,25 @@ TITLE: sample [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: TEXT FIELDS: - TITLE: UID @@ -57,7 +76,7 @@ STATEMENT: >>> Document free text. <<< -[SECTION] +[[SECTION]] TITLE: Section 1 [TEXT] @@ -83,4 +102,4 @@ STATEMENT: >>> Assumption 1 statement. <<< -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/60_multiple_documents/Sample_1.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/60_multiple_documents/Sample_1.sdoc index 5e1567bc7..c7276d331 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/60_multiple_documents/Sample_1.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/60_multiple_documents/Sample_1.sdoc @@ -3,6 +3,25 @@ TITLE: Sample 1 [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: UID @@ -33,10 +52,10 @@ ELEMENTS: - TYPE: Parent - TYPE: File -[SECTION] +[[SECTION]] TITLE: Section #1 -[SECTION] +[[SECTION]] TITLE: Section #1.1 [REQUIREMENT] @@ -45,6 +64,6 @@ STATEMENT: >>> Statement HLREQ-1. <<< -[/SECTION] +[[/SECTION]] -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/60_multiple_documents/Sample_2.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/60_multiple_documents/Sample_2.sdoc index 085d5a4c3..ddd3e1376 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/60_multiple_documents/Sample_2.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/60_multiple_documents/Sample_2.sdoc @@ -3,6 +3,25 @@ TITLE: Sample 2 [GRAMMAR] ELEMENTS: +- TAG: SECTION + PROPERTIES: + IS_COMPOSITE: True + FIELDS: + - TITLE: UID + TYPE: String + REQUIRED: False + - TITLE: LEVEL + TYPE: String + REQUIRED: False + - TITLE: PREFIX + TYPE: String + REQUIRED: False + - TITLE: TITLE + TYPE: String + REQUIRED: False + RELATIONS: + - TYPE: Parent + - TYPE: File - TAG: REQUIREMENT FIELDS: - TITLE: UID @@ -33,10 +52,10 @@ ELEMENTS: - TYPE: Parent - TYPE: File -[SECTION] +[[SECTION]] TITLE: Section #1 -[SECTION] +[[SECTION]] TITLE: Section #1.1 [REQUIREMENT] @@ -45,6 +64,6 @@ STATEMENT: >>> Statement LLREQ-1. <<< -[/SECTION] +[[/SECTION]] -[/SECTION] +[[/SECTION]] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/90_legacy_section_not_supported_anymore/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/90_legacy_section_not_supported_anymore/sample.sdoc new file mode 100644 index 000000000..83378c54a --- /dev/null +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/90_legacy_section_not_supported_anymore/sample.sdoc @@ -0,0 +1,13 @@ +[DOCUMENT] +TITLE: sample + +[SECTION] +TITLE: Section #1 + +[REQUIREMENT] +UID: LLR001 +STATEMENT: >>> +The mapping function shall map requirement_ID to UID. +<<< + +[/SECTION] diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/90_legacy_section_not_supported_anymore/test.itest b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/90_legacy_section_not_supported_anymore/test.itest new file mode 100644 index 000000000..8148b42e0 --- /dev/null +++ b/tests/integration/features/reqif/profiles/p01_sdoc/end_to_end/90_legacy_section_not_supported_anymore/test.itest @@ -0,0 +1,3 @@ +RUN: %expect_exit 1 %strictdoc export --formats=reqif-sdoc %S/sample.sdoc 2>&1 | filecheck %s + +CHECK: AssertionError: [SECTION] tags are deprecated when using ReqIF export/import. Use [[SECTION]] tags instead. diff --git a/tests/integration/features/reqif/profiles/p01_sdoc/examples/01_sample/output2/sample.sdoc b/tests/integration/features/reqif/profiles/p01_sdoc/examples/01_sample/output2/sample.sdoc index 411e97f2b..3b6de1917 100644 --- a/tests/integration/features/reqif/profiles/p01_sdoc/examples/01_sample/output2/sample.sdoc +++ b/tests/integration/features/reqif/profiles/p01_sdoc/examples/01_sample/output2/sample.sdoc @@ -4,6 +4,8 @@ TITLE: sample [GRAMMAR] ELEMENTS: - TAG: REQUIREMENT_TYPE + PROPERTIES: + IS_COMPOSITE: True FIELDS: - TITLE: UID TYPE: String @@ -17,7 +19,7 @@ ELEMENTS: RELATIONS: - TYPE: Parent -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-0f5a0a32-034a-aa17-65d0-7387eefa020a STATEMENT: >>>
...Anonymized...
@@ -26,7 +28,7 @@ COMMENT: >>> Anonymized-44dd8e67-698c-55b1-7d34-9521af4baa3d <<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-194ac1eb-d718-b59b-5d2a-c2b0ac0381ef STATEMENT: >>>
...Anonymized...
@@ -35,7 +37,9 @@ COMMENT: >>> Anonymized-6e95e816-6fc9-0fe1-8b1f-66340311da94 <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-f6fae293-6454-26af-9599-3cd947afb1e0 STATEMENT: >>>
...Anonymized...
@@ -44,7 +48,7 @@ COMMENT: >>> Anonymized-9550f586-0cf8-ffb5-6194-45eabf76b72e <<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-18f87494-b44b-cfc0-4a58-a688927ac745 STATEMENT: >>>
...Anonymized...
@@ -53,7 +57,11 @@ COMMENT: >>> Anonymized-173d37f4-33ea-002f-bd8f-9e7d2166f5e4 <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-fe0715df-5c7c-c4bf-014b-5889d2f5d1f0 STATEMENT: >>>
...Anonymized...
@@ -62,13 +70,17 @@ RELATIONS: - TYPE: Parent VALUE: Anonymized-4639e422-20ec-985f-cd05-fc91485ca840 -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-72e31ec7-0080-ead1-250a-f1307249dfad STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-ae2a89dc-21f6-dc92-704b-1bc9aa9e701b STATEMENT: >>>
...Anonymized...
@@ -77,31 +89,39 @@ RELATIONS: - TYPE: Parent VALUE: Anonymized-7afe60ca-6d37-a442-a8b9-1b38addc62f5 -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-db5b3551-4a05-8b8a-2c90-5b22a10cc61d STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-30dbde48-e2f2-5354-39b8-b9734fef87a9 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-ecc4d376-9269-8c2e-7e63-42a2ea6186b4 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-943c995c-f427-11f0-15e6-4c1df2e40a68 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-7402a5d6-7727-a798-29ae-8f58279bc795 STATEMENT: >>>
...Anonymized...
@@ -110,7 +130,9 @@ COMMENT: >>> Anonymized-ac696c4c-befd-9175-2f89-ad7af4875c10 <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-ce4509ee-1ad6-fb66-a56b-07ab090baeff STATEMENT: >>>
...Anonymized...
@@ -119,7 +141,9 @@ COMMENT: >>> Anonymized-8bff626e-8a34-2f60-757c-5866d124aad3 <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-4d043ab9-d12d-25cd-646e-3a2525cd7129 STATEMENT: >>>
...Anonymized...
@@ -128,7 +152,11 @@ COMMENT: >>> Anonymized-a12de824-d770-a19f-7eed-ff0709fe02f1 <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-c3f3e981-f228-c6cc-b413-d612d1cf5680 STATEMENT: >>>
...Anonymized...
@@ -137,43 +165,57 @@ COMMENT: >>> Anonymized-4c6dff8f-ced4-426c-0736-82dac40188a1 <<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-e07fc0ee-25c7-8192-ba73-abc8685553bf STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-ed2b0598-8caf-f514-8b30-5b54a1071d90 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-350ecc6a-1a94-9865-7e2a-ba6f75a5f249 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-06bc1019-cec8-0126-a421-dd2d10183c77 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-1ad4427f-f493-eb93-68a2-e931acb27582 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-989a94ba-cb9f-8c8a-4f48-50612d66b2af STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-1a951d86-0ac9-1493-e0a2-b9560696f70b STATEMENT: >>>
...Anonymized...
@@ -185,31 +227,39 @@ RELATIONS: - TYPE: Parent VALUE: Anonymized-77475db9-12c8-62d2-373a-38b520556c8e -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-b7af10a2-c00a-95cc-933e-36ec7085071f STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-db0c83fa-d5da-8fac-f5a4-06aaefa23f13 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-c7d559b0-713e-fafb-74e9-82adf3df6088 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-42dc24bc-b7f9-93d2-47c5-611a436ad21f STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-153d04e5-2002-76d3-0cd8-8e6f4eff035c STATEMENT: >>>
...Anonymized...
@@ -218,25 +268,33 @@ COMMENT: >>> Anonymized-1cddc3a3-bcbe-1ea2-46ce-f4595df91254 <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-b836b433-d740-9ea9-2460-c5227088c4e1 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-8b9abcea-aee0-0557-d143-42ef108300c6 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-1fce724a-08a6-7ee9-dc0f-b69138a9de99 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-f4b43ad0-08b7-5232-aa79-4e4a84f212e9 STATEMENT: >>>
...Anonymized...
@@ -245,7 +303,13 @@ COMMENT: >>> Anonymized-cf30f511-c65e-86a0-f98a-7ccba9cd1438 <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-10a337ef-8a67-8e38-66da-2aa3192cd628 STATEMENT: >>>
...Anonymized...
@@ -254,7 +318,7 @@ RELATIONS: - TYPE: Parent VALUE: Anonymized-9b393413-a4e7-9bd2-5535-5bb66bd59650 -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-3984d581-a95a-5393-8acf-c5f9eed20c7d STATEMENT: >>>
...Anonymized...
@@ -263,31 +327,39 @@ COMMENT: >>> Anonymized-681a3fe8-5199-006f-539a-39db70322601 <<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-23d6757a-57f1-5ec8-a519-d76e5a8c765b STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-a7519a04-a083-33d6-2c5e-f91eae549bac STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-68d9213e-39e2-2569-2261-86eab86b4455 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-6221c8ef-3926-0044-d434-ac90b7bbe3c9 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-43fbd757-3591-c8f1-3c8e-3fa8815f35f5 STATEMENT: >>>
...Anonymized...
@@ -296,25 +368,33 @@ COMMENT: >>> Anonymized-537c5d00-c4a5-5b58-fbcd-f8e7c757332c <<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-d607fbd4-aa5a-7bf0-f91c-d785bae47cb8 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-f1f70b6a-b237-5ba4-f6f0-7ed86039c8c0 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-89fa868b-4e71-d368-5ce1-7c043c5720aa STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-1f8c4632-6827-d64d-e8e7-85345cf16220 STATEMENT: >>>
...Anonymized...
@@ -323,13 +403,17 @@ RELATIONS: - TYPE: Parent VALUE: Anonymized-9b393413-a4e7-9bd2-5535-5bb66bd59650 -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-3b9b6aff-588a-36d5-c243-cf043bc4bee3 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-5af32bdb-5f81-d228-9381-0638fc1216ee STATEMENT: >>>
...Anonymized...
@@ -343,13 +427,17 @@ RELATIONS: - TYPE: Parent VALUE: Anonymized-9b393413-a4e7-9bd2-5535-5bb66bd59650 -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-a8bd8814-6474-3c79-6c7b-61043c0e6154 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-502dfc53-e2d0-5520-028c-0e4ec41e7e98 STATEMENT: >>>
...Anonymized...
@@ -363,25 +451,35 @@ RELATIONS: - TYPE: Parent VALUE: Anonymized-9b393413-a4e7-9bd2-5535-5bb66bd59650 -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-dcc5987d-578c-e872-c870-5b5fb80f8a92 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-71eb257b-b956-b06d-dea6-9414b29eef97 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-400ba06c-96bc-d3b2-5163-110645ee1341 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-30284d11-2456-33ad-5e8f-67c68dc5a227 STATEMENT: >>>
...Anonymized...
@@ -393,19 +491,23 @@ RELATIONS: - TYPE: Parent VALUE: Anonymized-f4b43ad0-08b7-5232-aa79-4e4a84f212e9 -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-13ec3144-891d-2482-df19-3d4fa4e00980 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-c11a93ba-e3f1-a5ec-b76e-194aa35c9127 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-52b0358c-2d9f-b9e4-ffc7-f9f872c50469 STATEMENT: >>>
...Anonymized...
@@ -414,13 +516,19 @@ COMMENT: >>> Anonymized-3c302075-4616-9b7d-a433-39598cf22cdb <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-767527af-f220-b1dd-504c-7230faec66ca STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-ecaa42ac-540a-ddfb-6c30-112bfa2fcc67 STATEMENT: >>>
...Anonymized...
@@ -429,7 +537,9 @@ COMMENT: >>> Anonymized-edf8c8e0-a2a8-698d-8822-37fa24b5f82e <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-c0230e02-cb71-76ea-3af5-222bbda6abf3 STATEMENT: >>>
...Anonymized...
@@ -438,25 +548,33 @@ COMMENT: >>> Anonymized-e6b3e266-a80d-1a21-aeaa-1f02a9460f63 <<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-91ca0cfa-4d2a-4b4f-1246-c8749654d10a STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-694674b7-6097-f5bb-19e0-02ed25dc1351 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-c8fa9ba1-7d02-9fad-3702-68051fea9941 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-86f962d3-08f6-710d-4e01-f22b4e27dc46 STATEMENT: >>>
...Anonymized...
@@ -465,7 +583,9 @@ COMMENT: >>> Anonymized-d62cf8f0-f755-810f-6647-f7a3d7518e4e <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-aef0da9f-cbe0-11a1-25e0-7d97ec8abae5 STATEMENT: >>>
...Anonymized...
@@ -474,7 +594,7 @@ COMMENT: >>> Anonymized-eb407823-4ffa-de5d-d197-ba5406393edb <<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-482f3879-fb04-9f61-7fad-a2531977bd01 STATEMENT: >>>
...Anonymized...
@@ -483,13 +603,19 @@ COMMENT: >>> Anonymized-260b997d-99fd-0e36-9343-bef4f9b620c2 <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-6fa584da-ccd4-c6ce-7e2b-a8eff91197b3 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-374dce94-8c64-5fd3-9a86-eac6c4aa73a4 STATEMENT: >>>
...Anonymized...
@@ -498,7 +624,7 @@ COMMENT: >>> Anonymized-39686a18-bfe5-f5f5-9a2c-090593e156a4 <<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-f5d0cceb-63ac-f35e-adaf-34789c171889 STATEMENT: >>>
...Anonymized...
@@ -507,7 +633,9 @@ COMMENT: >>> Anonymized-8a86dee2-68fe-162f-daff-0cca000f1f3b <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-77475db9-12c8-62d2-373a-38b520556c8e STATEMENT: >>>
...Anonymized...
@@ -516,7 +644,11 @@ COMMENT: >>> Anonymized-ba994aaa-5370-2f1d-3581-3fcd4bb0a26a <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-04c29ccd-c709-a42e-fc4e-969acb1764f5 STATEMENT: >>>
...Anonymized...
@@ -528,13 +660,17 @@ RELATIONS: - TYPE: Parent VALUE: Anonymized-9b393413-a4e7-9bd2-5535-5bb66bd59650 -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-8b9b12d4-5476-b8ea-7e07-181e2d23e59e STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-4be0c744-a9fa-30e2-dc7d-9aec21a94091 STATEMENT: >>>
...Anonymized...
@@ -543,19 +679,23 @@ COMMENT: >>> Anonymized-3a95dbe4-692f-865e-a3b8-5b7f29c7aff7 <<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-48a15b62-5a94-bbfb-aabd-673b12d33e4b STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-1921d4d9-f1d8-0f8b-bd2a-0f161a8f5bad STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-0590bc57-cb89-1593-dda0-2075b861303e STATEMENT: >>>
...Anonymized...
@@ -564,31 +704,41 @@ COMMENT: >>> Anonymized-7192410e-53c8-e8e6-3d91-3ebc159807ad <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-d9de25c4-83d3-1cdc-c92b-448d8351806f STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-9b393413-a4e7-9bd2-5535-5bb66bd59650 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-636ebdbd-a2f6-29e2-4247-ea1aa96ff225 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-5b767d4a-83f7-fb7b-ccc3-e85e11984a3e STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-fdc64080-4c67-3bcc-2431-28fd09882749 STATEMENT: >>>
...Anonymized...
@@ -597,7 +747,11 @@ COMMENT: >>> Anonymized-326fcdb7-dd39-9491-bc0c-945238cd054e <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-2f35d019-e056-09cb-d8ee-61d2ac91ad98 STATEMENT: >>>
...Anonymized...
@@ -606,13 +760,15 @@ COMMENT: >>> Anonymized-0ea2d2ee-ef46-1818-16d3-13e7134edfa1 <<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-2f02c572-5cca-06a1-ca6b-fac759bf2f5b STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-1758dac6-7ab2-6a75-cbae-c16c8700628e STATEMENT: >>>
...Anonymized...
@@ -621,19 +777,25 @@ COMMENT: >>> Anonymized-75e98b2f-3a25-def5-9a74-b64103427405 <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-bb844bd6-3a08-82b3-dbe2-08e51cdf82a4 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-2e40e940-b395-7f4c-f335-68362d4dc7f8 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-a269b13f-ac4d-f66f-52ac-daa4f06c5deb STATEMENT: >>>
...Anonymized...
@@ -642,25 +804,35 @@ COMMENT: >>> Anonymized-02cc1748-299a-8ae4-416c-b92adc14e34c <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-8e42ab12-5f54-284b-3819-66e5a6afdfcf STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-2de561ef-3b99-0e21-fccb-23b56e60aad5 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-fa51ba62-fbad-ee54-0d85-d9f04f4884db STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-cae61550-f088-110f-eeaf-d990943acec6 STATEMENT: >>>
...Anonymized...
@@ -672,19 +844,25 @@ RELATIONS: - TYPE: Parent VALUE: Anonymized-72e31ec7-0080-ead1-250a-f1307249dfad -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-553f9061-4b75-7148-c84d-a1c71f834904 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-23cf983e-72e1-18f7-e22b-955040b5ee61 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-68ae8251-7506-b298-b48d-cabbb1297c6d STATEMENT: >>>
...Anonymized...
@@ -693,13 +871,15 @@ COMMENT: >>> Anonymized-b2aeec5c-2e88-1c03-b52b-0ae39f3a4003 <<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-b5fdb3cc-6b57-8a08-75fd-08df6a48d033 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-8d8a47a0-27d9-80b7-6dd0-0ead630c84e3 STATEMENT: >>>
...Anonymized...
@@ -708,19 +888,27 @@ COMMENT: >>> Anonymized-ee0591ab-9f87-4689-5ba3-dd38edb7647a <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-1dbad75d-248e-6d95-cfca-4abb6704106c STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-00f7a23e-e211-1ef9-2ebe-3a929a80eb69 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-735fa4f8-2a0c-c38d-1d93-34a32240210c STATEMENT: >>>
...Anonymized...
@@ -732,13 +920,17 @@ RELATIONS: - TYPE: Parent VALUE: Anonymized-e3a56102-06f0-d3a3-b185-cb4862060a74 -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-78400cff-a67d-f6d9-adb6-0c42286d0220 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-1da2d9a7-d9d5-d066-219b-5b9d3840c4d3 STATEMENT: >>>
...Anonymized...
@@ -750,7 +942,9 @@ RELATIONS: - TYPE: Parent VALUE: Anonymized-e3a56102-06f0-d3a3-b185-cb4862060a74 -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-1f1213f8-bf77-9245-cecc-6a56da220029 STATEMENT: >>>
...Anonymized...
@@ -759,13 +953,17 @@ COMMENT: >>> Anonymized-3ad75214-9bb1-38d9-a181-c6eb59c0420e <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-837849a7-b5f9-e416-be0f-f14076e7c278 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-19f44c28-ea3a-8be5-21ba-edb12d3d266a STATEMENT: >>>
...Anonymized...
@@ -774,7 +972,9 @@ COMMENT: >>> Anonymized-bb28787a-d958-9343-c076-61ec930f7b3b <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-6b3e6629-b03c-d217-baa7-4e169d671bb0 STATEMENT: >>>
...Anonymized...
@@ -783,25 +983,33 @@ COMMENT: >>> Anonymized-c9f6d2d5-6ad0-51dc-aff1-2cfc55291182 <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-e3a56102-06f0-d3a3-b185-cb4862060a74 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-41aac05f-a88c-048c-e1b7-149ef87d8e30 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-d2e65e13-eada-077f-e659-0c6fcac35f94 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-2a6f5650-42d3-159d-a275-0dfdb2aa9db6 STATEMENT: >>>
...Anonymized...
@@ -810,7 +1018,9 @@ COMMENT: >>> Anonymized-07700f1c-bf36-644b-242c-5adda2e732d2 <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-baece43a-738e-c4a5-4001-17dba8ad8041 STATEMENT: >>>
...Anonymized...
@@ -819,188 +1029,254 @@ COMMENT: >>> Anonymized-d0f944b7-d4ec-53a6-183e-94b4a71fa395 <<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-7afe60ca-6d37-a442-a8b9-1b38addc62f5 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-301cf73c-60c3-7066-65dd-cda4ee6f8789 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-1a12eb8d-f455-23b7-83aa-c5c89b649fff STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-63600c41-9ece-ef1f-1dce-b6b9f9f2c18d STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-123d910a-fff2-1ab1-552c-2af630bedf76 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-ac222ce1-e831-72c8-e5a9-de76593175d3 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-4f6b1d8e-dbfb-1157-b56f-44221f608f44 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[REQUIREMENT_TYPE]] UID: Anonymized-98f2973a-7e7a-730c-356e-f86b445bc6b0 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-54e0cc54-e300-0d20-e92c-61b9161a23fc STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-a83e2dc5-3380-bbf6-1bd1-d8ae7372246e STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-7eb77f53-b28e-7d86-fcd5-da4c5a430d57 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-b9255729-aab4-3219-2f0a-2c761c2f4ffe STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-7eba4e1d-8c30-73d1-a1ee-4ccd2359f264 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-31deb015-0435-fbe1-669e-50f1b7d25481 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-c905e7d4-8a02-41ef-25c2-6ffad56f78a5 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-7747494e-e852-2092-9dae-fc6176d0f9af STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-2335a59f-7b04-9698-0cc5-55acce3caac8 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-a142a6b7-5df0-b3fa-4340-b93f76441048 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-63003d04-6848-85ac-7647-e41abcdf7abd STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-bc495fc8-e771-fd26-91cc-1ec1d10e6a0c STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-e25c828d-524d-abd3-abb4-ee4d22f28874 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-f51db3b0-560a-06a8-87fc-4d083737ec51 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-078acfa6-f5f3-e2f3-5e29-b98472b8be90 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-80e7217f-6da7-ef1f-9743-aee9aa9bdccb STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-7c72ccdd-ca3b-f651-83e2-52eea3bbb23b STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-4bda7565-2af5-c721-2c38-a5072ede5482 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-e0edc139-615e-9c0b-1c35-b6521e752250 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-4639e422-20ec-985f-cd05-fc91485ca840 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-08499f3e-7ff7-61de-238b-787ab44b34b7 STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-875b3c61-ccc8-8209-cba5-ae1b6b5d5c8a STATEMENT: >>>
...Anonymized...
<<< -[REQUIREMENT_TYPE] +[[/REQUIREMENT_TYPE]] + +[[REQUIREMENT_TYPE]] UID: Anonymized-a1cdfbbf-b96b-2043-d7e3-8936e812cdb9 STATEMENT: >>>
...Anonymized...
<<< + +[[/REQUIREMENT_TYPE]] + +[[/REQUIREMENT_TYPE]]