Commit 71eb3a49 authored by Brickner_cp's avatar Brickner_cp

Code Coverage 95.42%

parent fd4ee701
......@@ -97,6 +97,11 @@ namespace PcapDotNet.Packets.Test
IpV6OptionSmfDpd optionSmfDpd = (IpV6OptionSmfDpd)option;
Assert.AreEqual(optionSmfDpd is IpV6OptionSmfDpdSequenceHashAssistValue, optionSmfDpd.HashIndicator);
break;
case IpV6OptionType.QuickStart:
IpV6OptionQuickStart optionQuickStart = (IpV6OptionQuickStart)option;
MoreAssert.IsBiggerOrEqual(0, optionQuickStart.RateKbps);
break;
}
}
}
......@@ -212,65 +217,85 @@ namespace PcapDotNet.Packets.Test
}
[TestMethod]
public void IpV6AccessNetworkIdentifierSubOptionUnknown()
public void IpV6OptionUnknown()
{
IpV6AccessNetworkIdentifierSubOptionUnknown subOption =
new IpV6AccessNetworkIdentifierSubOptionUnknown((IpV6AccessNetworkIdentifierSubOptionType)100, DataSegment.Empty);
IpV6OptionUnknown option = new IpV6OptionUnknown((IpV6OptionType)0xBB, DataSegment.Empty);
Packet packet = PacketBuilder.Build(
DateTime.Now,
new EthernetLayer(),
new IpV6Layer
{
ExtensionHeaders = new IpV6ExtensionHeaders(
new IpV6ExtensionHeaderMobilityBindingError(
IpV4Protocol.Skip, 0, IpV6BindingErrorStatus.UnrecognizedMhTypeValue, IpV6Address.Zero,
new IpV6MobilityOptions(
new IpV6MobilityOptionAccessNetworkIdentifier(
new IpV6AccessNetworkIdentifierSubOptions(subOption)))))
});
{
ExtensionHeaders = new IpV6ExtensionHeaders(
new IpV6ExtensionHeaderDestinationOptions(IpV4Protocol.Skip, new IpV6Options(option)))
});
Assert.IsTrue(packet.IsValid);
Assert.AreEqual(subOption,
((IpV6MobilityOptionAccessNetworkIdentifier)
((IpV6ExtensionHeaderMobility)packet.Ethernet.IpV6.ExtensionHeaders[0]).MobilityOptions[0]).SubOptions[0]);
Assert.AreEqual(option, ((IpV6ExtensionHeaderDestinationOptions)packet.Ethernet.IpV6.ExtensionHeaders[0]).Options[0]);
}
[TestMethod]
public void IpV6FlowIdentificationSubOptionUnknown()
public void IpV6MobilityOptionUnknown()
{
IpV6FlowIdentificationSubOptionUnknown subOption =
new IpV6FlowIdentificationSubOptionUnknown((IpV6FlowIdentificationSubOptionType)100, DataSegment.Empty);
Random random = new Random();
DataSegment data = random.NextDataSegment(random.NextInt(0, 100));
IpV6MobilityOptionUnknown option = new IpV6MobilityOptionUnknown((IpV6MobilityOptionType)0xBB, data);
Assert.AreEqual(data, option.Data);
Packet packet = PacketBuilder.Build(
DateTime.Now,
new EthernetLayer(),
new IpV6Layer
{
ExtensionHeaders = new IpV6ExtensionHeaders(
new IpV6ExtensionHeaderMobilityBindingError(
IpV4Protocol.Skip, 0, IpV6BindingErrorStatus.UnrecognizedMhTypeValue, IpV6Address.Zero,
new IpV6MobilityOptions(
new IpV6MobilityOptionFlowIdentification(0, 0, IpV6FlowIdentificationStatus.FlowIdentifierNotFound,
new IpV6FlowIdentificationSubOptions(subOption)))))
new IpV6ExtensionHeaderMobilityBindingError(IpV4Protocol.Skip, 0, IpV6BindingErrorStatus.UnrecognizedMhTypeValue, IpV6Address.Zero,
new IpV6MobilityOptions(option)))
});
Assert.IsTrue(packet.IsValid);
Assert.AreEqual(option, ((IpV6ExtensionHeaderMobility)packet.Ethernet.IpV6.ExtensionHeaders[0]).MobilityOptions[0]);
}
[TestMethod]
public void IpV6AccessNetworkIdentifierSubOptionUnknown()
{
IpV6AccessNetworkIdentifierSubOptionUnknown subOption =
new IpV6AccessNetworkIdentifierSubOptionUnknown((IpV6AccessNetworkIdentifierSubOptionType)100, DataSegment.Empty);
Packet packet = PacketBuilder.Build(
DateTime.Now,
new EthernetLayer(),
new IpV6Layer
{
ExtensionHeaders = new IpV6ExtensionHeaders(
new IpV6ExtensionHeaderMobilityBindingError(
IpV4Protocol.Skip, 0, IpV6BindingErrorStatus.UnrecognizedMhTypeValue, IpV6Address.Zero,
new IpV6MobilityOptions(
new IpV6MobilityOptionAccessNetworkIdentifier(
new IpV6AccessNetworkIdentifierSubOptions(subOption)))))
});
Assert.IsTrue(packet.IsValid);
Assert.AreEqual(subOption,
((IpV6MobilityOptionFlowIdentification)
((IpV6MobilityOptionAccessNetworkIdentifier)
((IpV6ExtensionHeaderMobility)packet.Ethernet.IpV6.ExtensionHeaders[0]).MobilityOptions[0]).SubOptions[0]);
}
[TestMethod]
public void IpV6OptionUnknown()
public void IpV6FlowIdentificationSubOptionUnknown()
{
IpV6OptionUnknown option = new IpV6OptionUnknown((IpV6OptionType)0xBB, DataSegment.Empty);
IpV6FlowIdentificationSubOptionUnknown subOption =
new IpV6FlowIdentificationSubOptionUnknown((IpV6FlowIdentificationSubOptionType)100, DataSegment.Empty);
Packet packet = PacketBuilder.Build(
DateTime.Now,
new EthernetLayer(),
new IpV6Layer
{
ExtensionHeaders = new IpV6ExtensionHeaders(
new IpV6ExtensionHeaderDestinationOptions(IpV4Protocol.Skip, new IpV6Options(option)))
new IpV6ExtensionHeaderMobilityBindingError(
IpV4Protocol.Skip, 0, IpV6BindingErrorStatus.UnrecognizedMhTypeValue, IpV6Address.Zero,
new IpV6MobilityOptions(
new IpV6MobilityOptionFlowIdentification(0, 0, IpV6FlowIdentificationStatus.FlowIdentifierNotFound,
new IpV6FlowIdentificationSubOptions(subOption)))))
});
Assert.IsTrue(packet.IsValid);
Assert.AreEqual(option, ((IpV6ExtensionHeaderDestinationOptions)packet.Ethernet.IpV6.ExtensionHeaders[0]).Options[0]);
Assert.AreEqual(subOption,
((IpV6MobilityOptionFlowIdentification)
((IpV6ExtensionHeaderMobility)packet.Ethernet.IpV6.ExtensionHeaders[0]).MobilityOptions[0]).SubOptions[0]);
}
[TestMethod]
......@@ -501,5 +526,83 @@ namespace PcapDotNet.Packets.Test
Packet invalidPacket = new Packet(packet.Buffer, DateTime.Now, DataLinkKind.Ethernet);
Assert.IsFalse(invalidPacket.IsValid);
}
[TestMethod]
public void IpV6StandardExtensionHeaderTooShort()
{
byte[] payload = new byte[8];
payload[1] = 10;
Packet packet = PacketBuilder.Build(
DateTime.Now,
new EthernetLayer(),
new IpV6Layer
{
NextHeader = IpV4Protocol.IpV6Route
},
new PayloadLayer {Data = new Datagram(payload)});
Assert.IsFalse(packet.IsValid);
}
[TestMethod]
[ExpectedException(typeof(ArgumentException), AllowDerivedTypes = false)]
public void IpV6LayerWithLayerAfterEncapsulatingSecurityPayload()
{
Assert.IsNull(
PacketBuilder.Build(
DateTime.Now,
new EthernetLayer(),
new IpV6Layer
{
ExtensionHeaders = new IpV6ExtensionHeaders(new IpV6ExtensionHeaderEncapsulatingSecurityPayload(0, 0, DataSegment.Empty))
},
new PayloadLayer {Data = new Datagram(new byte[10])}));
}
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException), AllowDerivedTypes = false)]
public void IpV6MobilityOptionContextRequestTooLong()
{
Assert.IsNull(new IpV6MobilityOptionContextRequest(
new IpV6MobilityOptionContextRequestEntry(0, new DataSegment(new byte[100])),
new IpV6MobilityOptionContextRequestEntry(0, new DataSegment(new byte[100])),
new IpV6MobilityOptionContextRequestEntry(0, new DataSegment(new byte[100]))));
}
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException), AllowDerivedTypes = false)]
public void IpV6MobilityOptionFlowIdentificationSubOptionsTooLong()
{
Assert.IsNull(new IpV6MobilityOptionFlowIdentification(0, 0, IpV6FlowIdentificationStatus.FlowBindingSuccessful,
new IpV6FlowIdentificationSubOptions(new IpV6FlowIdentificationSubOptionPadN(500))));
}
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException), AllowDerivedTypes = false)]
public void IpV6MobilityOptionServiceSelectionDataTooShort()
{
Assert.IsNull(new IpV6MobilityOptionServiceSelection(DataSegment.Empty));
}
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException), AllowDerivedTypes = false)]
public void IpV6MobilityOptionServiceSelectionDataTooLong()
{
Assert.IsNull(new IpV6MobilityOptionServiceSelection(new DataSegment(new byte[256])));
}
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException), AllowDerivedTypes = false)]
public void IpV6OptionLineIdentificationDestinationLineIdentificationTooLong()
{
Assert.IsNull(new IpV6OptionLineIdentificationDestination(new DataSegment(new byte[256])));
}
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException), AllowDerivedTypes = false)]
public void IpV6MobilityOptionIpV4AddressAcknowledgementPrefixLengthTooBig()
{
Assert.IsNull(new IpV6MobilityOptionIpV4AddressAcknowledgement(IpV6AddressAcknowledgementStatus.Success, 0x40, IpV4Address.Zero));
}
}
}
......@@ -43,4 +43,4 @@ namespace PcapDotNet.Packets.IpV6
Value.Equals(other.Value);
}
}
}
\ No newline at end of file
}
......@@ -32,4 +32,4 @@ namespace PcapDotNet.Packets.IpV6
throw new InvalidOperationException("IpV6MobilityOptionUnknown shouldn't be registered.");
}
}
}
\ No newline at end of file
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment