private void GenerateScopeTree(DHCPv4Scope scope, ICollection <DHCPv4ScopeTreeViewItem> parentChildren) { List <DHCPv4ScopeTreeViewItem> childItems = new List <DHCPv4ScopeTreeViewItem>(); var node = new DHCPv4ScopeTreeViewItem { Id = scope.Id, StartAddress = scope.AddressRelatedProperties.Start.ToString(), EndAddress = scope.AddressRelatedProperties.End.ToString(), Name = scope.Name, ChildScopes = childItems, ExcludedAddresses = scope.AddressRelatedProperties.ExcludedAddresses.Select(x => x.ToString()).ToArray(), SubnetMask = scope.AddressRelatedProperties.Mask == null ? new Byte?() : (Byte)scope.AddressRelatedProperties.Mask.GetSlashNotation(), FirstGatewayAddress = (scope.Properties?.Properties ?? Array.Empty <DHCPv4ScopeProperty>()).OfType <DHCPv4AddressListScopeProperty>().Where(x => x.OptionIdentifier == (Byte)DHCPv4OptionTypes.Router).Select(x => x.Addresses.First().ToString()).FirstOrDefault(), }; parentChildren.Add(node); if (scope.GetChildScopes().Any()) { foreach (var item in scope.GetChildScopes()) { GenerateScopeTree(item, childItems); } } }
private void CheckTreeItem(DHCPv4Scope item, DHCPv4ScopeTreeViewItem viewItem) { Assert.Equal(item.Name, viewItem.Name); Assert.Equal(item.Id, viewItem.Id); Assert.Equal(item.AddressRelatedProperties.Start.ToString(), viewItem.StartAddress); Assert.Equal(item.AddressRelatedProperties.End.ToString(), viewItem.EndAddress); Assert.Equal(item.AddressRelatedProperties.ExcludedAddresses.Select(x => x.ToString()).ToArray(), viewItem.ExcludedAddresses); Assert.Equal((item.Properties?.Properties ?? Array.Empty <DHCPv4ScopeProperty>()).Where(x => x.OptionIdentifier == (Byte)DHCPv4OptionTypes.Router).Cast <DHCPv4AddressListScopeProperty>().Select(x => x.Addresses.First().ToString()).FirstOrDefault(), viewItem.FirstGatewayAddress); if (item.GetChildScopes().Any() == true) { Assert.Equal(item.GetChildScopes().Count(), viewItem.ChildScopes.Count()); Int32 index = 0; foreach (var childScope in item.GetChildScopes()) { var childViewItem = viewItem.ChildScopes.ElementAt(index); CheckTreeItem(childScope, childViewItem); index++; } } else { Assert.Empty(viewItem.ChildScopes); } }
private void GoThroughScopeTree(DHCPv4ScopeTreeViewItem item, Int32 depth, ICollection <(DHCPv4ScopeTreeViewItem item, Int32 depth)> result)