private DHCPv4ScopePropertyResponse GetScopePropertyResponse(DHCPv4ScopeProperty property) { return(property switch { DHCPv4AddressListScopeProperty item => new DHCPv4AddressListScopePropertyResponse { Addresses = item.Addresses.Select(x => x.ToString()).ToList(), OptionCode = item.OptionIdentifier, Type = item.ValueType, }, DHCPv4AddressScopeProperty item => new DHCPv4AddressScopePropertyResponse { Value = item.Address.ToString(), OptionCode = item.OptionIdentifier, Type = item.ValueType, }, DHCPv4BooleanScopeProperty item => new DHCPv4BooleanScopePropertyResponse { Value = item.Value, OptionCode = item.OptionIdentifier, Type = item.ValueType, }, DHCPv4NumericValueScopeProperty item => new DHCPv4NumericScopePropertyResponse { Value = item.Value, NumericType = item.NumericType, Type = item.ValueType, OptionCode = item.OptionIdentifier, }, DHCPv4TextScopeProperty item => new DHCPv4TextScopePropertyResponse { Value = item.Value, OptionCode = item.OptionIdentifier, Type = item.ValueType, }, DHCPv4TimeScopeProperty item => new DHCPv4TimeScopePropertyResponse { Value = item.Value, OptionCode = item.OptionIdentifier, Type = item.ValueType, }, _ => throw new NotImplementedException(), });
public static void ChecKIfPropertyCorrelatesToOption(DHCPv4ScopeProperty property, DHCPv4PacketOption option) { Assert.NotNull(property); Assert.NotNull(option); Assert.Equal(property.OptionIdentifier, option.OptionType); if (property is DHCPv4AddressListScopeProperty castedProperty7) { Assert.IsAssignableFrom<DHCPv4PacketAddressListOption>(option); DHCPv4PacketAddressListOption castedOption = (DHCPv4PacketAddressListOption)option; Assert.Equal(castedProperty7.Addresses.OrderBy(x => x), castedOption.Addresses.OrderBy(x => x)); } else if (property is DHCPv4AddressScopeProperty castedProperty6) { Assert.IsAssignableFrom<DHCPv4PacketAddressOption>(option); DHCPv4PacketAddressOption castedOption = (DHCPv4PacketAddressOption)option; Assert.Equal(castedProperty6.Address, castedOption.Address); } else if (property is DHCPv4BooleanScopeProperty castedProperty3) { Assert.IsAssignableFrom<DHCPv4PacketBooleanOption>(option); DHCPv4PacketBooleanOption castedOption = (DHCPv4PacketBooleanOption)option; Assert.Equal(castedProperty3.Value, castedOption.Value); } else if (property is DHCPv4BooleanScopeProperty castedProperty2) { Assert.IsAssignableFrom<DHCPv4PacketBooleanOption>(option); DHCPv4PacketBooleanOption castedOption = (DHCPv4PacketBooleanOption)option; Assert.Equal(castedProperty2.Value, castedOption.Value); } else if (property is DHCPv4NumericValueScopeProperty castedProperty) { Int64 value = 0; switch (castedProperty.NumericType) { case DHCPv4NumericValueTypes.Byte: Assert.IsAssignableFrom<DHCPv4PacketByteOption>(option); value = ((DHCPv4PacketByteOption)option).Value; break; case DHCPv4NumericValueTypes.UInt16: Assert.IsAssignableFrom<DHCPv4PacketUInt16Option>(option); value = ((DHCPv4PacketUInt16Option)option).Value; break; case DHCPv4NumericValueTypes.UInt32: Assert.IsAssignableFrom<DHCPv4PacketUInt32Option>(option); value = ((DHCPv4PacketUInt32Option)option).Value; break; default: break; } } else if (property is DHCPv4TextScopeProperty castedProperty4) { Assert.IsAssignableFrom<DHCPv4PacketTextOption>(option); DHCPv4PacketTextOption castedOption = (DHCPv4PacketTextOption)option; Assert.Equal(castedProperty4.Value, castedOption.Value); } else if (property is DHCPv4TimeScopeProperty castedProperty5) { Assert.IsAssignableFrom<DHCPv4PacketTimeSpanOption>(option); DHCPv4PacketTimeSpanOption castedOption = (DHCPv4PacketTimeSpanOption)option; Assert.Equal(castedProperty5.Value, castedOption.Value); } else { throw new NotImplementedException(); } }