@@ -131,7 +131,8 @@ def test_empty_basic_component(self, mock_uuid: Mock) -> None:
131
131
self .assertSetEqual (c .external_references , set ())
132
132
self .assertFalse (c .properties )
133
133
self .assertIsNone (c .release_notes )
134
-
134
+ self .assertEqual (0 , len (c .components ))
135
+ self .assertEqual (0 , len (c .get_all_nested_components ()))
135
136
self .assertEqual (len (c .get_vulnerabilities ()), 0 )
136
137
137
138
@patch ('cyclonedx.model.bom_ref.uuid4' , return_value = '6f266d1c-760f-4552-ae3b-41a9b74232fa' )
@@ -318,6 +319,28 @@ def test_sort(self) -> None:
318
319
expected_components = reorder (components , expected_order )
319
320
self .assertListEqual (sorted_components , expected_components )
320
321
322
+ def test_nested_components_1 (self ) -> None :
323
+ comp_b = Component (name = "comp_b" , version = "1.0.0" )
324
+ comp_c = Component (name = "comp_c" , version = "1.0.0" )
325
+ comp_b .components .add (comp_c )
326
+ comp_b .dependencies .add (comp_c .bom_ref )
327
+
328
+ self .assertEqual (1 , len (comp_b .components ))
329
+ self .assertEqual (2 , len (comp_b .get_all_nested_components (include_self = True )))
330
+ self .assertEqual (1 , len (comp_b .get_all_nested_components (include_self = False )))
331
+
332
+ def test_nested_components_2 (self ) -> None :
333
+ comp_a = Component (name = "comp_a" , version = "1.2.3" )
334
+ comp_b = Component (name = "comp_b" , version = "1.0.0" )
335
+ comp_c = Component (name = "comp_c" , version = "1.0.0" )
336
+ comp_b .components .add (comp_c )
337
+ comp_b .dependencies .add (comp_c .bom_ref )
338
+ comp_b .components .add (comp_a )
339
+
340
+ self .assertEqual (2 , len (comp_b .components ))
341
+ self .assertEqual (3 , len (comp_b .get_all_nested_components (include_self = True )))
342
+ self .assertEqual (2 , len (comp_b .get_all_nested_components (include_self = False )))
343
+
321
344
322
345
class TestModelComponentEvidence (TestCase ):
323
346
0 commit comments