|
18 | 18 | from decimal import Decimal |
19 | 19 | from unittest import TestCase |
20 | 20 |
|
| 21 | +from cyclonedx.exception.model import InvalidConfidenceException |
21 | 22 | from cyclonedx.model import Copyright |
22 | 23 | from cyclonedx.model.component_evidence import ( |
23 | 24 | AnalysisTechnique, |
24 | 25 | CallStack, |
| 26 | + CallStackFrame, |
25 | 27 | ComponentEvidence, |
26 | 28 | Identity, |
27 | 29 | IdentityField, |
28 | 30 | Method, |
29 | 31 | Occurrence, |
30 | | - CallStackFrame, |
31 | 32 | ) |
32 | | -from cyclonedx.exception.model import InvalidConfidenceException |
33 | 33 |
|
34 | 34 |
|
35 | 35 | class TestModelComponentEvidence(TestCase): |
@@ -100,36 +100,6 @@ def test_occurrences(self) -> None: |
100 | 100 | self.assertEqual(len(ce.occurrences), 1) |
101 | 101 | self.assertEqual(ce.occurrences.pop().line, 42) |
102 | 102 |
|
103 | | - def test_CallStackFrame(self) -> None: |
104 | | - # Test CallStackFrame with required fields |
105 | | - frame = CallStackFrame( |
106 | | - package='com.example', |
107 | | - module='app', |
108 | | - function='main', |
109 | | - parameters=['arg1', 'arg2'], |
110 | | - line=1, |
111 | | - column=10, |
112 | | - full_filename='/path/to/file.py' |
113 | | - ) |
114 | | - self.assertEqual(frame.package, 'com.example') |
115 | | - self.assertEqual(frame.module, 'app') |
116 | | - self.assertEqual(frame.function, 'main') |
117 | | - self.assertEqual(len(frame.parameters), 2) |
118 | | - self.assertEqual(frame.line, 1) |
119 | | - self.assertEqual(frame.column, 10) |
120 | | - self.assertEqual(frame.full_filename, '/path/to/file.py') |
121 | | - |
122 | | - def test_CallStackFrame_module_required(self) -> None: |
123 | | - """Test that module is the only required field""" |
124 | | - frame = CallStackFrame(module='app') # Only mandatory field |
125 | | - self.assertEqual(frame.module, 'app') |
126 | | - self.assertIsNone(frame.package) |
127 | | - self.assertIsNone(frame.function) |
128 | | - self.assertEqual(len(frame.parameters), 0) |
129 | | - self.assertIsNone(frame.line) |
130 | | - self.assertIsNone(frame.column) |
131 | | - self.assertIsNone(frame.full_filename) |
132 | | - |
133 | 103 | def test_callstack(self) -> None: |
134 | 104 | frame = CallStackFrame( |
135 | 105 | package='com.example', |
@@ -230,3 +200,36 @@ def test_not_same_1(self) -> None: |
230 | 200 | ce_2 = ComponentEvidence(copyright=[Copyright(text='Commercial 2')]) |
231 | 201 | self.assertNotEqual(hash(ce_1), hash(ce_2)) |
232 | 202 | self.assertFalse(ce_1 == ce_2) |
| 203 | + |
| 204 | + |
| 205 | +class TestModelCallStackFrame(TestCase): |
| 206 | + |
| 207 | + def test_fields(self) -> None: |
| 208 | + # Test CallStackFrame with required fields |
| 209 | + frame = CallStackFrame( |
| 210 | + package='com.example', |
| 211 | + module='app', |
| 212 | + function='main', |
| 213 | + parameters=['arg1', 'arg2'], |
| 214 | + line=1, |
| 215 | + column=10, |
| 216 | + full_filename='/path/to/file.py' |
| 217 | + ) |
| 218 | + self.assertEqual(frame.package, 'com.example') |
| 219 | + self.assertEqual(frame.module, 'app') |
| 220 | + self.assertEqual(frame.function, 'main') |
| 221 | + self.assertEqual(len(frame.parameters), 2) |
| 222 | + self.assertEqual(frame.line, 1) |
| 223 | + self.assertEqual(frame.column, 10) |
| 224 | + self.assertEqual(frame.full_filename, '/path/to/file.py') |
| 225 | + |
| 226 | + def test_module_required(self) -> None: |
| 227 | + """Test that module is the only required field""" |
| 228 | + frame = CallStackFrame(module='app') # Only mandatory field |
| 229 | + self.assertEqual(frame.module, 'app') |
| 230 | + self.assertIsNone(frame.package) |
| 231 | + self.assertIsNone(frame.function) |
| 232 | + self.assertEqual(len(frame.parameters), 0) |
| 233 | + self.assertIsNone(frame.line) |
| 234 | + self.assertIsNone(frame.column) |
| 235 | + self.assertIsNone(frame.full_filename) |
0 commit comments