/* Ċ Ġ* ĠCopyright Ġ@ Ġ 2 0 1 8 Ġ- Ġpresent Ġ 8 x 8 , ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . j its i . rtp . rt cp Ċ Ċ import Ġio . kot lint est . Isolation Mode Ċ import Ġio . kot lint est . shouldBe Ċ import Ġio . kot lint est . specs . Should Spec Ċ import Ġorg . j its i . rtp . util . Bit Buffer Ċ import Ġjava . nio . ByteBuffer Ċ Ċ internal Ġclass ĠR tcp Header Test Ġ: ĠShould Spec () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġisolation Mode (): ĠI sol ation Mode ? Ġ= ĠI sol ation Mode . Instance Per Leaf ĊĊĠĠĠ Ġprivate Ġval Ġheader Buf Ġ= Ġwith ( ByteBuffer . allocate ( 8 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbit Buffer Ġ= ĠBit Buffer ( this ) ĊĠĠĠĠĠĠĠ Ġbit Buffer . put Bits ( 2 . to Byte (), Ġ 2 ) Ġ// Ġversion ĊĠĠĠĠĠĠĠ Ġbit Buffer . put Boolean ( false ) Ġ// Ġpadding ĊĠĠĠĠĠĠĠ Ġbit Buffer . put Bits ( 1 . to Byte (), Ġ 5 ) Ġ// Ġreport Ġcount ĊĠĠĠĠĠĠĠ Ġput ( 2 0 0 . to Byte ()) Ġ// Ġpacket Ġtype ĊĠĠĠĠĠĠĠ Ġput Short ( 0 xFFFF . to Short ()) Ġ// Ġlength ĊĠĠĠĠĠĠĠ Ġput Int ( 0 xFFFFFFFF . toInt ()) Ġ// Ġsender Ġs src ĊĠĠĠĠĠĠĠ Ġthis . rewind () Ġas ĠByteBuffer ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ" creation " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" from Ġa Ġbuffer " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Ġ= ĠR tcp Header ( header Buf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" from Buffer Ġthe Ġvalues Ġcorrectly ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . version ĠshouldBe Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . has Padding ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . report Count ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . packet Type ĠshouldBe Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . length ĠshouldBe Ġ 0 xFFFF ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . sender S src ĠshouldBe Ġ 0 xFFFFFFFF ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" from Ġa Ġcomplete Ġset Ġof Ġvalues " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Ġ= ĠR tcp Header ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Padding Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Count Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpacket Type Ġ= Ġ 2 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlength Ġ= Ġ 0 xFFFF , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender S src Ġ= Ġ 0 xFFFFFFFF ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" set Ġeverything Ġcorrectly ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . version ĠshouldBe Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . has Padding ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . report Count ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . packet Type ĠshouldBe Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . length ĠshouldBe Ġ 0 xFFFF ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . sender S src ĠshouldBe Ġ 0 xFFFFFFFF ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" pass ing Ġa Ġsubset Ġof Ġvalues Ġin Ġthe Ġconstructor " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Ġ= ĠR tcp Header ( sender S src Ġ= Ġ 1 2 3 4 5 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" set Ġthe Ġpassed Ġvalues ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . sender S src ĠshouldBe Ġ 1 2 3 4 5 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" set Ġthe Ġdefault Ġversion ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . version ĠshouldBe Ġ 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" serialization " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Ġ= ĠR tcp Header ( header Buf ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Buf Ġ= Ġheader . get Buffer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" write Ġthe Ġcorrect Ġdata Ġto Ġthe Ġbuffer ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Buf . rewind () ĠshouldBe Ġheader Buf . rewind () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ