reqif 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +7 -4
- data/.rubocop.yml +17 -6
- data/.rubocop_todo.yml +63 -0
- data/CLAUDE.md +73 -0
- data/Gemfile +6 -2
- data/README.adoc +61 -1
- data/lib/reqif/alternative_id.rb +2 -2
- data/lib/reqif/attribute_definition_boolean.rb +5 -4
- data/lib/reqif/attribute_definition_date.rb +5 -4
- data/lib/reqif/attribute_definition_enumeration.rb +5 -4
- data/lib/reqif/attribute_definition_integer.rb +5 -4
- data/lib/reqif/attribute_definition_real.rb +5 -4
- data/lib/reqif/attribute_definition_string.rb +5 -4
- data/lib/reqif/attribute_definition_xhtml.rb +5 -4
- data/lib/reqif/attribute_value_boolean.rb +3 -2
- data/lib/reqif/attribute_value_date.rb +4 -3
- data/lib/reqif/attribute_value_enumeration.rb +3 -2
- data/lib/reqif/attribute_value_integer.rb +4 -3
- data/lib/reqif/attribute_value_real.rb +4 -3
- data/lib/reqif/attribute_value_string.rb +3 -2
- data/lib/reqif/attribute_value_xhtml.rb +3 -2
- data/lib/reqif/children.rb +3 -2
- data/lib/reqif/core_content.rb +3 -2
- data/lib/reqif/datatype_definition_boolean.rb +5 -4
- data/lib/reqif/datatype_definition_date.rb +5 -4
- data/lib/reqif/datatype_definition_enumeration.rb +5 -4
- data/lib/reqif/datatype_definition_integer.rb +7 -6
- data/lib/reqif/datatype_definition_real.rb +7 -6
- data/lib/reqif/datatype_definition_string.rb +5 -4
- data/lib/reqif/datatype_definition_xhtml.rb +5 -4
- data/lib/reqif/datatypes.rb +23 -12
- data/lib/reqif/default_value.rb +4 -3
- data/lib/reqif/definition.rb +24 -16
- data/lib/reqif/doors/identifier.rb +15 -0
- data/lib/reqif/doors/module_definition.rb +23 -0
- data/lib/reqif/doors/namespace.rb +10 -0
- data/lib/reqif/doors/readonly_attributes.rb +48 -0
- data/lib/reqif/doors/rif_definition.rb +26 -0
- data/lib/reqif/doors/string_type.rb +12 -0
- data/lib/reqif/doors.rb +12 -0
- data/lib/reqif/editable_atts.rb +24 -16
- data/lib/reqif/embedded_value.rb +4 -3
- data/lib/reqif/enum_value.rb +4 -4
- data/lib/reqif/high_precision_date_time.rb +52 -0
- data/lib/reqif/namespace.rb +16 -0
- data/lib/reqif/object.rb +3 -3
- data/lib/reqif/properties.rb +2 -2
- data/lib/reqif/relation_group.rb +5 -4
- data/lib/reqif/relation_group_type.rb +5 -4
- data/lib/reqif/req_if.rb +7 -2
- data/lib/reqif/req_if_content.rb +3 -2
- data/lib/reqif/req_if_header.rb +4 -5
- data/lib/reqif/req_if_tool_extension.rb +48 -2
- data/lib/reqif/reqif_float.rb +98 -0
- data/lib/reqif/reqif_integer.rb +36 -0
- data/lib/reqif/source.rb +3 -3
- data/lib/reqif/source_specification.rb +3 -3
- data/lib/reqif/spec_attributes.rb +25 -13
- data/lib/reqif/spec_hierarchy.rb +5 -4
- data/lib/reqif/spec_object.rb +5 -4
- data/lib/reqif/spec_object_type.rb +5 -4
- data/lib/reqif/spec_objects.rb +3 -2
- data/lib/reqif/spec_relation.rb +5 -4
- data/lib/reqif/spec_relation_groups.rb +2 -2
- data/lib/reqif/spec_relation_type.rb +5 -4
- data/lib/reqif/spec_relations.rb +3 -3
- data/lib/reqif/spec_types.rb +3 -2
- data/lib/reqif/specification.rb +5 -4
- data/lib/reqif/specification_type.rb +5 -4
- data/lib/reqif/specifications.rb +3 -2
- data/lib/reqif/specified_values.rb +2 -2
- data/lib/reqif/string_type.rb +7 -0
- data/lib/reqif/target.rb +3 -3
- data/lib/reqif/target_specification.rb +3 -3
- data/lib/reqif/the_header.rb +3 -2
- data/lib/reqif/tool_extensions.rb +2 -2
- data/lib/reqif/type.rb +28 -20
- data/lib/reqif/values.rb +8 -5
- data/lib/reqif/version.rb +1 -1
- data/lib/reqif/xhtml/div.rb +18 -0
- data/lib/reqif/xhtml/namespace.rb +10 -0
- data/lib/reqif/xhtml/p.rb +18 -0
- data/lib/reqif/xhtml/span.rb +18 -0
- data/lib/reqif/xhtml.rb +12 -0
- data/lib/reqif/xhtml_content.rb +181 -2
- data/lib/reqif.rb +70 -14
- data/references/driver.xsd +270 -270
- data/references/reqif.xsd +892 -892
- data/reqif.gemspec +4 -3
- data/spec/fixtures/antcc_MAG8000-LTE-FeatureSpecReqBL4.reqif +4299 -0
- data/spec/fixtures/ea_example.reqif.xml +236 -0
- data/spec/fixtures/eclipse_capella_Sample.xml +177 -0
- data/spec/fixtures/eclipse_capella_Sample1.xml +239 -0
- data/spec/fixtures/eclipse_capella_Sample2.xml +239 -0
- data/spec/fixtures/eclipse_capella_Sample3.xml +304 -0
- data/spec/fixtures/eclipse_capella_model1.xml +4080 -0
- data/spec/fixtures/eclipse_rmf_sample.reqif +96 -0
- data/spec/fixtures/eclipse_rmf_specRelationTest.reqif +110 -0
- data/spec/fixtures/polarion_export.xml +70 -0
- data/spec/fixtures/strictdoc_01_minimal_reqif_sample.reqif +4 -0
- data/spec/fixtures/strictdoc_02_read_reqif_input.reqif +3996 -0
- data/spec/fixtures/strictdoc_04_convert_reqif_to_json_sample1_polarion.reqif +197 -0
- data/spec/fixtures/strictdoc_04_convert_reqif_to_json_sample2_sdoc.reqif +451 -0
- data/spec/fixtures/strictdoc_04_convert_reqif_to_json_sample3_eclipse_rmf.reqif +334 -0
- data/spec/fixtures/strictdoc_04_convert_reqif_to_json_sample_polarion_reqifz.reqifz +0 -0
- data/spec/reqif/data_types_spec.rb +29 -0
- data/spec/reqif/polarion_export_spec.rb +22 -0
- data/spec/reqif/req_if_header_spec.rb +31 -0
- data/spec/reqif/req_if_spec.rb +43 -0
- data/spec/reqif/spec_objects_spec.rb +35 -0
- data/spec/reqif/spec_relations_spec.rb +33 -0
- data/spec/reqif/spec_types_spec.rb +40 -0
- data/spec/reqif/specifications_spec.rb +35 -0
- data/spec/reqif/tool_extension_spec.rb +27 -0
- data/spec/reqif_spec.rb +56 -0
- data/spec/spec_helper.rb +70 -0
- metadata +58 -11
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
<!-- https://github.com/strictdoc-project/reqif/blob/main/tests/integration/examples/04_convert_reqif_to_json/sample3_eclipse_rmf.reqif -->
|
|
2
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
3
|
+
<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
|
4
|
+
<THE-HEADER>
|
|
5
|
+
<REQ-IF-HEADER IDENTIFIER="_RB77YVyxEeumRtWSJE-orw">
|
|
6
|
+
<CREATION-TIME>2021-01-22T12:56:38.677Z</CREATION-TIME>
|
|
7
|
+
<REQ-IF-TOOL-ID>RMF - Requirements Modeling Framework (http://www.eclipse.org/rmf)</REQ-IF-TOOL-ID>
|
|
8
|
+
<REQ-IF-VERSION>1.0</REQ-IF-VERSION>
|
|
9
|
+
<SOURCE-TOOL-ID>RMF - Requirements Modeling Framework (http://www.eclipse.org/rmf)</SOURCE-TOOL-ID>
|
|
10
|
+
<TITLE>TC 1800 'HIS Exchange Process OEM -> SUP (initial)'</TITLE>
|
|
11
|
+
</REQ-IF-HEADER>
|
|
12
|
+
</THE-HEADER>
|
|
13
|
+
<CORE-CONTENT>
|
|
14
|
+
<REQ-IF-CONTENT>
|
|
15
|
+
<DATATYPES>
|
|
16
|
+
<DATATYPE-DEFINITION-STRING IDENTIFIER="_RB77Y1yxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00" LONG-NAME="TC18xx DatatypeDefinitionString" MAX-LENGTH="255"/>
|
|
17
|
+
<DATATYPE-DEFINITION-XHTML IDENTIFIER="_RB77ZFyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00" LONG-NAME="TC18xx DatatypeDefinitionXhtml"/>
|
|
18
|
+
<DATATYPE-DEFINITION-ENUMERATION IDENTIFIER="_RB77ZVyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00" LONG-NAME="TC18xx DatatypeDefinitionEnumeration">
|
|
19
|
+
<SPECIFIED-VALUES>
|
|
20
|
+
<ENUM-VALUE IDENTIFIER="_RB77ZlyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00" LONG-NAME="one">
|
|
21
|
+
<PROPERTIES>
|
|
22
|
+
<EMBEDDED-VALUE KEY="1" OTHER-CONTENT="one"/>
|
|
23
|
+
</PROPERTIES>
|
|
24
|
+
</ENUM-VALUE>
|
|
25
|
+
<ENUM-VALUE IDENTIFIER="_RB77aFyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00" LONG-NAME="two">
|
|
26
|
+
<PROPERTIES>
|
|
27
|
+
<EMBEDDED-VALUE KEY="2" OTHER-CONTENT="two"/>
|
|
28
|
+
</PROPERTIES>
|
|
29
|
+
</ENUM-VALUE>
|
|
30
|
+
</SPECIFIED-VALUES>
|
|
31
|
+
</DATATYPE-DEFINITION-ENUMERATION>
|
|
32
|
+
</DATATYPES>
|
|
33
|
+
<SPEC-TYPES>
|
|
34
|
+
<SPEC-OBJECT-TYPE IDENTIFIER="_RB77alyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00" LONG-NAME="TC18xx SpecObjectType">
|
|
35
|
+
<SPEC-ATTRIBUTES>
|
|
36
|
+
<ATTRIBUTE-DEFINITION-XHTML IDENTIFIER="_RB77a1yxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00" LONG-NAME="ReqIF.Name">
|
|
37
|
+
<TYPE>
|
|
38
|
+
<DATATYPE-DEFINITION-XHTML-REF>_RB77ZFyxEeumRtWSJE-orw</DATATYPE-DEFINITION-XHTML-REF>
|
|
39
|
+
</TYPE>
|
|
40
|
+
</ATTRIBUTE-DEFINITION-XHTML>
|
|
41
|
+
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_RB77bFyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00" LONG-NAME="A1">
|
|
42
|
+
<TYPE>
|
|
43
|
+
<DATATYPE-DEFINITION-STRING-REF>_RB77Y1yxEeumRtWSJE-orw</DATATYPE-DEFINITION-STRING-REF>
|
|
44
|
+
</TYPE>
|
|
45
|
+
</ATTRIBUTE-DEFINITION-STRING>
|
|
46
|
+
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_RB77bVyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00" LONG-NAME="A2">
|
|
47
|
+
<TYPE>
|
|
48
|
+
<DATATYPE-DEFINITION-STRING-REF>_RB77Y1yxEeumRtWSJE-orw</DATATYPE-DEFINITION-STRING-REF>
|
|
49
|
+
</TYPE>
|
|
50
|
+
</ATTRIBUTE-DEFINITION-STRING>
|
|
51
|
+
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_RB77blyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00" LONG-NAME="E1" MULTI-VALUED="false">
|
|
52
|
+
<TYPE>
|
|
53
|
+
<DATATYPE-DEFINITION-ENUMERATION-REF>_RB77ZVyxEeumRtWSJE-orw</DATATYPE-DEFINITION-ENUMERATION-REF>
|
|
54
|
+
</TYPE>
|
|
55
|
+
</ATTRIBUTE-DEFINITION-ENUMERATION>
|
|
56
|
+
</SPEC-ATTRIBUTES>
|
|
57
|
+
</SPEC-OBJECT-TYPE>
|
|
58
|
+
<SPECIFICATION-TYPE IDENTIFIER="_RB77b1yxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00" LONG-NAME="TC18xx SpecificationType">
|
|
59
|
+
<SPEC-ATTRIBUTES>
|
|
60
|
+
<ATTRIBUTE-DEFINITION-XHTML IDENTIFIER="_RB77cFyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00" LONG-NAME="ReqIF.Name">
|
|
61
|
+
<TYPE>
|
|
62
|
+
<DATATYPE-DEFINITION-XHTML-REF>_RB77ZFyxEeumRtWSJE-orw</DATATYPE-DEFINITION-XHTML-REF>
|
|
63
|
+
</TYPE>
|
|
64
|
+
</ATTRIBUTE-DEFINITION-XHTML>
|
|
65
|
+
</SPEC-ATTRIBUTES>
|
|
66
|
+
</SPECIFICATION-TYPE>
|
|
67
|
+
</SPEC-TYPES>
|
|
68
|
+
<SPEC-OBJECTS>
|
|
69
|
+
<SPEC-OBJECT IDENTIFIER="_RB77cVyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
70
|
+
<VALUES>
|
|
71
|
+
<ATTRIBUTE-VALUE-XHTML>
|
|
72
|
+
<DEFINITION>
|
|
73
|
+
<ATTRIBUTE-DEFINITION-XHTML-REF>_RB77a1yxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-XHTML-REF>
|
|
74
|
+
</DEFINITION>
|
|
75
|
+
<THE-VALUE>
|
|
76
|
+
<xhtml:p>Obj-01</xhtml:p>
|
|
77
|
+
</THE-VALUE>
|
|
78
|
+
</ATTRIBUTE-VALUE-XHTML>
|
|
79
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="no change">
|
|
80
|
+
<DEFINITION>
|
|
81
|
+
<ATTRIBUTE-DEFINITION-STRING-REF>_RB77bFyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-STRING-REF>
|
|
82
|
+
</DEFINITION>
|
|
83
|
+
</ATTRIBUTE-VALUE-STRING>
|
|
84
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="no change">
|
|
85
|
+
<DEFINITION>
|
|
86
|
+
<ATTRIBUTE-DEFINITION-STRING-REF>_RB77bVyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-STRING-REF>
|
|
87
|
+
</DEFINITION>
|
|
88
|
+
</ATTRIBUTE-VALUE-STRING>
|
|
89
|
+
<ATTRIBUTE-VALUE-ENUMERATION>
|
|
90
|
+
<VALUES>
|
|
91
|
+
<ENUM-VALUE-REF>_RB77ZlyxEeumRtWSJE-orw</ENUM-VALUE-REF>
|
|
92
|
+
</VALUES>
|
|
93
|
+
<DEFINITION>
|
|
94
|
+
<ATTRIBUTE-DEFINITION-ENUMERATION-REF>_RB77blyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
|
|
95
|
+
</DEFINITION>
|
|
96
|
+
</ATTRIBUTE-VALUE-ENUMERATION>
|
|
97
|
+
</VALUES>
|
|
98
|
+
<TYPE>
|
|
99
|
+
<SPEC-OBJECT-TYPE-REF>_RB77alyxEeumRtWSJE-orw</SPEC-OBJECT-TYPE-REF>
|
|
100
|
+
</TYPE>
|
|
101
|
+
</SPEC-OBJECT>
|
|
102
|
+
<SPEC-OBJECT IDENTIFIER="_RB77eFyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
103
|
+
<VALUES>
|
|
104
|
+
<ATTRIBUTE-VALUE-XHTML>
|
|
105
|
+
<DEFINITION>
|
|
106
|
+
<ATTRIBUTE-DEFINITION-XHTML-REF>_RB77a1yxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-XHTML-REF>
|
|
107
|
+
</DEFINITION>
|
|
108
|
+
<THE-VALUE>
|
|
109
|
+
<xhtml:p>Obj-03</xhtml:p>
|
|
110
|
+
</THE-VALUE>
|
|
111
|
+
</ATTRIBUTE-VALUE-XHTML>
|
|
112
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="O3.A1 initial">
|
|
113
|
+
<DEFINITION>
|
|
114
|
+
<ATTRIBUTE-DEFINITION-STRING-REF>_RB77bFyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-STRING-REF>
|
|
115
|
+
</DEFINITION>
|
|
116
|
+
</ATTRIBUTE-VALUE-STRING>
|
|
117
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="O3.A2 initial">
|
|
118
|
+
<DEFINITION>
|
|
119
|
+
<ATTRIBUTE-DEFINITION-STRING-REF>_RB77bVyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-STRING-REF>
|
|
120
|
+
</DEFINITION>
|
|
121
|
+
</ATTRIBUTE-VALUE-STRING>
|
|
122
|
+
<ATTRIBUTE-VALUE-ENUMERATION>
|
|
123
|
+
<VALUES>
|
|
124
|
+
<ENUM-VALUE-REF>_RB77ZlyxEeumRtWSJE-orw</ENUM-VALUE-REF>
|
|
125
|
+
</VALUES>
|
|
126
|
+
<DEFINITION>
|
|
127
|
+
<ATTRIBUTE-DEFINITION-ENUMERATION-REF>_RB77blyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
|
|
128
|
+
</DEFINITION>
|
|
129
|
+
</ATTRIBUTE-VALUE-ENUMERATION>
|
|
130
|
+
</VALUES>
|
|
131
|
+
<TYPE>
|
|
132
|
+
<SPEC-OBJECT-TYPE-REF>_RB77alyxEeumRtWSJE-orw</SPEC-OBJECT-TYPE-REF>
|
|
133
|
+
</TYPE>
|
|
134
|
+
</SPEC-OBJECT>
|
|
135
|
+
<SPEC-OBJECT IDENTIFIER="_RB77f1yxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
136
|
+
<VALUES>
|
|
137
|
+
<ATTRIBUTE-VALUE-XHTML>
|
|
138
|
+
<DEFINITION>
|
|
139
|
+
<ATTRIBUTE-DEFINITION-XHTML-REF>_RB77a1yxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-XHTML-REF>
|
|
140
|
+
</DEFINITION>
|
|
141
|
+
<THE-VALUE>
|
|
142
|
+
<xhtml:p>Obj-06</xhtml:p>
|
|
143
|
+
</THE-VALUE>
|
|
144
|
+
</ATTRIBUTE-VALUE-XHTML>
|
|
145
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="no change">
|
|
146
|
+
<DEFINITION>
|
|
147
|
+
<ATTRIBUTE-DEFINITION-STRING-REF>_RB77bFyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-STRING-REF>
|
|
148
|
+
</DEFINITION>
|
|
149
|
+
</ATTRIBUTE-VALUE-STRING>
|
|
150
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="no change">
|
|
151
|
+
<DEFINITION>
|
|
152
|
+
<ATTRIBUTE-DEFINITION-STRING-REF>_RB77bVyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-STRING-REF>
|
|
153
|
+
</DEFINITION>
|
|
154
|
+
</ATTRIBUTE-VALUE-STRING>
|
|
155
|
+
<ATTRIBUTE-VALUE-ENUMERATION>
|
|
156
|
+
<VALUES>
|
|
157
|
+
<ENUM-VALUE-REF>_RB77ZlyxEeumRtWSJE-orw</ENUM-VALUE-REF>
|
|
158
|
+
</VALUES>
|
|
159
|
+
<DEFINITION>
|
|
160
|
+
<ATTRIBUTE-DEFINITION-ENUMERATION-REF>_RB77blyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
|
|
161
|
+
</DEFINITION>
|
|
162
|
+
</ATTRIBUTE-VALUE-ENUMERATION>
|
|
163
|
+
</VALUES>
|
|
164
|
+
<TYPE>
|
|
165
|
+
<SPEC-OBJECT-TYPE-REF>_RB77alyxEeumRtWSJE-orw</SPEC-OBJECT-TYPE-REF>
|
|
166
|
+
</TYPE>
|
|
167
|
+
</SPEC-OBJECT>
|
|
168
|
+
<SPEC-OBJECT IDENTIFIER="_RB77hlyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
169
|
+
<VALUES>
|
|
170
|
+
<ATTRIBUTE-VALUE-XHTML>
|
|
171
|
+
<DEFINITION>
|
|
172
|
+
<ATTRIBUTE-DEFINITION-XHTML-REF>_RB77a1yxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-XHTML-REF>
|
|
173
|
+
</DEFINITION>
|
|
174
|
+
<THE-VALUE>
|
|
175
|
+
<xhtml:p>Obj-07</xhtml:p>
|
|
176
|
+
</THE-VALUE>
|
|
177
|
+
</ATTRIBUTE-VALUE-XHTML>
|
|
178
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="no change">
|
|
179
|
+
<DEFINITION>
|
|
180
|
+
<ATTRIBUTE-DEFINITION-STRING-REF>_RB77bFyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-STRING-REF>
|
|
181
|
+
</DEFINITION>
|
|
182
|
+
</ATTRIBUTE-VALUE-STRING>
|
|
183
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="no change">
|
|
184
|
+
<DEFINITION>
|
|
185
|
+
<ATTRIBUTE-DEFINITION-STRING-REF>_RB77bVyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-STRING-REF>
|
|
186
|
+
</DEFINITION>
|
|
187
|
+
</ATTRIBUTE-VALUE-STRING>
|
|
188
|
+
<ATTRIBUTE-VALUE-ENUMERATION>
|
|
189
|
+
<VALUES>
|
|
190
|
+
<ENUM-VALUE-REF>_RB77ZlyxEeumRtWSJE-orw</ENUM-VALUE-REF>
|
|
191
|
+
</VALUES>
|
|
192
|
+
<DEFINITION>
|
|
193
|
+
<ATTRIBUTE-DEFINITION-ENUMERATION-REF>_RB77blyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
|
|
194
|
+
</DEFINITION>
|
|
195
|
+
</ATTRIBUTE-VALUE-ENUMERATION>
|
|
196
|
+
</VALUES>
|
|
197
|
+
<TYPE>
|
|
198
|
+
<SPEC-OBJECT-TYPE-REF>_RB77alyxEeumRtWSJE-orw</SPEC-OBJECT-TYPE-REF>
|
|
199
|
+
</TYPE>
|
|
200
|
+
</SPEC-OBJECT>
|
|
201
|
+
<SPEC-OBJECT IDENTIFIER="_RB77jVyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
202
|
+
<VALUES>
|
|
203
|
+
<ATTRIBUTE-VALUE-XHTML>
|
|
204
|
+
<DEFINITION>
|
|
205
|
+
<ATTRIBUTE-DEFINITION-XHTML-REF>_RB77a1yxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-XHTML-REF>
|
|
206
|
+
</DEFINITION>
|
|
207
|
+
<THE-VALUE>
|
|
208
|
+
<xhtml:p>Obj-08</xhtml:p>
|
|
209
|
+
</THE-VALUE>
|
|
210
|
+
</ATTRIBUTE-VALUE-XHTML>
|
|
211
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="no change">
|
|
212
|
+
<DEFINITION>
|
|
213
|
+
<ATTRIBUTE-DEFINITION-STRING-REF>_RB77bFyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-STRING-REF>
|
|
214
|
+
</DEFINITION>
|
|
215
|
+
</ATTRIBUTE-VALUE-STRING>
|
|
216
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="no change">
|
|
217
|
+
<DEFINITION>
|
|
218
|
+
<ATTRIBUTE-DEFINITION-STRING-REF>_RB77bVyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-STRING-REF>
|
|
219
|
+
</DEFINITION>
|
|
220
|
+
</ATTRIBUTE-VALUE-STRING>
|
|
221
|
+
<ATTRIBUTE-VALUE-ENUMERATION>
|
|
222
|
+
<VALUES>
|
|
223
|
+
<ENUM-VALUE-REF>_RB77ZlyxEeumRtWSJE-orw</ENUM-VALUE-REF>
|
|
224
|
+
</VALUES>
|
|
225
|
+
<DEFINITION>
|
|
226
|
+
<ATTRIBUTE-DEFINITION-ENUMERATION-REF>_RB77blyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
|
|
227
|
+
</DEFINITION>
|
|
228
|
+
</ATTRIBUTE-VALUE-ENUMERATION>
|
|
229
|
+
</VALUES>
|
|
230
|
+
<TYPE>
|
|
231
|
+
<SPEC-OBJECT-TYPE-REF>_RB77alyxEeumRtWSJE-orw</SPEC-OBJECT-TYPE-REF>
|
|
232
|
+
</TYPE>
|
|
233
|
+
</SPEC-OBJECT>
|
|
234
|
+
<SPEC-OBJECT IDENTIFIER="_RB77lFyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
235
|
+
<VALUES>
|
|
236
|
+
<ATTRIBUTE-VALUE-XHTML>
|
|
237
|
+
<DEFINITION>
|
|
238
|
+
<ATTRIBUTE-DEFINITION-XHTML-REF>_RB77a1yxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-XHTML-REF>
|
|
239
|
+
</DEFINITION>
|
|
240
|
+
<THE-VALUE>
|
|
241
|
+
<xhtml:p>Obj-09</xhtml:p>
|
|
242
|
+
</THE-VALUE>
|
|
243
|
+
</ATTRIBUTE-VALUE-XHTML>
|
|
244
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="no change">
|
|
245
|
+
<DEFINITION>
|
|
246
|
+
<ATTRIBUTE-DEFINITION-STRING-REF>_RB77bFyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-STRING-REF>
|
|
247
|
+
</DEFINITION>
|
|
248
|
+
</ATTRIBUTE-VALUE-STRING>
|
|
249
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="no change">
|
|
250
|
+
<DEFINITION>
|
|
251
|
+
<ATTRIBUTE-DEFINITION-STRING-REF>_RB77bVyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-STRING-REF>
|
|
252
|
+
</DEFINITION>
|
|
253
|
+
</ATTRIBUTE-VALUE-STRING>
|
|
254
|
+
<ATTRIBUTE-VALUE-ENUMERATION>
|
|
255
|
+
<VALUES>
|
|
256
|
+
<ENUM-VALUE-REF>_RB77ZlyxEeumRtWSJE-orw</ENUM-VALUE-REF>
|
|
257
|
+
</VALUES>
|
|
258
|
+
<DEFINITION>
|
|
259
|
+
<ATTRIBUTE-DEFINITION-ENUMERATION-REF>_RB77blyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
|
|
260
|
+
</DEFINITION>
|
|
261
|
+
</ATTRIBUTE-VALUE-ENUMERATION>
|
|
262
|
+
</VALUES>
|
|
263
|
+
<TYPE>
|
|
264
|
+
<SPEC-OBJECT-TYPE-REF>_RB77alyxEeumRtWSJE-orw</SPEC-OBJECT-TYPE-REF>
|
|
265
|
+
</TYPE>
|
|
266
|
+
</SPEC-OBJECT>
|
|
267
|
+
</SPEC-OBJECTS>
|
|
268
|
+
<SPECIFICATIONS>
|
|
269
|
+
<SPECIFICATION IDENTIFIER="_RB77m1yxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
270
|
+
<VALUES>
|
|
271
|
+
<ATTRIBUTE-VALUE-XHTML>
|
|
272
|
+
<DEFINITION>
|
|
273
|
+
<ATTRIBUTE-DEFINITION-XHTML-REF>_RB77cFyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-XHTML-REF>
|
|
274
|
+
</DEFINITION>
|
|
275
|
+
<THE-VALUE>
|
|
276
|
+
<xhtml:p>Spec1</xhtml:p>
|
|
277
|
+
</THE-VALUE>
|
|
278
|
+
</ATTRIBUTE-VALUE-XHTML>
|
|
279
|
+
</VALUES>
|
|
280
|
+
<TYPE>
|
|
281
|
+
<SPECIFICATION-TYPE-REF>_RB77b1yxEeumRtWSJE-orw</SPECIFICATION-TYPE-REF>
|
|
282
|
+
</TYPE>
|
|
283
|
+
<CHILDREN>
|
|
284
|
+
<SPEC-HIERARCHY IDENTIFIER="_RB77n1yxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
285
|
+
<OBJECT>
|
|
286
|
+
<SPEC-OBJECT-REF>_RB77cVyxEeumRtWSJE-orw</SPEC-OBJECT-REF>
|
|
287
|
+
</OBJECT>
|
|
288
|
+
</SPEC-HIERARCHY>
|
|
289
|
+
<SPEC-HIERARCHY IDENTIFIER="_RB77oFyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
290
|
+
<OBJECT>
|
|
291
|
+
<SPEC-OBJECT-REF>_RB77eFyxEeumRtWSJE-orw</SPEC-OBJECT-REF>
|
|
292
|
+
</OBJECT>
|
|
293
|
+
</SPEC-HIERARCHY>
|
|
294
|
+
<SPEC-HIERARCHY IDENTIFIER="_RB77oVyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
295
|
+
<OBJECT>
|
|
296
|
+
<SPEC-OBJECT-REF>_RB77f1yxEeumRtWSJE-orw</SPEC-OBJECT-REF>
|
|
297
|
+
</OBJECT>
|
|
298
|
+
</SPEC-HIERARCHY>
|
|
299
|
+
<SPEC-HIERARCHY IDENTIFIER="_RB77olyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
300
|
+
<OBJECT>
|
|
301
|
+
<SPEC-OBJECT-REF>_RB77hlyxEeumRtWSJE-orw</SPEC-OBJECT-REF>
|
|
302
|
+
</OBJECT>
|
|
303
|
+
</SPEC-HIERARCHY>
|
|
304
|
+
<SPEC-HIERARCHY IDENTIFIER="_RB77o1yxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
305
|
+
<OBJECT>
|
|
306
|
+
<SPEC-OBJECT-REF>_RB77jVyxEeumRtWSJE-orw</SPEC-OBJECT-REF>
|
|
307
|
+
</OBJECT>
|
|
308
|
+
</SPEC-HIERARCHY>
|
|
309
|
+
<SPEC-HIERARCHY IDENTIFIER="_RB77pFyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
310
|
+
<OBJECT>
|
|
311
|
+
<SPEC-OBJECT-REF>_RB77lFyxEeumRtWSJE-orw</SPEC-OBJECT-REF>
|
|
312
|
+
</OBJECT>
|
|
313
|
+
</SPEC-HIERARCHY>
|
|
314
|
+
</CHILDREN>
|
|
315
|
+
</SPECIFICATION>
|
|
316
|
+
<SPECIFICATION IDENTIFIER="_RB77pVyxEeumRtWSJE-orw" LAST-CHANGE="2012-04-07T01:51:37.112+02:00">
|
|
317
|
+
<VALUES>
|
|
318
|
+
<ATTRIBUTE-VALUE-XHTML>
|
|
319
|
+
<DEFINITION>
|
|
320
|
+
<ATTRIBUTE-DEFINITION-XHTML-REF>_RB77cFyxEeumRtWSJE-orw</ATTRIBUTE-DEFINITION-XHTML-REF>
|
|
321
|
+
</DEFINITION>
|
|
322
|
+
<THE-VALUE>
|
|
323
|
+
<xhtml:p>Spec2</xhtml:p>
|
|
324
|
+
</THE-VALUE>
|
|
325
|
+
</ATTRIBUTE-VALUE-XHTML>
|
|
326
|
+
</VALUES>
|
|
327
|
+
<TYPE>
|
|
328
|
+
<SPECIFICATION-TYPE-REF>_RB77b1yxEeumRtWSJE-orw</SPECIFICATION-TYPE-REF>
|
|
329
|
+
</TYPE>
|
|
330
|
+
</SPECIFICATION>
|
|
331
|
+
</SPECIFICATIONS>
|
|
332
|
+
</REQ-IF-CONTENT>
|
|
333
|
+
</CORE-CONTENT>
|
|
334
|
+
</REQ-IF>
|
|
Binary file
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
RSpec.describe Reqif::Datatypes do
|
|
2
|
+
let(:datatypes_xml) do
|
|
3
|
+
<<~XML
|
|
4
|
+
<DATATYPES xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd">
|
|
5
|
+
<DATATYPE-DEFINITION-STRING IDENTIFIER="dt1" LAST-CHANGE="2023-10-26T12:00:00Z" LONG-NAME="String Type" MAX-LENGTH="255"/>
|
|
6
|
+
<DATATYPE-DEFINITION-INTEGER IDENTIFIER="dt2" LAST-CHANGE="2023-10-26T12:00:00Z" LONG-NAME="Integer Type" MAX="100" MIN="0"/>
|
|
7
|
+
</DATATYPES>
|
|
8
|
+
XML
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
let(:datatypes) { described_class.from_xml(datatypes_xml) }
|
|
12
|
+
|
|
13
|
+
describe "data type definitions" do
|
|
14
|
+
it "parses string data type" do
|
|
15
|
+
string_type = datatypes.datatype_definition_string.first
|
|
16
|
+
expect(string_type.identifier).to eq("dt1")
|
|
17
|
+
expect(string_type.long_name).to eq("String Type")
|
|
18
|
+
expect(string_type.max_length).to eq(255)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "parses integer data type" do
|
|
22
|
+
integer_type = datatypes.datatype_definition_integer.first
|
|
23
|
+
expect(integer_type.identifier).to eq("dt2")
|
|
24
|
+
expect(integer_type.long_name).to eq("Integer Type")
|
|
25
|
+
expect(integer_type.max).to eq(100)
|
|
26
|
+
expect(integer_type.min).to eq(0)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe "Polarion Export" do
|
|
4
|
+
let(:xml_file) { File.read("spec/fixtures/polarion_export.xml") }
|
|
5
|
+
let(:reqif) { Reqif::ReqIf.from_xml(xml_file) }
|
|
6
|
+
|
|
7
|
+
it "parses Polarion export correctly" do
|
|
8
|
+
expect(reqif.the_header.req_if_header.req_if_tool_id).to eq("Polarion")
|
|
9
|
+
|
|
10
|
+
enum_type = reqif.core_content.req_if_content.datatypes.datatype_definition_enumeration.find do |d|
|
|
11
|
+
d.long_name == "Status"
|
|
12
|
+
end
|
|
13
|
+
expect(enum_type).not_to be_nil
|
|
14
|
+
expect(enum_type.specified_values.enum_value.map(&:long_name)).to contain_exactly(
|
|
15
|
+
"Draft", "Approved"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
spec_object = reqif.core_content.req_if_content.spec_objects.spec_object.first
|
|
19
|
+
xhtml_val = spec_object.values.attribute_value_xhtml.first
|
|
20
|
+
expect(xhtml_val.the_value).to be_a(Reqif::XhtmlContent)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe Reqif::ReqIfHeader do
|
|
4
|
+
let(:header_xml) do
|
|
5
|
+
<<~XML
|
|
6
|
+
<REQ-IF-HEADER xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" IDENTIFIER="_1234567890">
|
|
7
|
+
<COMMENT>Example ReqIF file</COMMENT>
|
|
8
|
+
<CREATION-TIME>2023-10-26T12:00:00Z</CREATION-TIME>
|
|
9
|
+
<REQ-IF-TOOL-ID>reqif-tool</REQ-IF-TOOL-ID>
|
|
10
|
+
<REQ-IF-VERSION>1.0</REQ-IF-VERSION>
|
|
11
|
+
<SOURCE-TOOL-ID>source-tool</SOURCE-TOOL-ID>
|
|
12
|
+
<TITLE>Requirements Document</TITLE>
|
|
13
|
+
</REQ-IF-HEADER>
|
|
14
|
+
XML
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
let(:header) { described_class.from_xml(header_xml) }
|
|
18
|
+
|
|
19
|
+
describe "attributes" do
|
|
20
|
+
it "parses all header attributes" do
|
|
21
|
+
expect(header.comment).to eq("Example ReqIF file")
|
|
22
|
+
expect(header.creation_time).to be_a(Reqif::HighPrecisionDateTime)
|
|
23
|
+
expect(header.creation_time.iso8601).to eq("2023-10-26T12:00:00+00:00")
|
|
24
|
+
expect(header.identifier).to eq("_1234567890")
|
|
25
|
+
expect(header.req_if_tool_id).to eq("reqif-tool")
|
|
26
|
+
expect(header.req_if_version).to eq("1.0")
|
|
27
|
+
expect(header.source_tool_id).to eq("source-tool")
|
|
28
|
+
expect(header.title).to eq("Requirements Document")
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "spec_helper"
|
|
4
|
+
|
|
5
|
+
RSpec.describe Reqif::ReqIf do
|
|
6
|
+
let(:xml_string) { File.read("spec/fixtures/eclipse_rmf_sample.reqif") }
|
|
7
|
+
let(:parsed) { described_class.from_xml(xml_string) }
|
|
8
|
+
|
|
9
|
+
describe ".from_xml" do
|
|
10
|
+
it "parses ReqIF XML correctly" do
|
|
11
|
+
expect(parsed).to be_a(described_class)
|
|
12
|
+
expect(parsed.the_header.req_if_header).to be_a(Reqif::ReqIfHeader)
|
|
13
|
+
expect(parsed.core_content.req_if_content).to be_a(Reqif::ReqIfContent)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "maintains XML namespaces" do
|
|
17
|
+
generated = parsed.to_xml
|
|
18
|
+
# Eclipse RMF fixtures use 20101201 namespace which should be preserved
|
|
19
|
+
expect(generated).to include('xmlns="http://www.omg.org/spec/ReqIF/20101201"')
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "#to_xml" do
|
|
24
|
+
it "generates valid ReqIF XML" do
|
|
25
|
+
generated = parsed.to_xml(
|
|
26
|
+
pretty: true,
|
|
27
|
+
declaration: true,
|
|
28
|
+
encoding: "utf-8",
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
# cleaned_xml_string = xml_string
|
|
32
|
+
# .gsub(/^<\?xml-model.*\n/, '')
|
|
33
|
+
# .gsub(/^<\?xml-stylesheet.*\n/, '')
|
|
34
|
+
|
|
35
|
+
# puts "original---------"
|
|
36
|
+
# puts cleaned_xml_string
|
|
37
|
+
# puts "------"
|
|
38
|
+
# puts generated
|
|
39
|
+
|
|
40
|
+
expect(generated).to be_xml_equivalent_to(xml_string)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe Reqif::SpecObject do
|
|
4
|
+
let(:spec_object_xml) do
|
|
5
|
+
<<~XML
|
|
6
|
+
<SPEC-OBJECT xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" IDENTIFIER="so1" LAST-CHANGE="2023-10-26T12:00:00Z" LONG-NAME="Login Requirement">
|
|
7
|
+
<TYPE>
|
|
8
|
+
<SPEC-OBJECT-TYPE-REF>st1</SPEC-OBJECT-TYPE-REF>
|
|
9
|
+
</TYPE>
|
|
10
|
+
<VALUES>
|
|
11
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="System shall provide login functionality">
|
|
12
|
+
<DEFINITION>
|
|
13
|
+
<ATTRIBUTE-DEFINITION-STRING-REF>ad1</ATTRIBUTE-DEFINITION-STRING-REF>
|
|
14
|
+
</DEFINITION>
|
|
15
|
+
</ATTRIBUTE-VALUE-STRING>
|
|
16
|
+
</VALUES>
|
|
17
|
+
</SPEC-OBJECT>
|
|
18
|
+
XML
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
let(:spec_object) { described_class.from_xml(spec_object_xml) }
|
|
22
|
+
|
|
23
|
+
describe "spec object attributes" do
|
|
24
|
+
it "parses basic attributes" do
|
|
25
|
+
expect(spec_object.identifier).to eq("so1")
|
|
26
|
+
expect(spec_object.long_name).to eq("Login Requirement")
|
|
27
|
+
expect(spec_object.type.spec_object_type_ref).to eq("st1")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "parses values" do
|
|
31
|
+
value = spec_object.values.attribute_value_string.first
|
|
32
|
+
expect(value.the_value).to eq("System shall provide login functionality")
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe Reqif::SpecRelations do
|
|
4
|
+
let(:spec_relations_xml) do
|
|
5
|
+
<<~XML
|
|
6
|
+
<SPEC-RELATIONS xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd">
|
|
7
|
+
<SPEC-RELATION IDENTIFIER="rel1" LAST-CHANGE="2023-10-26T12:00:00Z">
|
|
8
|
+
<SOURCE>
|
|
9
|
+
<SPEC-OBJECT-REF>so1</SPEC-OBJECT-REF>
|
|
10
|
+
</SOURCE>
|
|
11
|
+
<TARGET>
|
|
12
|
+
<SPEC-OBJECT-REF>so2</SPEC-OBJECT-REF>
|
|
13
|
+
</TARGET>
|
|
14
|
+
<TYPE>
|
|
15
|
+
<SPEC-RELATION-TYPE-REF>rt1</SPEC-RELATION-TYPE-REF>
|
|
16
|
+
</TYPE>
|
|
17
|
+
</SPEC-RELATION>
|
|
18
|
+
</SPEC-RELATIONS>
|
|
19
|
+
XML
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
let(:spec_relations) { described_class.from_xml(spec_relations_xml) }
|
|
23
|
+
|
|
24
|
+
describe "spec relations" do
|
|
25
|
+
it "parses relation attributes" do
|
|
26
|
+
relation = spec_relations.spec_relation.first
|
|
27
|
+
expect(relation.identifier).to eq("rel1")
|
|
28
|
+
expect(relation.source.spec_object_ref).to eq("so1")
|
|
29
|
+
expect(relation.target.spec_object_ref).to eq("so2")
|
|
30
|
+
expect(relation.type.spec_relation_type_ref).to eq("rt1")
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe Reqif::SpecTypes do
|
|
4
|
+
let(:spec_types_xml) do
|
|
5
|
+
<<~XML
|
|
6
|
+
<SPEC-TYPES xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd">
|
|
7
|
+
<SPEC-OBJECT-TYPE IDENTIFIER="st1" LAST-CHANGE="2023-10-26T12:00:00Z" LONG-NAME="Requirement Type">
|
|
8
|
+
<SPEC-ATTRIBUTES>
|
|
9
|
+
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="ad1" LAST-CHANGE="2023-10-26T12:00:00Z" LONG-NAME="Description">
|
|
10
|
+
<TYPE>
|
|
11
|
+
<DATATYPE-DEFINITION-STRING-REF>dt1</DATATYPE-DEFINITION-STRING-REF>
|
|
12
|
+
</TYPE>
|
|
13
|
+
<DEFAULT-VALUE>
|
|
14
|
+
<ATTRIBUTE-VALUE-STRING THE-VALUE="No description provided"/>
|
|
15
|
+
</DEFAULT-VALUE>
|
|
16
|
+
</ATTRIBUTE-DEFINITION-STRING>
|
|
17
|
+
</SPEC-ATTRIBUTES>
|
|
18
|
+
</SPEC-OBJECT-TYPE>
|
|
19
|
+
</SPEC-TYPES>
|
|
20
|
+
XML
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
let(:spec_types) { described_class.from_xml(spec_types_xml) }
|
|
24
|
+
|
|
25
|
+
describe "specification types" do
|
|
26
|
+
it "parses spec object type" do
|
|
27
|
+
spec_object_type = spec_types.spec_object_type.first
|
|
28
|
+
expect(spec_object_type.identifier).to eq("st1")
|
|
29
|
+
expect(spec_object_type.long_name).to eq("Requirement Type")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "parses attribute definitions" do
|
|
33
|
+
attr_def = spec_types.spec_object_type.first.spec_attributes.attribute_definition_string.first
|
|
34
|
+
expect(attr_def.identifier).to eq("ad1")
|
|
35
|
+
expect(attr_def.long_name).to eq("Description")
|
|
36
|
+
expect(attr_def.type.datatype_definition_string_ref).to eq("dt1")
|
|
37
|
+
expect(attr_def.default_value.attribute_value_string.the_value).to eq("No description provided")
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe Reqif::Specifications do
|
|
4
|
+
let(:specifications_xml) do
|
|
5
|
+
<<~XML
|
|
6
|
+
<SPECIFICATIONS xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd">
|
|
7
|
+
<SPECIFICATION IDENTIFIER="spec1" LAST-CHANGE="2023-10-26T12:00:00Z" LONG-NAME="System Requirements">
|
|
8
|
+
<CHILDREN>
|
|
9
|
+
<SPEC-HIERARCHY IDENTIFIER="sh1" LAST-CHANGE="2023-10-26T12:00:00Z">
|
|
10
|
+
<OBJECT>
|
|
11
|
+
<SPEC-OBJECT-REF>so1</SPEC-OBJECT-REF>
|
|
12
|
+
</OBJECT>
|
|
13
|
+
</SPEC-HIERARCHY>
|
|
14
|
+
</CHILDREN>
|
|
15
|
+
</SPECIFICATION>
|
|
16
|
+
</SPECIFICATIONS>
|
|
17
|
+
XML
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
let(:specifications) { described_class.from_xml(specifications_xml) }
|
|
21
|
+
|
|
22
|
+
describe "specifications" do
|
|
23
|
+
it "parses specification" do
|
|
24
|
+
spec = specifications.specification.first
|
|
25
|
+
expect(spec.identifier).to eq("spec1")
|
|
26
|
+
expect(spec.long_name).to eq("System Requirements")
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "parses spec hierarchy" do
|
|
30
|
+
hierarchy = specifications.specification.first.children.spec_hierarchy.first
|
|
31
|
+
expect(hierarchy.identifier).to eq("sh1")
|
|
32
|
+
expect(hierarchy.object.spec_object_ref).to eq("so1")
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe Reqif::ToolExtensions do
|
|
4
|
+
let(:tool_extensions_xml) do
|
|
5
|
+
<<~XML
|
|
6
|
+
<TOOL-EXTENSIONS xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd">
|
|
7
|
+
<REQ-IF-TOOL-EXTENSION xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd">
|
|
8
|
+
<DOORS-RIF-DEFINITION xmlns="http://www.ibm.com/rdm/doors/REQIF/xmlns/1.0">
|
|
9
|
+
<IDENTIFIER>_test-id</IDENTIFIER>
|
|
10
|
+
<MODULE-DEFINITION>
|
|
11
|
+
<DDC-MODE>DDC_FULL_MODULE</DDC-MODE>
|
|
12
|
+
</MODULE-DEFINITION>
|
|
13
|
+
</DOORS-RIF-DEFINITION>
|
|
14
|
+
</REQ-IF-TOOL-EXTENSION>
|
|
15
|
+
</TOOL-EXTENSIONS>
|
|
16
|
+
XML
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
let(:tool_extensions) { described_class.from_xml(tool_extensions_xml) }
|
|
20
|
+
|
|
21
|
+
describe "tool extensions" do
|
|
22
|
+
it "parses tool extension data" do
|
|
23
|
+
ext = tool_extensions.req_if_tool_extension.first
|
|
24
|
+
expect(ext.doors_rif_definition.identifier.content).to eq("_test-id")
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|