/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 2 1 ĠE no ve a Ġ( fab ien . me ur isse @ en ove a . net ) Ċ Ġ* Ċ Ġ* Ġ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 Ġdil iv ia Ċ Ċ import Ġorg . assertj . core . api . BDD Assertions Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . Data InputStream Ċ import Ġjava . io . Data OutputStream Ċ Ċ internal Ġclass ĠData IO UnitTest Ġ{ ĊĊĠĠĠ Ġ@ DisplayName (" Pack Ġ/ ĠUn pack Ġint ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpack And Unpack Int () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠRandom . random Int () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠByteArrayOutputStream (). use Ġ{ Ġbytes Output Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData OutputStream ( bytes Output ). use Ġ{ Ġdata Output Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData IO . pack Int ( data Output , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes Output . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpacked Long Size Ġ= ĠData IO . packed Int Size ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB DD Assertions . then ( output ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fail Message (" Packed Ġsize Ġ${ output . size } Ġfor Ġvalue Ġ$ value Ġ!= Ġexpected Ġ$ packed Long Size ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Size ( packed Long Size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠData InputStream ( ByteArray InputStream ( output )). use Ġ{ Ġdata Input Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunpack ed Ġ= ĠData IO . unpack Int ( data Input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB DD Assertions . then ( unpack ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fail Message (" Un packed Ġvalue Ġ$ unpack ed Ġ!= Ġinitial Ġvalue Ġ$ value ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Pack Ġ/ ĠUn pack Ġlong ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpack And Unpack Long () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠRandom . random Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠByteArrayOutputStream (). use Ġ{ Ġbytes Output Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData OutputStream ( bytes Output ). use Ġ{ Ġdata Output Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData IO . pack Long ( data Output , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes Output . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpacked Long Size Ġ= ĠData IO . packed Long Size ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB DD Assertions . then ( output ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fail Message (" Packed Ġsize Ġ${ output . size } Ġfor Ġvalue Ġ$ value Ġ!= Ġexpected Ġ$ packed Long Size ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Size ( packed Long Size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠData InputStream ( ByteArray InputStream ( output )). use Ġ{ Ġdata Input Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunpack ed Ġ= ĠData IO . unpack Long ( data Input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB DD Assertions . then ( unpack ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fail Message (" Un packed Ġvalue Ġ$ unpack ed Ġ!= Ġinitial Ġvalue Ġ$ value ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ DisplayName (" Pack Ġ/ ĠUn pack Ġdelta Ġlong Ġlist ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpack And Unpack Delta Long List () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 0 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠRandom . random Int ( 1 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġ( 0 Ġuntil Ġsize ). map Ġ{ ĠRandom . random Long ( 0 , Ġ 4 0 0 0 0 0 0 ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠByteArrayOutputStream (). use Ġ{ Ġbytes Output Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData OutputStream ( bytes Output ). use Ġ{ Ġdata Output Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData IO . pack Delta Long List ( data Output , Ġvalues ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes Output . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠData InputStream ( ByteArray InputStream ( output )). use Ġ{ Ġdata Input Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunpack ed Ġ= ĠData IO . unpack Delta Long List ( data Input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB DD Assertions . then ( unpack ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fail Message (" Un packed Ġvalue Ġ$ unpack ed Ġ!= Ġinitial Ġvalue Ġ$ values ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( values ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ DisplayName (" Pack Ġ/ ĠUn pack Ġdelta Ġint Ġlist ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpack And Unpack Delta Int List () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 0 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠRandom . random Int ( 1 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġ( 0 Ġuntil Ġsize ). map Ġ{ ĠRandom . random Int (- 4 0 0 0 0 , Ġ 4 0 0 0 0 ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠByteArrayOutputStream (). use Ġ{ Ġbytes Output Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData OutputStream ( bytes Output ). use Ġ{ Ġdata Output Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData IO . pack Delta Int List ( data Output , Ġvalues ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes Output . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠData InputStream ( ByteArray InputStream ( output )). use Ġ{ Ġdata Input Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunpack ed Ġ= ĠData IO . unpack Delta Int List ( data Input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB DD Assertions . then ( unpack ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fail Message (" Un packed Ġvalue Ġ$ unpack ed Ġ!= Ġinitial Ġvalue Ġ$ values ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( values ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ