@@ -131,7 +131,8 @@ def test_empty_basic_component(self, mock_uuid: Mock) -> None:
131131 self .assertSetEqual (c .external_references , set ())
132132 self .assertFalse (c .properties )
133133 self .assertIsNone (c .release_notes )
134-
134+ self .assertEqual (0 , len (c .components ))
135+ self .assertEqual (0 , len (c .get_all_nested_components ()))
135136 self .assertEqual (len (c .get_vulnerabilities ()), 0 )
136137
137138 @patch ('cyclonedx.model.bom_ref.uuid4' , return_value = '6f266d1c-760f-4552-ae3b-41a9b74232fa' )
@@ -318,6 +319,28 @@ def test_sort(self) -> None:
318319 expected_components = reorder (components , expected_order )
319320 self .assertListEqual (sorted_components , expected_components )
320321
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+
321344
322345class TestModelComponentEvidence (TestCase ):
323346
0 commit comments