Path:
tests/unit/strictdoc/backend/sdoc/test_dsl_passthrough_relations.py
Lines:
188
Non-empty lines:
155
Non-empty lines covered with requirements:
155 / 155 (100.0%)
Functions:
4
Functions covered by requirements:
4 / 4 (100.0%)
- "2.2. Identical SDoc content by import/export roundtrip" (REQUIREMENT)
- "2.2. Identical SDoc content by import/export roundtrip" (REQUIREMENT)
1
"""2
@relation(SDOC-SRS-136, scope=file)3
"""4
5
from strictdoc.backend.sdoc.models.document import SDocDocument
6
from strictdoc.backend.sdoc.reader import SDReader
7
from strictdoc.backend.sdoc.writer import SDWriter
8
9
10
def test_001_parent_relation_without_role(default_project_config):
11
input_sdoc = """
12
[DOCUMENT]13
TITLE: Test Doc14
15
[GRAMMAR]16
ELEMENTS:17
- TAG: TEXT18
FIELDS:19
- TITLE: STATEMENT20
TYPE: String21
REQUIRED: True22
- TAG: REQUIREMENT23
FIELDS:24
- TITLE: STATEMENT25
TYPE: String26
REQUIRED: True27
RELATIONS:28
- TYPE: Parent29
30
[REQUIREMENT]31
STATEMENT: >>>32
This is a statement.33
<<<34
RELATIONS:35
- TYPE: Parent36
VALUE: ID-00137
""".lstrip()
38
39
reader = SDReader()
40
41
document = reader.read(input_sdoc)
42
assert isinstance(document, SDocDocument)
43
44
writer = SDWriter(default_project_config)
45
output = writer.write(document)
46
47
assert input_sdoc == output
48
49
50
def test_002_parent_relation_with_refines_role(default_project_config):
51
input_sdoc = """
52
[DOCUMENT]53
TITLE: Test Doc54
55
[GRAMMAR]56
ELEMENTS:57
- TAG: TEXT58
FIELDS:59
- TITLE: STATEMENT60
TYPE: String61
REQUIRED: True62
- TAG: REQUIREMENT63
FIELDS:64
- TITLE: STATEMENT65
TYPE: String66
REQUIRED: True67
RELATIONS:68
- TYPE: Parent69
ROLE: Refines70
71
[REQUIREMENT]72
STATEMENT: >>>73
This is a statement.74
<<<75
RELATIONS:76
- TYPE: Parent77
VALUE: ID-00178
ROLE: Refines79
""".lstrip()
80
81
reader = SDReader()
82
83
document = reader.read(input_sdoc)
84
assert isinstance(document, SDocDocument)
85
86
writer = SDWriter(default_project_config)
87
output = writer.write(document)
88
89
assert input_sdoc == output
90
91
92
def test_003_file_relations(default_project_config):
93
input_sdoc = """
94
[DOCUMENT]95
TITLE: Test Doc96
97
[GRAMMAR]98
ELEMENTS:99
- TAG: TEXT100
FIELDS:101
- TITLE: STATEMENT102
TYPE: String103
REQUIRED: True104
- TAG: REQUIREMENT105
FIELDS:106
- TITLE: STATEMENT107
TYPE: String108
REQUIRED: True109
RELATIONS:110
- TYPE: Parent111
ROLE: Refines112
113
[REQUIREMENT]114
STATEMENT: >>>115
This is a statement.116
<<<117
RELATIONS:118
- TYPE: File119
VALUE: tools/testing/selftests/devmem/tests.c120
- TYPE: File121
VALUE: tools/testing/selftests/devmem/devmem.c122
LINE_RANGE: 27, 32123
- TYPE: File124
ROLE: TestDefinition125
VALUE: tools/testing/selftests/devmem/devmem.c126
FUNCTION: test_function127
- TYPE: File128
ROLE: TestDefinition129
VALUE: tools/testing/selftests/devmem/devmem.c130
CLASS: FooClass131
""".lstrip()
132
133
reader = SDReader()
134
135
document = reader.read(input_sdoc)
136
assert isinstance(document, SDocDocument)
137
138
writer = SDWriter(default_project_config)
139
output = writer.write(document)
140
141
assert input_sdoc == output
142
143
144
def test_004_file_relations_element_and_id(default_project_config):
145
input_sdoc = """
146
[DOCUMENT]147
TITLE: Test Doc148
149
[GRAMMAR]150
ELEMENTS:151
- TAG: TEXT152
FIELDS:153
- TITLE: STATEMENT154
TYPE: String155
REQUIRED: True156
- TAG: REQUIREMENT157
FIELDS:158
- TITLE: STATEMENT159
TYPE: String160
REQUIRED: True161
RELATIONS:162
- TYPE: File163
164
[REQUIREMENT]165
STATEMENT: >>>166
This is a statement.167
<<<168
RELATIONS:169
- TYPE: File170
ROLE: TestDefinition171
PATH: tools/testing/selftests/devmem/devmem.c172
ELEMENT: Function173
ID: test_function174
HASH: abc123175
- TYPE: File176
PATH: tools/testing/selftests/devmem/other.c177
ID: item_without_element178
""".lstrip()
179
180
reader = SDReader()
181
182
document = reader.read(input_sdoc)
183
assert isinstance(document, SDocDocument)
184
185
writer = SDWriter(default_project_config)
186
output = writer.write(document)
187
188
assert input_sdoc == output