Commit 71eb3a49 authored by Brickner_cp's avatar Brickner_cp

Code Coverage 95.42%

parent fd4ee701
...@@ -97,6 +97,11 @@ namespace PcapDotNet.Packets.Test ...@@ -97,6 +97,11 @@ namespace PcapDotNet.Packets.Test
IpV6OptionSmfDpd optionSmfDpd = (IpV6OptionSmfDpd)option; IpV6OptionSmfDpd optionSmfDpd = (IpV6OptionSmfDpd)option;
Assert.AreEqual(optionSmfDpd is IpV6OptionSmfDpdSequenceHashAssistValue, optionSmfDpd.HashIndicator); Assert.AreEqual(optionSmfDpd is IpV6OptionSmfDpdSequenceHashAssistValue, optionSmfDpd.HashIndicator);
break; break;
case IpV6OptionType.QuickStart:
IpV6OptionQuickStart optionQuickStart = (IpV6OptionQuickStart)option;
MoreAssert.IsBiggerOrEqual(0, optionQuickStart.RateKbps);
break;
} }
} }
} }
...@@ -212,65 +217,85 @@ namespace PcapDotNet.Packets.Test ...@@ -212,65 +217,85 @@ namespace PcapDotNet.Packets.Test
} }
[TestMethod] [TestMethod]
public void IpV6AccessNetworkIdentifierSubOptionUnknown() public void IpV6OptionUnknown()
{ {
IpV6AccessNetworkIdentifierSubOptionUnknown subOption = IpV6OptionUnknown option = new IpV6OptionUnknown((IpV6OptionType)0xBB, DataSegment.Empty);
new IpV6AccessNetworkIdentifierSubOptionUnknown((IpV6AccessNetworkIdentifierSubOptionType)100, DataSegment.Empty);
Packet packet = PacketBuilder.Build( Packet packet = PacketBuilder.Build(
DateTime.Now, DateTime.Now,
new EthernetLayer(), new EthernetLayer(),
new IpV6Layer new IpV6Layer
{ {
ExtensionHeaders = new IpV6ExtensionHeaders( ExtensionHeaders = new IpV6ExtensionHeaders(
new IpV6ExtensionHeaderMobilityBindingError( new IpV6ExtensionHeaderDestinationOptions(IpV4Protocol.Skip, new IpV6Options(option)))
IpV4Protocol.Skip, 0, IpV6BindingErrorStatus.UnrecognizedMhTypeValue, IpV6Address.Zero, });
new IpV6MobilityOptions(
new IpV6MobilityOptionAccessNetworkIdentifier(
new IpV6AccessNetworkIdentifierSubOptions(subOption)))))
});
Assert.IsTrue(packet.IsValid); Assert.IsTrue(packet.IsValid);
Assert.AreEqual(subOption, Assert.AreEqual(option, ((IpV6ExtensionHeaderDestinationOptions)packet.Ethernet.IpV6.ExtensionHeaders[0]).Options[0]);
((IpV6MobilityOptionAccessNetworkIdentifier)
((IpV6ExtensionHeaderMobility)packet.Ethernet.IpV6.ExtensionHeaders[0]).MobilityOptions[0]).SubOptions[0]);
} }
[TestMethod] [TestMethod]
public void IpV6FlowIdentificationSubOptionUnknown() public void IpV6MobilityOptionUnknown()
{ {
IpV6FlowIdentificationSubOptionUnknown subOption = Random random = new Random();
new IpV6FlowIdentificationSubOptionUnknown((IpV6FlowIdentificationSubOptionType)100, DataSegment.Empty); DataSegment data = random.NextDataSegment(random.NextInt(0, 100));
IpV6MobilityOptionUnknown option = new IpV6MobilityOptionUnknown((IpV6MobilityOptionType)0xBB, data);
Assert.AreEqual(data, option.Data);
Packet packet = PacketBuilder.Build( Packet packet = PacketBuilder.Build(
DateTime.Now, DateTime.Now,
new EthernetLayer(), new EthernetLayer(),
new IpV6Layer new IpV6Layer
{ {
ExtensionHeaders = new IpV6ExtensionHeaders( ExtensionHeaders = new IpV6ExtensionHeaders(
new IpV6ExtensionHeaderMobilityBindingError( new IpV6ExtensionHeaderMobilityBindingError(IpV4Protocol.Skip, 0, IpV6BindingErrorStatus.UnrecognizedMhTypeValue, IpV6Address.Zero,
IpV4Protocol.Skip, 0, IpV6BindingErrorStatus.UnrecognizedMhTypeValue, IpV6Address.Zero, new IpV6MobilityOptions(option)))
new IpV6MobilityOptions(
new IpV6MobilityOptionFlowIdentification(0, 0, IpV6FlowIdentificationStatus.FlowIdentifierNotFound,
new IpV6FlowIdentificationSubOptions(subOption)))))
}); });
Assert.IsTrue(packet.IsValid); 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, Assert.AreEqual(subOption,
((IpV6MobilityOptionFlowIdentification) ((IpV6MobilityOptionAccessNetworkIdentifier)
((IpV6ExtensionHeaderMobility)packet.Ethernet.IpV6.ExtensionHeaders[0]).MobilityOptions[0]).SubOptions[0]); ((IpV6ExtensionHeaderMobility)packet.Ethernet.IpV6.ExtensionHeaders[0]).MobilityOptions[0]).SubOptions[0]);
} }
[TestMethod] [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( Packet packet = PacketBuilder.Build(
DateTime.Now, DateTime.Now,
new EthernetLayer(), new EthernetLayer(),
new IpV6Layer new IpV6Layer
{ {
ExtensionHeaders = new IpV6ExtensionHeaders( 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.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] [TestMethod]
...@@ -501,5 +526,83 @@ namespace PcapDotNet.Packets.Test ...@@ -501,5 +526,83 @@ namespace PcapDotNet.Packets.Test
Packet invalidPacket = new Packet(packet.Buffer, DateTime.Now, DataLinkKind.Ethernet); Packet invalidPacket = new Packet(packet.Buffer, DateTime.Now, DataLinkKind.Ethernet);
Assert.IsFalse(invalidPacket.IsValid); 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 ...@@ -43,4 +43,4 @@ namespace PcapDotNet.Packets.IpV6
Value.Equals(other.Value); Value.Equals(other.Value);
} }
} }
} }
\ No newline at end of file
...@@ -32,4 +32,4 @@ namespace PcapDotNet.Packets.IpV6 ...@@ -32,4 +32,4 @@ namespace PcapDotNet.Packets.IpV6
throw new InvalidOperationException("IpV6MobilityOptionUnknown shouldn't be registered."); 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