public void TraverseNodeTypesInheritance_Traverses_Nodes_From_Root_To_Its_Derived_Node_Types() { // Arrange var serviceTemplate = new ToscaServiceTemplate(); serviceTemplate.NodeTypes.Add("device", new ToscaNodeType()); serviceTemplate.NodeTypes.Add("switch", new ToscaNodeType { DerivedFrom = "device" }); serviceTemplate.NodeTypes.Add("router", new ToscaNodeType { DerivedFrom = "device" }); var cloudServiceArchive = new ToscaCloudServiceArchive(new ToscaMetadata()); cloudServiceArchive.AddToscaServiceTemplate("sample.yaml", serviceTemplate); // Act var discoveredNodeTypeNames = new List <string>(); cloudServiceArchive.TraverseNodeTypesInheritance( (nodeTypeName, nodeType) => { discoveredNodeTypeNames.Add(nodeTypeName); }); // Assert discoveredNodeTypeNames.ShouldBeEquivalentTo(new[] { "tosca.nodes.Root", "tosca.nodes.BlockStorage", "tosca.nodes.Compute", "device", "switch", "router" }); }