@ file : Suppress (" EXPERIMENT AL _ API _ USAGE ", Ġ" EXPERIMENT AL _ UNSIGNED _ LITERAL S ") Ċ Ċ package Ġcom . dit cho om . mqtt 3 . control packet Ċ Ċ import Ġcom . dit cho om . buffer . allocate New Buffer Ċ import Ġcom . dit cho om . buffer . to Buffer Ċ import Ġcom . dit cho om . mqtt . Malformed Packet Exception Ċ import Ġcom . dit cho om . mqtt . control packet . Control Packet . Companion . read Variable Byte Integer Ċ import Ġcom . dit cho om . mqtt . control packet . Quality Of Service Ċ import Ġcom . dit cho om . mqtt . control packet . format . fixed . get Ċ import Ġcom . dit cho om . mqtt 3 . control packet . Publish Message . Fixed Header Ċ import Ġcom . dit cho om . mqtt 3 . control packet . Publish Message . Variable Header Ċ import Ġkotlin . test .* Ċ Ċ class ĠPublish Message Tests Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġq os Both Bits Set To 1 Throws Malformed Packet Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbyte 1 Ġ= Ġ 0 b 0 0 1 1 1 1 1 0 . to Byte () ĊĠĠĠĠĠĠĠ Ġval Ġremaining Length Ġ= Ġ 1 . to Byte () ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= Ġallocate New Buffer ( 2 u ) ĊĠĠĠĠĠĠĠ Ġbuffer . write ( byte 1 ) ĊĠĠĠĠĠĠĠ Ġbuffer . write ( remaining Length ) ĊĠĠĠĠĠĠĠ Ġbuffer . reset For Read () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠControl Packet V 4 . from ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMal formed Packet Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġq os 0 And Packet Identifier Throws IllegalArgumentException () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfixed Ġ= ĠFixed Header ( qos Ġ= ĠQuality Of Service . AT _ MO ST _ ON CE ) ĊĠĠĠĠĠĠĠ Ġval Ġvariable Ġ= ĠVariable Header ((" t "), Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish Message ( fixed , Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġq os 1 Without Packet Identifier Throws IllegalArgumentException () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfixed Ġ= ĠFixed Header ( qos Ġ= ĠQuality Of Service . AT _ LE AST _ ON CE ) ĊĠĠĠĠĠĠĠ Ġval Ġvariable Ġ= ĠVariable Header ((" t ")) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish Message ( fixed , Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġq os 2 Without Packet Identifier Throws IllegalArgumentException () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfixed Ġ= ĠFixed Header ( qos Ġ= ĠQuality Of Service . EX ACT LY _ ON CE ) ĊĠĠĠĠĠĠĠ Ġval Ġvariable Ġ= ĠVariable Header ((" t ")) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish Message ( fixed , Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgeneric Serialization () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpublish Message Ġ= ĠPublish Message . build Payload ( topic Name Ġ= Ġ" user / log ", Ġpayload Ġ= Ġ" yo lo ". to Buffer ()) ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= Ġallocate New Buffer ( 1 6 u ) ĊĠĠĠĠĠĠĠ Ġpublish Message . serialize ( buffer ) ĊĠĠĠĠĠĠĠ Ġval Ġpublish Payload Ġ= Ġpublish Message . payload ĊĠĠĠĠĠĠĠ Ġpublish Payload ?. position ( 0 ) ĊĠĠĠĠĠĠĠ Ġbuffer . reset For Read () ĊĠĠĠĠĠĠĠ Ġval Ġfirst Byte Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠ ĠassertEquals ( first Byte . toInt (). shr ( 4 ), Ġ 3 , Ġ" fixed Ġheader Ġcontrol Ġpacket Ġtype ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 3 ), Ġ" fixed Ġheader Ġpublish Ġdup Ġflag ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 2 ), Ġ" fixed Ġheader Ġq os Ġbit Ġ 2 ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 1 ), Ġ" fixed Ġheader Ġq os Ġbit Ġ 1 ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 0 ), Ġ" fixed Ġheader Ġretain Ġflag ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( buffer . read Variable Byte Integer (), Ġ 1 4 u , Ġ" fixed Ġheader Ġremaining Ġlength ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 u , Ġbuffer . read Unsigned Short (), Ġ" variable Ġheader Ġtopic Ġname Ġlength ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" user / log ", Ġbuffer . read Utf 8 ( 8 u ). toString (), Ġ" variable Ġheader Ġtopic Ġname Ġvalue ") ĊĠĠĠĠĠĠĠ Ġif Ġ( publish Message . variable . packet Identifier Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( buffer . read Unsigned Short (). toInt (), Ġpublish Message . variable . packet Identifier ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" yo lo ", Ġbuffer . read Utf 8 ( 4 u ). toString (), Ġ" payload Ġvalue ") ĊĠĠĠĠĠĠĠ Ġbuffer . reset For Read () ĊĠĠĠĠĠĠĠ Ġval Ġbyte 1 Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠ Ġval Ġremaining Length Ġ= Ġbuffer . read Variable Byte Integer () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPublish Message . from ( buffer , Ġbyte 1 , Ġremaining Length ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( publish Message , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgeneric Serialization Publish Dup Flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpublish Message Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish Message . build Payload ( topic Name Ġ= Ġ" user / log ", Ġpayload Ġ= Ġ" yo lo ". to Buffer (), Ġdup Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= Ġallocate New Buffer ( 1 6 u ) ĊĠĠĠĠĠĠĠ Ġpublish Message . serialize ( buffer ) ĊĠĠĠĠĠĠĠ Ġpublish Message . payload ?. position ( 0 ) ĊĠĠĠĠĠĠĠ Ġbuffer . reset For Read () ĊĠĠĠĠĠĠĠ Ġval Ġfirst Byte Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠ ĠassertEquals ( first Byte . toInt (). shr ( 4 ), Ġ 3 , Ġ" fixed Ġheader Ġcontrol Ġpacket Ġtype ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( first Byte . get ( 3 ), Ġ" fixed Ġheader Ġpublish Ġdup Ġflag ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 2 ), Ġ" fixed Ġheader Ġq os Ġbit Ġ 2 ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 1 ), Ġ" fixed Ġheader Ġq os Ġbit Ġ 1 ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 0 ), Ġ" fixed Ġheader Ġretain Ġflag ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( buffer . read Variable Byte Integer (), Ġ 1 4 u , Ġ" fixed Ġheader Ġremaining Ġlength ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 u , Ġbuffer . read Unsigned Short (), Ġ" variable Ġheader Ġtopic Ġname Ġlength ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" user / log ", Ġbuffer . read Utf 8 ( 8 u ). toString (), Ġ" variable Ġheader Ġtopic Ġname Ġvalue ") ĊĠĠĠĠĠĠĠ Ġif Ġ( publish Message . variable . packet Identifier Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( buffer . read Unsigned Short (). toInt (), Ġpublish Message . variable . packet Identifier ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" yo lo ", Ġbuffer . read Utf 8 ( 4 u ). toString (), Ġ" payload Ġvalue ") ĊĠĠĠĠĠĠĠ Ġbuffer . reset For Read () ĊĠĠĠĠĠĠĠ Ġval Ġbyte 1 Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠ Ġval Ġremaining Length Ġ= Ġbuffer . read Variable Byte Integer () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPublish Message . from ( buffer , Ġbyte 1 , Ġremaining Length ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( publish Message , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgeneric Serialization Publish Q os 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpublish Message Ġ= ĠPublish Message . build Payload ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtopic Name Ġ= Ġ" user / log ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpayload Ġ= Ġ" yo lo ". to Buffer (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq os Ġ= ĠQuality Of Service . AT _ LE AST _ ON CE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket Identifier Ġ= Ġ 1 3 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= Ġallocate New Buffer ( 1 8 u ) ĊĠĠĠĠĠĠĠ Ġpublish Message . serialize ( buffer ) ĊĠĠĠĠĠĠĠ Ġpublish Message . payload ?. position ( 0 ) ĊĠĠĠĠĠĠĠ Ġbuffer . reset For Read () ĊĠĠĠĠĠĠĠ Ġval Ġfirst Byte Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠ ĠassertEquals ( first Byte . toInt (). shr ( 4 ), Ġ 3 , Ġ" fixed Ġheader Ġcontrol Ġpacket Ġtype ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 3 ), Ġ" fixed Ġheader Ġpublish Ġdup Ġflag ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 2 ), Ġ" fixed Ġheader Ġq os Ġbit Ġ 2 ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( first Byte . get ( 1 ), Ġ" fixed Ġheader Ġq os Ġbit Ġ 1 ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 0 ), Ġ" fixed Ġheader Ġretain Ġflag ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( buffer . read Variable Byte Integer (), Ġ 1 6 u , Ġ" fixed Ġheader Ġremaining Ġlength ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 u , Ġbuffer . read Unsigned Short (), Ġ" variable Ġheader Ġtopic Ġname Ġlength ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" user / log ", Ġbuffer . read Utf 8 ( 8 u ). toString (), Ġ" variable Ġheader Ġtopic Ġname Ġvalue ") ĊĠĠĠĠĠĠĠ Ġif Ġ( publish Message . variable . packet Identifier Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( buffer . read Unsigned Short (). toInt (), Ġpublish Message . variable . packet Identifier ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" yo lo ", Ġbuffer . read Utf 8 ( 4 u ). toString (), Ġ" payload Ġvalue ") ĊĠĠĠĠĠĠĠ Ġbuffer . reset For Read () ĊĠĠĠĠĠĠĠ Ġval Ġbyte 1 Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠ Ġval Ġremaining Length Ġ= Ġbuffer . read Variable Byte Integer () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPublish Message . from ( buffer , Ġbyte 1 , Ġremaining Length ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( publish Message , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgeneric Serialization Publish Q os 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpublish Message Ġ= ĠPublish Message . build Payload ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtopic Name Ġ= Ġ" user / log ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpayload Ġ= Ġ" yo lo ". to Buffer (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq os Ġ= ĠQuality Of Service . EX ACT LY _ ON CE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpacket Identifier Ġ= Ġ 1 3 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= Ġallocate New Buffer ( 1 8 u ) ĊĠĠĠĠĠĠĠ Ġpublish Message . serialize ( buffer ) ĊĠĠĠĠĠĠĠ Ġpublish Message . payload ?. position ( 0 ) ĊĠĠĠĠĠĠĠ Ġbuffer . reset For Read () ĊĠĠĠĠĠĠĠ Ġval Ġfirst Byte Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠ ĠassertEquals ( first Byte . toInt (). shr ( 4 ), Ġ 3 , Ġ" fixed Ġheader Ġcontrol Ġpacket Ġtype ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 3 ), Ġ" fixed Ġheader Ġpublish Ġdup Ġflag ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( first Byte . get ( 2 ), Ġ" fixed Ġheader Ġq os Ġbit Ġ 2 ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 1 ), Ġ" fixed Ġheader Ġq os Ġbit Ġ 1 ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 0 ), Ġ" fixed Ġheader Ġretain Ġflag ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( buffer . read Variable Byte Integer (), Ġ 1 6 u , Ġ" fixed Ġheader Ġremaining Ġlength ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 u , Ġbuffer . read Unsigned Short (), Ġ" variable Ġheader Ġtopic Ġname Ġlength ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" user / log ", Ġbuffer . read Utf 8 ( 8 u ). toString (), Ġ" variable Ġheader Ġtopic Ġname Ġvalue ") ĊĠĠĠĠĠĠĠ Ġif Ġ( publish Message . variable . packet Identifier Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( buffer . read Unsigned Short (). toInt (), Ġpublish Message . variable . packet Identifier ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" yo lo ", Ġbuffer . read Utf 8 ( 4 u ). toString (), Ġ" payload Ġvalue ") ĊĠĠĠĠĠĠĠ Ġbuffer . reset For Read () ĊĠĠĠĠĠĠĠ Ġval Ġbyte 1 Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠ Ġval Ġremaining Length Ġ= Ġbuffer . read Variable Byte Integer () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPublish Message . from ( buffer , Ġbyte 1 , Ġremaining Length ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( publish Message , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgeneric Serialization Publish Ret ain Flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpublish Message Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish Message . build Payload ( topic Name Ġ= Ġ" user / log ", Ġpayload Ġ= Ġ" yo lo ". to Buffer (), Ġretain Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= Ġallocate New Buffer ( 1 6 u ) ĊĠĠĠĠĠĠĠ Ġpublish Message . serialize ( buffer ) ĊĠĠĠĠĠĠĠ Ġpublish Message . payload ?. position ( 0 ) ĊĠĠĠĠĠĠĠ Ġbuffer . reset For Read () ĊĠĠĠĠĠĠĠ Ġval Ġfirst Byte Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠ ĠassertEquals ( first Byte . toInt (). shr ( 4 ), Ġ 3 , Ġ" fixed Ġheader Ġcontrol Ġpacket Ġtype ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 3 ), Ġ" fixed Ġheader Ġpublish Ġdup Ġflag ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 2 ), Ġ" fixed Ġheader Ġq os Ġbit Ġ 2 ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 1 ), Ġ" fixed Ġheader Ġq os Ġbit Ġ 1 ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( first Byte . get ( 0 ), Ġ" fixed Ġheader Ġretain Ġflag ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( buffer . read Variable Byte Integer (), Ġ 1 4 u , Ġ" fixed Ġheader Ġremaining Ġlength ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 u , Ġbuffer . read Unsigned Short (), Ġ" variable Ġheader Ġtopic Ġname Ġlength ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" user / log ", Ġbuffer . read Utf 8 ( 8 u ). toString (), Ġ" variable Ġheader Ġtopic Ġname Ġvalue ") ĊĠĠĠĠĠĠĠ Ġif Ġ( publish Message . variable . packet Identifier Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( buffer . read Unsigned Short (). toInt (), Ġpublish Message . variable . packet Identifier ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" yo lo ", Ġbuffer . read Utf 8 ( 4 u ). toString (), Ġ" payload Ġvalue ") ĊĠĠĠĠĠĠĠ Ġbuffer . reset For Read () ĊĠĠĠĠĠĠĠ Ġval Ġbyte 1 Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠ Ġval Ġremaining Length Ġ= Ġbuffer . read Variable Byte Integer () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPublish Message . from ( buffer , Ġbyte 1 , Ġremaining Length ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( publish Message , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġnull Generic Serialization () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpublish Message Ġ= ĠPublish Message . build ( topic Name Ġ= Ġ" user / log ") ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= Ġallocate New Buffer ( 1 2 u ) ĊĠĠĠĠĠĠĠ Ġpublish Message . serialize ( buffer ) ĊĠĠĠĠĠĠĠ Ġbuffer . reset For Read () ĊĠĠĠĠĠĠĠ Ġval Ġfirst Byte Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠ ĠassertEquals ( first Byte . toInt (). shr ( 4 ), Ġ 3 , Ġ" fixed Ġheader Ġcontrol Ġpacket Ġtype ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 3 ), Ġ" fixed Ġheader Ġpublish Ġdup Ġflag ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 2 ), Ġ" fixed Ġheader Ġq os Ġbit Ġ 2 ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 1 ), Ġ" fixed Ġheader Ġq os Ġbit Ġ 1 ") ĊĠĠĠĠĠĠĠ ĠassertFalse ( first Byte . get ( 0 ), Ġ" fixed Ġheader Ġretain Ġflag ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( buffer . read Variable Byte Integer (), Ġ 1 0 u , Ġ" fixed Ġheader Ġremaining Ġlength ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 u , Ġbuffer . read Unsigned Short (), Ġ" variable Ġheader Ġtopic Ġname Ġlength ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" user / log ", Ġbuffer . read Utf 8 ( 8 u ). toString (), Ġ" variable Ġheader Ġtopic Ġname Ġvalue ") ĊĠĠĠĠĠĠĠ Ġif Ġ( publish Message . variable . packet Identifier Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( buffer . read Unsigned Short (). toInt (), Ġpublish Message . variable . packet Identifier ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuffer . reset For Read () ĊĠĠĠĠĠĠĠ Ġval Ġbyte 1 Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠ Ġval Ġremaining Length Ġ= Ġbuffer . read Variable Byte Integer () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPublish Message . from ( buffer , Ġbyte 1 , Ġremaining Length ) ĊĠĠĠĠĠĠĠ Ġpublish Message . payload ?. reset For Read () ĊĠĠĠĠĠĠĠ ĠassertEquals ( publish Message , Ġresult ) ĊĠĠĠ Ġ} Ċ } Ċ