package Ġde . mar cre iche lt . q pack Ċ Ċ import Ġok io . Buffer Ċ import Ġok io . ByteString Ċ import Ġok io . ByteString . Companion . decode Hex Ċ import Ġok io . ByteString . Companion . to ByteString Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ // Ġtest Ġexamples Ġfrom Ġhttps :// qu iche . google source . com / qu iche / +/ refs / heads / master / quic / core / q pack / q pack _ encoder _ test . cc Ċ Ċ class ĠQ pack Writer Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwrite Single Byte Int Zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠBuffer () ĊĠĠĠĠĠĠĠ Ġencode Integer ( buffer , Ġvalue Ġ= Ġ 0 , Ġ 0 x 0 0 , Ġ 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" 0 0 ". hex , Ġbuffer . read ByteString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwrite Single Byte Int () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠBuffer () ĊĠĠĠĠĠĠĠ Ġencode Integer ( buffer , Ġvalue Ġ= Ġ 4 2 , Ġ 0 x 0 0 , Ġ 8 ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" 2 a ". hex , Ġbuffer . read ByteString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwrite Single Byte With Prefix () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠBuffer () ĊĠĠĠĠĠĠĠ Ġencode Integer ( buffer , Ġvalue Ġ= Ġ 0 b 0 0 1 1 1 1 1 1 , Ġprefix Ġ= Ġ 0 b 1 0 0 0 0 0 0 0 , Ġ 7 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( int 2 Bytes ( 0 b 1 0 1 1 1 1 1 1 ), Ġbuffer . read ByteString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwrite Two Byte With Prefix () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠBuffer () ĊĠĠĠĠĠĠĠ Ġencode Integer ( buffer , Ġvalue Ġ= Ġ 0 xffff , Ġ 0 b 1 0 0 0 0 0 0 0 , Ġ 7 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ 0 xffff Ġ= Ġ 6 5 5 3 5 ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 ^ N Ġ- Ġ 1 Ġ= Ġ 1 2 7 ĊĠĠĠĠĠĠĠ Ġ// Ġ 6 5 5 3 5 Ġ- Ġ 1 2 7 Ġ= Ġ 6 5 4 0 8 ĊĠĠĠĠĠĠĠ Ġ// Ġ 6 5 4 0 8 Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 _ 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġencoded Ġin Ġreverse Ġorder : Ġleast Ġsignificant Ġ 7 Ġbits Ġ( 0 0 0 0 0 0 0 ) Ġfirst , Ġthen Ġnext Ġ 7 Ġ( 1 1 1 1 1 1 1 ), Ġthen Ġmost Ġsignificant Ġ 7 Ġbits Ġ( 0 0 0 0 0 1 1 ) ĊĠĠĠĠĠĠĠ Ġ// Ġall Ġoct ets Ġstart Ġwith Ġ 1 , Ġlast Ġstarts Ġwith Ġ 0 : ĠĠĠĠĠ 0 b 1 0 0 0 0 0 0 0 ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 b 1 1 1 1 1 1 1 1 ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 b 0 0 0 0 0 0 1 1 ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĠĠĠĠĠĠĠĠĠĠĠ 1 ĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( int 2 Bytes ( 0 xff , Ġ 0 b 1 0 0 0 0 0 0 0 , Ġ 0 b 1 1 1 1 1 1 1 1 , Ġ 0 b 0 0 0 0 0 0 1 1 ), Ġbuffer . read ByteString ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġsame Ġas Ġabove , Ġin Ġhex ĊĠĠĠĠĠĠĠ Ġencode Integer ( buffer , Ġvalue Ġ= Ġ 0 xffff , Ġ 0 x 8 0 , Ġ 7 ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" ff 8 0 ff 0 3 ". hex , Ġbuffer . read ByteString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwrite Empty List () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" 0 0 0 0 ". hex , Ġwrite ( emptyList ())) ĊĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // ĠĠĠ Ġfun Ġempty Name () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠlistOf ( Header ("", Ġ" foo ")) Ċ // ĠĠĠĠĠĠĠ ĠassertEquals (" 0 0 0 0 2 0 8 2 9 4 e 7 ". hex , Ġwrite ( headers )) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // ĠĠĠ Ġfun Ġempty Value () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠlistOf ( Header (" foo ", Ġ"")) Ċ // ĠĠĠĠĠĠĠ ĠassertEquals (" 0 0 0 0 2 a 9 4 e 7 0 0 ". hex , Ġwrite ( headers )) Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠString . hex : ĠByte String ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdecode Hex () ĊĊĠĠĠ Ġprivate Ġfun Ġint 2 Bytes ( var arg Ġints : ĠInt ): ĠByte String Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġints . map Ġ{ Ġit . to Byte () Ġ}. toByteArray (). to ByteString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite ( headers : ĠList < Header >): ĠByte String Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwriter Ġ= ĠQ pack . Writer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Ġ= ĠBuffer (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġencoder Buffer Ġ= ĠBuffer (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Blocked Streams Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacknowledge ment Mode Ġ= ĠAck nowledge ment Mode . None ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwriter . encode ( headers ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ