1111using PcapDotNet . Packets . IpV4 ;
1212using PcapDotNet . Packets . TestUtils ;
1313using PcapDotNet . Packets . Transport ;
14+ using PcapDotNet . TestUtils ;
1415
1516namespace PcapDotNet . Packets . Test
1617{
@@ -67,6 +68,8 @@ public void RandomHttpTest()
6768
6869 HttpDatagram httpDatagram = packet . Ethernet . IpV4 . Tcp . Http ;
6970 Assert . AreEqual ( httpLayer . Version , httpDatagram . Version ) ;
71+ if ( httpLayer . Version != null )
72+ Assert . AreEqual ( httpLayer . Version . GetHashCode ( ) , httpDatagram . Version . GetHashCode ( ) ) ;
7073 if ( httpLayer is HttpRequestLayer )
7174 {
7275 Assert . IsTrue ( httpDatagram . IsRequest ) ;
@@ -78,7 +81,10 @@ public void RandomHttpTest()
7881 HttpRequestDatagram httpRequestDatagram = ( HttpRequestDatagram ) httpDatagram ;
7982 Assert . AreEqual ( httpRequestLayer . Method , httpRequestDatagram . Method ) ;
8083 if ( httpRequestLayer . Method != null )
84+ {
85+ Assert . AreEqual ( httpRequestLayer . Method . GetHashCode ( ) , httpRequestDatagram . Method . GetHashCode ( ) ) ;
8186 Assert . AreEqual ( httpRequestLayer . Method . KnownMethod , httpRequestDatagram . Method . KnownMethod ) ;
87+ }
8288 Assert . AreEqual ( httpRequestLayer . Uri , httpRequestDatagram . Uri ) ;
8389 }
8490 else
@@ -96,23 +102,27 @@ public void RandomHttpTest()
96102 Assert . AreEqual ( httpLayer . Header , httpDatagram . Header ) ;
97103 if ( httpLayer . Header != null )
98104 {
105+ Assert . AreEqual ( httpLayer . Header . GetHashCode ( ) , httpDatagram . Header . GetHashCode ( ) ) ;
106+
99107 foreach ( var field in httpLayer . Header )
100108 Assert . IsFalse ( field . Equals ( "abc" ) ) ;
101109
110+ MoreAssert . AreSequenceEqual ( httpLayer . Header . Select ( field => field . GetHashCode ( ) ) , httpDatagram . Header . Select ( field => field . GetHashCode ( ) ) ) ;
111+
102112 if ( httpLayer . Header . ContentType != null )
103113 {
104114 var parameters = httpLayer . Header . ContentType . Parameters ;
105115 Assert . IsNotNull ( ( ( IEnumerable ) parameters ) . GetEnumerator ( ) ) ;
106116 Assert . AreEqual < object > ( parameters , httpDatagram . Header . ContentType . Parameters ) ;
117+ Assert . AreEqual ( parameters . GetHashCode ( ) , httpDatagram . Header . ContentType . Parameters . GetHashCode ( ) ) ;
118+ Assert . AreEqual ( parameters . Count , httpDatagram . Header . ContentType . Parameters . Count ) ;
107119 int maxParameterNameLength = parameters . Any ( ) ? parameters . Max ( pair => pair . Key . Length ) : 0 ;
108120 Assert . IsNull ( parameters [ new string ( 'a' , maxParameterNameLength + 1 ) ] ) ;
109121 }
110122 }
111123 Assert . AreEqual ( httpLayer . Body , httpDatagram . Body ) ;
112124 Assert . AreEqual ( httpLayer , httpDatagram . ExtractLayer ( ) , "HTTP Layer" ) ;
113125 Assert . AreEqual ( httpLayer . Length , httpDatagram . Length ) ;
114-
115- // Ethernet
116126 }
117127 }
118128
@@ -521,6 +531,24 @@ public void HttpBadTransferCodingsRegexTest()
521531 Assert . IsNull ( packet . Ethernet . IpV4 . Tcp . Http . Header . TransferEncoding . TransferCodings ) ;
522532 }
523533
534+ [ TestMethod ]
535+ [ ExpectedException ( typeof ( ArgumentNullException ) ) ]
536+ public void HttpCreateFieldNullEncoding ( )
537+ {
538+ HttpField field = HttpField . CreateField ( "abc" , "cde" , null ) ;
539+ Assert . IsNull ( field ) ;
540+ Assert . Fail ( ) ;
541+ }
542+
543+ [ TestMethod ]
544+ [ ExpectedException ( typeof ( ArgumentNullException ) ) ]
545+ public void HttpCreateFieldNullName ( )
546+ {
547+ HttpField field = HttpField . CreateField ( null , "cde" ) ;
548+ Assert . IsNull ( field ) ;
549+ Assert . Fail ( ) ;
550+ }
551+
524552 private static void TestHttpResponse ( string httpString , HttpVersion expectedVersion = null , uint ? expectedStatusCode = null , string expectedReasonPhrase = null , HttpHeader expectedHeader = null , string expectedBodyString = null )
525553 {
526554 Datagram expectedBody = expectedBodyString == null ? null : new Datagram ( Encoding . ASCII . GetBytes ( expectedBodyString ) ) ;
0 commit comments