Commit da9e87ef authored by Brickner_cp's avatar Brickner_cp

Improve IPv4 tests.

parent fa000133
...@@ -22,38 +22,66 @@ namespace PcapDotNet.Core.Test ...@@ -22,38 +22,66 @@ namespace PcapDotNet.Core.Test
{ {
case "ip.version": case "ip.version":
field.AssertShowDecimal(ipV4Datagram.Version); field.AssertShowDecimal(ipV4Datagram.Version);
field.AssertNoFields();
break; break;
case "ip.hdr_len": case "ip.hdr_len":
field.AssertShowDecimal(ipV4Datagram.HeaderLength); field.AssertShowDecimal(ipV4Datagram.HeaderLength);
field.AssertNoFields();
break; break;
case "ip.dsfield": case "ip.dsfield":
field.AssertShowDecimal((int)ipV4Datagram.TypeOfService); field.AssertShowDecimal((int)ipV4Datagram.TypeOfService);
// TODO: Parse TypeOfService to Differentiated Services and ECN.
break; break;
case "ip.len": case "ip.len":
field.AssertShowDecimal(ipV4Datagram.TotalLength); field.AssertShowDecimal(ipV4Datagram.TotalLength);
field.AssertNoFields();
break; break;
case "ip.id": case "ip.id":
field.AssertShowHex(ipV4Datagram.Identification); field.AssertShowHex(ipV4Datagram.Identification);
field.AssertNoFields();
break; break;
case "ip.flags": case "ip.flags":
field.AssertShowHex((byte)((ushort)ipV4Datagram.Fragmentation.Options >> 13)); field.AssertShowHex((byte)((ushort)ipV4Datagram.Fragmentation.Options >> 13));
foreach (XElement subfield in field.Fields())
{
subfield.AssertNoFields();
switch (subfield.Name())
{
case "ip.flags.rb":
break;
case "ip.flags.df":
subfield.AssertShowDecimal((ipV4Datagram.Fragmentation.Options & IpV4FragmentationOptions.DoNotFragment) == IpV4FragmentationOptions.DoNotFragment);
break;
case "ip.flags.mf":
subfield.AssertShowDecimal((ipV4Datagram.Fragmentation.Options & IpV4FragmentationOptions.MoreFragments) == IpV4FragmentationOptions.MoreFragments);
break;
default:
throw new InvalidOperationException(string.Format("Invalid ip flags subfield {0}", subfield.Name()));
}
}
break; break;
case "ip.frag_offset": case "ip.frag_offset":
field.AssertShowDecimal(ipV4Datagram.Fragmentation.Offset); field.AssertShowDecimal(ipV4Datagram.Fragmentation.Offset);
field.AssertNoFields();
break; break;
case "ip.ttl": case "ip.ttl":
field.AssertShowDecimal(ipV4Datagram.Ttl); field.AssertShowDecimal(ipV4Datagram.Ttl);
field.AssertNoFields();
break; break;
case "ip.proto": case "ip.proto":
field.AssertShowDecimal((byte)ipV4Datagram.Protocol); field.AssertShowDecimal((byte)ipV4Datagram.Protocol);
field.AssertNoFields();
break; break;
case "ip.checksum": case "ip.checksum":
...@@ -64,6 +92,7 @@ namespace PcapDotNet.Core.Test ...@@ -64,6 +92,7 @@ namespace PcapDotNet.Core.Test
{ {
case "ip.checksum_good": case "ip.checksum_good":
checksumField.AssertShowDecimal(ipV4Datagram.IsHeaderChecksumCorrect); checksumField.AssertShowDecimal(ipV4Datagram.IsHeaderChecksumCorrect);
checksumField.AssertNoFields();
break; break;
case "ip.checksum_bad": case "ip.checksum_bad":
...@@ -72,6 +101,7 @@ namespace PcapDotNet.Core.Test ...@@ -72,6 +101,7 @@ namespace PcapDotNet.Core.Test
break; break;
checksumField.AssertShowDecimal(!ipV4Datagram.IsHeaderChecksumCorrect); checksumField.AssertShowDecimal(!ipV4Datagram.IsHeaderChecksumCorrect);
checksumField.AssertNoFields();
break; break;
} }
} }
...@@ -80,6 +110,7 @@ namespace PcapDotNet.Core.Test ...@@ -80,6 +110,7 @@ namespace PcapDotNet.Core.Test
case "ip.src": case "ip.src":
case "ip.src_host": case "ip.src_host":
field.AssertShow(ipV4Datagram.Source.ToString()); field.AssertShow(ipV4Datagram.Source.ToString());
field.AssertNoFields();
break; break;
case "ip.dst": case "ip.dst":
...@@ -92,6 +123,7 @@ namespace PcapDotNet.Core.Test ...@@ -92,6 +123,7 @@ namespace PcapDotNet.Core.Test
string.Format("Expected destination: {0}. Destination: {1}. Current destination: {2}.", field.Show(), string.Format("Expected destination: {0}. Destination: {1}. Current destination: {2}.", field.Show(),
ipV4Datagram.Destination, ipV4Datagram.CurrentDestination)); ipV4Datagram.Destination, ipV4Datagram.CurrentDestination));
} }
field.AssertNoFields();
break; break;
case "ip.addr": case "ip.addr":
...@@ -105,6 +137,7 @@ namespace PcapDotNet.Core.Test ...@@ -105,6 +137,7 @@ namespace PcapDotNet.Core.Test
? string.Format("Source: {0}. Destination: {1}. Current destination: {2}.", ipV4Datagram.Source, ? string.Format("Source: {0}. Destination: {1}. Current destination: {2}.", ipV4Datagram.Source,
ipV4Datagram.Destination, ipV4Datagram.CurrentDestination) ipV4Datagram.Destination, ipV4Datagram.CurrentDestination)
: "")); : ""));
field.AssertNoFields();
break; break;
case "": case "":
...@@ -112,7 +145,7 @@ namespace PcapDotNet.Core.Test ...@@ -112,7 +145,7 @@ namespace PcapDotNet.Core.Test
break; break;
default: default:
throw new InvalidOperationException("Invalid ip field " + field.Name()); throw new InvalidOperationException(string.Format("Invalid ip field {0}", field.Name()));
} }
return true; return true;
......
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