StrictDoc Documentation
tests/unit/strictdoc/backend/sdoc/test_dsl_passthrough_relations.py
Source file coverage
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%)
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 Doc
14
 
15
[GRAMMAR]
16
ELEMENTS:
17
- TAG: TEXT
18
  FIELDS:
19
  - TITLE: STATEMENT
20
    TYPE: String
21
    REQUIRED: True
22
- TAG: REQUIREMENT
23
  FIELDS:
24
  - TITLE: STATEMENT
25
    TYPE: String
26
    REQUIRED: True
27
  RELATIONS:
28
  - TYPE: Parent
29
 
30
[REQUIREMENT]
31
STATEMENT: >>>
32
This is a statement.
33
<<<
34
RELATIONS:
35
- TYPE: Parent
36
  VALUE: ID-001
37
""".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 Doc
54
 
55
[GRAMMAR]
56
ELEMENTS:
57
- TAG: TEXT
58
  FIELDS:
59
  - TITLE: STATEMENT
60
    TYPE: String
61
    REQUIRED: True
62
- TAG: REQUIREMENT
63
  FIELDS:
64
  - TITLE: STATEMENT
65
    TYPE: String
66
    REQUIRED: True
67
  RELATIONS:
68
  - TYPE: Parent
69
    ROLE: Refines
70
 
71
[REQUIREMENT]
72
STATEMENT: >>>
73
This is a statement.
74
<<<
75
RELATIONS:
76
- TYPE: Parent
77
  VALUE: ID-001
78
  ROLE: Refines
79
""".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 Doc
96
 
97
[GRAMMAR]
98
ELEMENTS:
99
- TAG: TEXT
100
  FIELDS:
101
  - TITLE: STATEMENT
102
    TYPE: String
103
    REQUIRED: True
104
- TAG: REQUIREMENT
105
  FIELDS:
106
  - TITLE: STATEMENT
107
    TYPE: String
108
    REQUIRED: True
109
  RELATIONS:
110
  - TYPE: Parent
111
    ROLE: Refines
112
 
113
[REQUIREMENT]
114
STATEMENT: >>>
115
This is a statement.
116
<<<
117
RELATIONS:
118
- TYPE: File
119
  VALUE: tools/testing/selftests/devmem/tests.c
120
- TYPE: File
121
  VALUE: tools/testing/selftests/devmem/devmem.c
122
  LINE_RANGE: 27, 32
123
- TYPE: File
124
  ROLE: TestDefinition
125
  VALUE: tools/testing/selftests/devmem/devmem.c
126
  FUNCTION: test_function
127
- TYPE: File
128
  ROLE: TestDefinition
129
  VALUE: tools/testing/selftests/devmem/devmem.c
130
  CLASS: FooClass
131
""".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 Doc
148
 
149
[GRAMMAR]
150
ELEMENTS:
151
- TAG: TEXT
152
  FIELDS:
153
  - TITLE: STATEMENT
154
    TYPE: String
155
    REQUIRED: True
156
- TAG: REQUIREMENT
157
  FIELDS:
158
  - TITLE: STATEMENT
159
    TYPE: String
160
    REQUIRED: True
161
  RELATIONS:
162
  - TYPE: File
163
 
164
[REQUIREMENT]
165
STATEMENT: >>>
166
This is a statement.
167
<<<
168
RELATIONS:
169
- TYPE: File
170
  ROLE: TestDefinition
171
  PATH: tools/testing/selftests/devmem/devmem.c
172
  ELEMENT: Function
173
  ID: test_function
174
  HASH: abc123
175
- TYPE: File
176
  PATH: tools/testing/selftests/devmem/other.c
177
  ID: item_without_element
178
""".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