@@ -296,6 +296,81 @@ func TestFrame_Bytes(t *testing.T) {
296296 assert .Equal (t , []uint32 {323423432 }, rf .ReadOptions (rf .Header ()))
297297}
298298
299+ func TestFrame_NotPingPong (t * testing.T ) {
300+ nf := NewFrame ()
301+ nf .WriteVersion (nf .Header (), 1 )
302+ nf .WriteFlags (nf .Header (), CONTROL , CodecGob )
303+ nf .WritePayloadLen (nf .Header (), uint32 (len ([]byte (TestPayload ))))
304+
305+ nf .WriteOptions (nf .HeaderPtr (), 323423432 )
306+ assert .Equal (t , []uint32 {323423432 }, nf .ReadOptions (nf .Header ()))
307+ nf .WritePayload ([]byte (TestPayload ))
308+
309+ nf .WriteCRC (nf .Header ())
310+ assert .Equal (t , true , nf .VerifyCRC (nf .Header ()))
311+ data := nf .Bytes ()
312+
313+ rf := ReadFrame (data )
314+
315+ assert .False (t , rf .IsPing (rf .Header ()))
316+ assert .False (t , rf .IsPong (rf .Header ()))
317+ assert .Equal (t , rf .ReadVersion (rf .Header ()), nf .ReadVersion (nf .Header ()))
318+ assert .Equal (t , rf .ReadFlags (), nf .ReadFlags ())
319+ assert .Equal (t , rf .ReadPayloadLen (rf .Header ()), nf .ReadPayloadLen (nf .Header ()))
320+ assert .Equal (t , true , rf .VerifyCRC (rf .Header ()))
321+ assert .Equal (t , []uint32 {323423432 }, rf .ReadOptions (rf .Header ()))
322+ }
323+
324+ func TestFrame_Ping (t * testing.T ) {
325+ nf := NewFrame ()
326+ nf .WriteVersion (nf .Header (), 1 )
327+ nf .WriteFlags (nf .Header (), CONTROL , CodecGob )
328+ nf .WritePayloadLen (nf .Header (), uint32 (len ([]byte (TestPayload ))))
329+
330+ nf .WriteOptions (nf .HeaderPtr (), 323423432 )
331+ assert .Equal (t , []uint32 {323423432 }, nf .ReadOptions (nf .Header ()))
332+ nf .WritePayload ([]byte (TestPayload ))
333+ nf .SetPingBit (nf .Header ())
334+
335+ nf .WriteCRC (nf .Header ())
336+ assert .Equal (t , true , nf .VerifyCRC (nf .Header ()))
337+ data := nf .Bytes ()
338+
339+ rf := ReadFrame (data )
340+
341+ assert .True (t , rf .IsPing (rf .Header ()))
342+ assert .Equal (t , rf .ReadVersion (rf .Header ()), nf .ReadVersion (nf .Header ()))
343+ assert .Equal (t , rf .ReadFlags (), nf .ReadFlags ())
344+ assert .Equal (t , rf .ReadPayloadLen (rf .Header ()), nf .ReadPayloadLen (nf .Header ()))
345+ assert .Equal (t , true , rf .VerifyCRC (rf .Header ()))
346+ assert .Equal (t , []uint32 {323423432 }, rf .ReadOptions (rf .Header ()))
347+ }
348+
349+ func TestFrame_Pong (t * testing.T ) {
350+ nf := NewFrame ()
351+ nf .WriteVersion (nf .Header (), 1 )
352+ nf .WriteFlags (nf .Header (), CONTROL , CodecGob )
353+ nf .WritePayloadLen (nf .Header (), uint32 (len ([]byte (TestPayload ))))
354+
355+ nf .WriteOptions (nf .HeaderPtr (), 323423432 )
356+ assert .Equal (t , []uint32 {323423432 }, nf .ReadOptions (nf .Header ()))
357+ nf .WritePayload ([]byte (TestPayload ))
358+ nf .SetPongBit (nf .Header ())
359+
360+ nf .WriteCRC (nf .Header ())
361+ assert .Equal (t , true , nf .VerifyCRC (nf .Header ()))
362+ data := nf .Bytes ()
363+
364+ rf := ReadFrame (data )
365+
366+ assert .True (t , rf .IsPong (rf .Header ()))
367+ assert .Equal (t , rf .ReadVersion (rf .Header ()), nf .ReadVersion (nf .Header ()))
368+ assert .Equal (t , rf .ReadFlags (), nf .ReadFlags ())
369+ assert .Equal (t , rf .ReadPayloadLen (rf .Header ()), nf .ReadPayloadLen (nf .Header ()))
370+ assert .Equal (t , true , rf .VerifyCRC (rf .Header ()))
371+ assert .Equal (t , []uint32 {323423432 }, rf .ReadOptions (rf .Header ()))
372+ }
373+
299374func BenchmarkCRC32 (b * testing.B ) {
300375 b .ReportAllocs ()
301376 b .ResetTimer ()
0 commit comments