Commit 6793e9b6 authored by Brickner_cp's avatar Brickner_cp

Code Coverage 97.16%

parent d7ae4b9c
......@@ -36,29 +36,29 @@ namespace PcapDotNet.Base
_mostSignificant = mostSignificant;
_leastSignificant = leastSignificant;
}
/*
/// <summary>
/// Creates a value using 8 16 bits values.
/// </summary>
/// <param name="values">The 16 bits values ordered so that the first value is the most significant.</param>
public UInt128(ushort[] values)
{
if (values.Length != 8)
throw new ArgumentException("UInt128 must be created by 8 ushorts and not " + values.Length + " ushorts");
_mostSignificant =
((ulong)values[0] << 48) +
((ulong)values[1] << 32) +
((ulong)values[2] << 16) +
values[3];
_leastSignificant =
((ulong)values[4] << 48) +
((ulong)values[5] << 32) +
((ulong)values[6] << 16) +
values[7];
}
// public UInt128(ushort[] values)
// {
// if (values.Length != 8)
// throw new ArgumentException("UInt128 must be created by 8 ushorts and not " + values.Length + " ushorts");
//
// _mostSignificant =
// ((ulong)values[0] << 48) +
// ((ulong)values[1] << 32) +
// ((ulong)values[2] << 16) +
// values[3];
//
// _leastSignificant =
// ((ulong)values[4] << 48) +
// ((ulong)values[5] << 32) +
// ((ulong)values[6] << 16) +
// values[7];
// }
*/
/// <summary>
/// Converts the string representation of a number in a specified style to its 128-bit unsigned integer equivalent.
/// </summary>
......@@ -105,7 +105,7 @@ namespace PcapDotNet.Base
/// <returns>The 64 bit value converted from the 128 bit value.</returns>
public static explicit operator ulong(UInt128 value)
{
return value._mostSignificant;
return value._leastSignificant;
}
/// <summary>
......
......@@ -129,7 +129,7 @@ namespace PcapDotNet.Core.Test
TestReceivePackets(NumPacketsToSend, NumPacketsToSend / 2, int.MaxValue, 2, PacketSize, PacketCommunicatorReceiveResult.Ok, NumPacketsToSend / 2, 0, 0.02);
// Wait for more packets
TestReceivePackets(NumPacketsToSend, 0, int.MaxValue, 2, PacketSize, PacketCommunicatorReceiveResult.None, NumPacketsToSend, 2, 2.03);
TestReceivePackets(NumPacketsToSend, 0, int.MaxValue, 2, PacketSize, PacketCommunicatorReceiveResult.None, NumPacketsToSend, 2, 2.043);
TestReceivePackets(NumPacketsToSend, -1, int.MaxValue, 2, PacketSize, PacketCommunicatorReceiveResult.None, NumPacketsToSend, 2, 2.3);
TestReceivePackets(NumPacketsToSend, NumPacketsToSend + 1, int.MaxValue, 2, PacketSize, PacketCommunicatorReceiveResult.None, NumPacketsToSend, 2, 2.03);
......@@ -152,11 +152,11 @@ namespace PcapDotNet.Core.Test
// Wait for more packets
TestReceivePacketsEnumerable(NumPacketsToSend, -1, int.MaxValue, 2, PacketSize, NumPacketsToSend, 2, 2.02);
TestReceivePacketsEnumerable(NumPacketsToSend, NumPacketsToSend + 1, int.MaxValue, 2, PacketSize, NumPacketsToSend, 2, 2.02);
TestReceivePacketsEnumerable(NumPacketsToSend, NumPacketsToSend + 1, int.MaxValue, 2, PacketSize, NumPacketsToSend, 2, 2.03);
// Break loop
TestReceivePacketsEnumerable(NumPacketsToSend, NumPacketsToSend, 0, 2, PacketSize, 0, 0, 0.02);
TestReceivePacketsEnumerable(NumPacketsToSend, NumPacketsToSend, NumPacketsToSend / 2, 2, PacketSize, NumPacketsToSend / 2, 0, 0.02);
TestReceivePacketsEnumerable(NumPacketsToSend, NumPacketsToSend, NumPacketsToSend / 2, 2, PacketSize, NumPacketsToSend / 2, 0, 0.031);
}
[TestMethod]
......@@ -528,6 +528,8 @@ namespace PcapDotNet.Core.Test
[TestMethod]
public void SetSamplingMethodFirstAfterIntervalTest()
{
Thread.Sleep(TimeSpan.FromSeconds(2));
const string SourceMac = "11:22:33:44:55:66";
const string DestinationMac = "77:88:99:AA:BB:CC";
......
......@@ -112,7 +112,7 @@ namespace PcapDotNet.Core.Test
}
TimeSpan actualDiff = packet.Timestamp - lastTimestamp;
MoreAssert.IsInRange(
expectedDiff.Subtract(TimeSpan.FromSeconds(0.01)),
expectedDiff.Subtract(TimeSpan.FromSeconds(0.03)),
expectedDiff.Add(TimeSpan.FromSeconds(0.03)),
actualDiff);
}
......
......@@ -80,6 +80,9 @@ namespace PcapDotNet.Packets.Test
Assert.AreEqual(ArpDatagram.HeaderBaseLength + 2 * arpLayer.SenderHardwareAddress.Count+ 2 * arpLayer.SenderProtocolAddress.Count, packet.Ethernet.Arp.Length, "Arp length");
Assert.AreEqual(ArpHardwareType.Ethernet, packet.Ethernet.Arp.HardwareType, "Arp hardware type");
Assert.AreEqual(arpLayer, packet.Ethernet.Arp.ExtractLayer(), "ARP Layer");
Assert.AreNotEqual(arpLayer, random.NextArpLayer(), "ARP Layer");
Assert.AreEqual(arpLayer.GetHashCode(), packet.Ethernet.Arp.ExtractLayer().GetHashCode(), "ARP Layer");
Assert.AreNotEqual(arpLayer.GetHashCode(), random.NextArpLayer().GetHashCode(), "ARP Layer");
}
}
......
......@@ -65,6 +65,10 @@ namespace PcapDotNet.Packets.Test
// Ethernet
Assert.AreEqual(packet.Length - EthernetDatagram.HeaderLength, packet.Ethernet.PayloadLength, "PayloadLength");
Assert.AreEqual(ethernetLayer, packet.Ethernet.ExtractLayer(), "Ethernet Layer");
Assert.AreEqual(ethernetLayer.GetHashCode(), packet.Ethernet.ExtractLayer().GetHashCode(), "Ethernet Layer Hash Code");
Assert.AreNotEqual(random.NextEthernetLayer().GetHashCode(), packet.Ethernet.ExtractLayer().GetHashCode(), "Ethernet Layer Hash Code");
Assert.AreEqual(ethernetLayer.ToString(), packet.Ethernet.ExtractLayer().ToString(), "Ethernet Layer ToString()");
Assert.AreNotEqual(random.NextEthernetLayer().ToString(), packet.Ethernet.ExtractLayer().ToString(), "Ethernet Layer ToString()");
Assert.AreNotEqual(2, packet.Ethernet.Source, "Ethernet Source");
Assert.AreEqual(payloadLayer.Data, packet.Ethernet.Payload);
......
......@@ -134,8 +134,12 @@ namespace PcapDotNet.Packets.Test
IcmpLayer actualIcmpLayer = (IcmpLayer)actualIcmp.ExtractLayer();
icmpLayer.Checksum = actualIcmpLayer.Checksum;
Assert.AreEqual(icmpLayer, actualIcmpLayer);
Assert.AreEqual(icmpLayer.GetHashCode(), actualIcmpLayer.GetHashCode());
if (actualIcmpLayer.MessageType != IcmpMessageType.RouterSolicitation)
{
Assert.AreNotEqual(random.NextIcmpLayer(), actualIcmpLayer);
Assert.AreNotEqual(random.NextIcmpLayer().GetHashCode(), actualIcmpLayer.GetHashCode());
}
Assert.IsTrue(actualIcmp.IsChecksumCorrect);
Assert.AreEqual(icmpLayer.MessageType, actualIcmp.MessageType);
Assert.AreEqual(icmpLayer.CodeValue, actualIcmp.Code);
......@@ -179,5 +183,18 @@ namespace PcapDotNet.Packets.Test
}
}
}
[TestMethod]
public void IcmpRouterAdvertisementEntryTest()
{
Random random = new Random();
IcmpRouterAdvertisementEntry entry1 = new IcmpRouterAdvertisementEntry(random.NextIpV4Address(), random.Next());
IcmpRouterAdvertisementEntry entry2 = new IcmpRouterAdvertisementEntry(random.NextIpV4Address(), random.Next());
Assert.AreEqual(entry1, entry1);
Assert.AreEqual(entry1.GetHashCode(), entry1.GetHashCode());
Assert.AreNotEqual(entry1, entry2);
Assert.AreNotEqual(entry1.GetHashCode(), entry2.GetHashCode());
}
}
}
\ No newline at end of file
......@@ -88,8 +88,10 @@ namespace PcapDotNet.Packets.Test
// IGMP
Assert.IsTrue(packet.Ethernet.IpV4.Igmp.IsChecksumCorrect);
Assert.AreEqual(igmpLayer, packet.Ethernet.IpV4.Igmp.ExtractLayer(), "IGMP Layer");
Assert.AreEqual(igmpLayer.GetHashCode(), packet.Ethernet.IpV4.Igmp.ExtractLayer().GetHashCode(), "IGMP Layer");
Assert.AreNotEqual(igmpLayer, null);
Assert.AreNotEqual(igmpLayer, random.NextPayloadLayer(igmpLayer.Length));
Assert.AreNotEqual(igmpLayer.GetHashCode(), random.NextPayloadLayer(igmpLayer.Length).GetHashCode());
if (packet.Ethernet.IpV4.Igmp.QueryVersion != IgmpQueryVersion.Version3)
MoreAssert.IsSmallerOrEqual(IgmpDatagram.MaxMaxResponseTime, packet.Ethernet.IpV4.Igmp.MaxResponseTime);
if (packet.Ethernet.IpV4.Igmp.MessageType != IgmpMessageType.MembershipQuery)
......@@ -346,11 +348,13 @@ namespace PcapDotNet.Packets.Test
Datagram.Empty);
Assert.IsTrue(record.Equals((object)record));
Assert.AreEqual(record.GetHashCode(), record.GetHashCode());
Assert.AreEqual(record.ToString(), record.ToString());
Assert.IsFalse(record.Equals(null));
Assert.AreNotEqual(record, new IgmpGroupRecord(IgmpRecordType.CurrentStateRecordModeIsExclude, record.MulticastAddress, record.SourceAddresses, record.AuxiliaryData));
Assert.AreNotEqual(record, new IgmpGroupRecord(record.RecordType, new IpV4Address("1.2.3.4"), record.SourceAddresses, record.AuxiliaryData));
Assert.AreNotEqual(record, new IgmpGroupRecord(record.RecordType, record.MulticastAddress, new List<IpV4Address>(new[] {new IpV4Address("2.3.4.5")}), record.AuxiliaryData));
Assert.AreNotEqual(record, new IgmpGroupRecord(record.RecordType, record.MulticastAddress, record.SourceAddresses, new Datagram(new byte[12])));
Assert.AreNotEqual(record.ToString(), new IgmpGroupRecord(record.RecordType, record.MulticastAddress, record.SourceAddresses, new Datagram(new byte[12])).ToString());
}
[TestMethod]
......
......@@ -58,21 +58,21 @@ namespace PcapDotNet.Packets.Test
for (int i = 0; i != 1000; ++i)
{
// IpV4Address address = random.NextIpV6Address();
//
// Assert.AreEqual(address, new IpV4Address(address.ToString()));
// Assert.IsTrue(address == new IpV4Address(address.ToString()));
// Assert.IsFalse(address != new IpV4Address(address.ToString()));
// Assert.AreEqual(address.GetHashCode(), new IpV4Address(address.ToString()).GetHashCode());
// Assert.AreEqual(address, new IpV4Address(address.ToValue()));
//
// Assert.AreNotEqual(address, random.NextIpV4Address());
// Assert.IsFalse(address == random.NextIpV4Address());
// Assert.IsTrue(address != random.NextIpV4Address());
// Assert.AreNotEqual(address.GetHashCode(), random.NextIpV4Address().GetHashCode());
//
// Assert.AreNotEqual(2, address);
// Assert.IsFalse(address.Equals(null));
IpV6Address address = random.NextIpV6Address();
Assert.AreEqual(address, new IpV6Address(address.ToString()));
Assert.IsTrue(address == new IpV6Address(address.ToString()));
Assert.IsFalse(address != new IpV6Address(address.ToString()));
Assert.AreEqual(address.GetHashCode(), new IpV6Address(address.ToString()).GetHashCode());
Assert.AreEqual(address, new IpV6Address(address.ToValue()));
Assert.AreNotEqual(address, random.NextIpV6Address());
Assert.IsFalse(address == random.NextIpV6Address());
Assert.IsTrue(address != random.NextIpV6Address());
Assert.AreNotEqual(address.GetHashCode(), random.NextIpV6Address().GetHashCode());
Assert.AreNotEqual(2, address);
Assert.IsFalse(address.Equals(null));
}
}
......@@ -153,5 +153,21 @@ namespace PcapDotNet.Packets.Test
{
Assert.AreEqual("0000:0000:0000:0000:0000:0000:0000:0000", IpV6Address.Zero.ToString());
}
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void IpV6AddressNoColonTest()
{
IpV6Address ipV6Address = new IpV6Address("123");
Assert.AreEqual(ipV6Address,ipV6Address);
}
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void IpV6AddressDoubleColonsWithoutMissingColonsTest()
{
IpV6Address ipV6Address = new IpV6Address("1::2:3:4:5:6:7:8");
Assert.AreEqual(ipV6Address, ipV6Address);
}
}
}
\ No newline at end of file
......@@ -64,7 +64,7 @@ namespace PcapDotNet.Packets.Test
{
Data = new Datagram(layer.Data.Concat<byte>(1).ToArray())
});
if (layer.Length != 0)
if (layer.Length > 1)
{
Assert.AreNotEqual(layer, new PayloadLayer
{
......
......@@ -90,6 +90,10 @@ namespace PcapDotNet.Packets.Test
// TCP
tcpLayer.Checksum = packet.Ethernet.IpV4.Tcp.Checksum;
Assert.AreEqual(tcpLayer, packet.Ethernet.IpV4.Tcp.ExtractLayer(), "TCP Layer");
Assert.AreNotEqual(random.NextTcpLayer(), packet.Ethernet.IpV4.Tcp.ExtractLayer(), "TCP Layer");
Assert.AreEqual(tcpLayer.GetHashCode(), packet.Ethernet.IpV4.Tcp.ExtractLayer().GetHashCode(), "TCP Layer");
Assert.AreNotEqual(random.NextTcpLayer().GetHashCode(), packet.Ethernet.IpV4.Tcp.ExtractLayer().GetHashCode(), "TCP Layer");
Assert.AreEqual(packet.Ethernet.IpV4.Tcp.SequenceNumber + packet.Ethernet.IpV4.Tcp.PayloadLength, packet.Ethernet.IpV4.Tcp.NextSequenceNumber);
foreach (TcpOption option in packet.Ethernet.IpV4.Tcp.Options.OptionsCollection)
{
Assert.AreEqual(option, option);
......@@ -130,6 +134,8 @@ namespace PcapDotNet.Packets.Test
Assert.AreNotEqual(block1, block2);
Assert.IsTrue(block1 != block2);
Assert.IsFalse(block1 == block2);
Assert.AreNotEqual(block1.ToString(), block2.ToString());
Assert.AreNotEqual(block1, 0);
block2 = new TcpOptionSelectiveAcknowledgmentBlock(1, 2);
Assert.AreEqual(block1, block2);
......
......@@ -9,6 +9,7 @@ using PcapDotNet.Packets.Ethernet;
using PcapDotNet.Packets.Icmp;
using PcapDotNet.Packets.Igmp;
using PcapDotNet.Packets.IpV4;
using PcapDotNet.Packets.IpV6;
using PcapDotNet.Packets.Transport;
using PcapDotNet.TestUtils;
......@@ -120,7 +121,6 @@ namespace PcapDotNet.Packets.TestUtils
{
return new IpV4Layer
{
TypeOfService = random.NextByte(),
Identification = random.NextUShort(),
Ttl = random.NextByte(),
......@@ -319,6 +319,13 @@ namespace PcapDotNet.Packets.TestUtils
return new IpV4Options(options);
}
// IPv6
public static IpV6Address NextIpV6Address(this Random random)
{
return new IpV6Address(random.NextUInt128());
}
// UDP
public static UdpLayer NextUdpLayer(this Random random)
......@@ -557,6 +564,8 @@ namespace PcapDotNet.Packets.TestUtils
case IgmpMessageType.MembershipReportVersion3:
igmpGroupRecords = random.NextIgmpGroupRecords(random.Next(100));
if (igmpGroupRecords.Count() == 0 && random.NextBool())
return new IgmpReportVersion3Layer();
return new IgmpReportVersion3Layer(igmpGroupRecords);
default:
......@@ -755,6 +764,10 @@ namespace PcapDotNet.Packets.TestUtils
icmpPayloadLayers = icmpPayloadLayers.Concat(random.NextIpV4Layer(), random.NextPayloadLayer(IcmpIpV4HeaderPlus64BitsPayloadDatagram.OriginalDatagramPayloadLength));
break;
case IcmpMessageType.ConversionFailed:
IpV4Protocol icmpIpV4Protocol = random.NextBool()
? random.NextValue(new[] {IpV4Protocol.Udp, IpV4Protocol.Tcp})
: random.NextEnum<IpV4Protocol>();
IpV4Layer icmpIpV4Layer = random.NextIpV4Layer();
icmpPayloadLayers = icmpPayloadLayers.Concat(icmpIpV4Layer);
if (icmpLayer.MessageTypeAndCode == IcmpMessageTypeAndCode.ConversionFailedUnsupportedTransportProtocol)
......
......@@ -198,7 +198,7 @@ namespace PcapDotNet.Packets.Igmp
return 2;
default:
throw new InvalidOperationException("Invalid MessageType " + MessageType);
throw new InvalidOperationException("Invalid IgmpMessageType " + MessageType);
}
}
}
......
......@@ -125,7 +125,6 @@ namespace PcapDotNet.Packets.Igmp
GroupAddress.GetHashCode() ^
((IsSuppressRouterSideProcessing ? 0 : (1 << 8)) + QueryRobustnessVariable) ^
SourceAddresses.SequenceGetHashCode();
}
/// <summary>
......
......@@ -55,7 +55,7 @@ namespace PcapDotNet.Packets.IpV4
}
/// <summary>
/// Gets the address valud as a 32 bit integer.
/// Gets the address value as a 32 bit integer.
/// </summary>
public uint ToValue()
{
......
......@@ -78,13 +78,13 @@ namespace PcapDotNet.Packets.IpV6
_value = new UInt128(mostSignificant, leastSignificant);
}
// /// <summary>
// /// Gets the address value as a 32 bit integer.
// /// </summary>
// public uint ToValue()
// {
// return _value;
// }
/// <summary>
/// Gets the address value as a 128 bit integer.
/// </summary>
public UInt128 ToValue()
{
return _value;
}
/// <summary>
/// Two addresses are equal if the have the exact same value.
......
......@@ -90,6 +90,11 @@ namespace PcapDotNet.TestUtils
return ((((ulong)random.NextUInt()) << 32) + random.NextUInt());
}
public static UInt128 NextUInt128(this Random random)
{
return new UInt128(random.NextULong(), random.NextULong());
}
public static DateTime NextDateTime(this Random random, DateTime minimumValue, DateTime maximumValue)
{
return new DateTime(random.NextLong(minimumValue.ToUniversalTime().Ticks,
......
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