/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠSquare Ġ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 Ġcom . squareup . wire Ċ Ċ import Ġcom . squareup . wire . protos . kotlin . edge cases . No Fields Ċ import Ġcom . squareup . wire . protos . kotlin . edge cases . One Field Ċ import Ġcom . squareup . wire . protos . uses any . Uses Any Ċ import Ġok io . ByteString Ċ import Ġok io . ByteString . Companion . decode Hex Ċ import Ġkotlin . jvm . Jvm Field Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assert Fails With Ċ import Ġkotlin . test . assertNull Ċ import Ġkotlin . test . assertTrue Ċ import Ġkotlin . test . fail Ċ Ċ class ĠAny Message Test Ġ{ ĊĠ Ġ@ Test Ġfun Ġhappy Path () Ġ{ ĊĠĠĠ Ġval Ġthree Ġ= ĠOne Field ( opt _ int 3 2 Ġ= Ġ 3 ) ĊĠĠĠ Ġval Ġfour Ġ= ĠOne Field ( opt _ int 3 2 Ġ= Ġ 4 ) ĊĊĠĠĠ Ġval Ġuses Any Ġ= ĠUses Any ( ĊĠĠĠĠĠ Ġjust _ one Ġ= ĠAny Message . pack ( three ), ĊĠĠĠĠĠ Ġmany _ an ys Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠAny Message . pack ( three ), ĊĠĠĠĠĠĠĠ ĠAny Message . pack ( four ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠassertEquals ( three , Ġuses Any . just _ one !!. unpack ( One Field . ADAPTER )) ĊĠĠĠ ĠassertEquals ( listOf ( three , Ġfour ), Ġuses Any . many _ an ys . map Ġ{ Ġit . unpack ( One Field . ADAPTER ) Ġ}) ĊĊĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠ Ġuses Any . just _ one . unpack ( Proto Adapter . BOOL ) ĊĠĠĠ Ġ} ĊĠĠĠ ĠassertEquals ( null , Ġuses Any . just _ one . unpack OrNull ( Proto Adapter . BOOL )) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġencode And Decode () Ġ{ ĊĠĠĠ Ġval Ġhex Ġ= Ġ" 0 a 4 3 0 a 3 d 7 4 7 9 7 0 6 5 2 e 6 7 6 f 6 f 6 7 6 c 6 5 6 1 7 0 6 9 7 3 2 e 6 3 6 f 6 d 2 f 7 3 7 1 7 5 6 1 7 2 6 5 7 5 7 0 2 e 7 0 7 2 6 f 7 4 6 f 7 3 2 e 6 b " Ġ+ ĊĠĠĠĠĠ Ġ" 6 f 7 4 6 c 6 9 6 e 2 e 6 5 6 4 6 7 6 5 6 3 6 1 7 3 6 5 7 3 2 e 4 f 6 e 6 5 4 6 6 9 6 5 6 c 6 4 1 2 0 2 0 8 0 3 1 2 4 3 0 a 3 d 7 4 7 9 7 0 6 5 2 e 6 7 6 f 6 f 6 7 6 c 6 5 6 1 " Ġ+ ĊĠĠĠĠĠ Ġ" 7 0 6 9 7 3 2 e 6 3 6 f 6 d 2 f 7 3 7 1 7 5 6 1 7 2 6 5 7 5 7 0 2 e 7 0 7 2 6 f 7 4 6 f 7 3 2 e 6 b 6 f 7 4 6 c 6 9 6 e 2 e 6 5 6 4 6 7 6 5 6 3 6 1 7 3 6 5 7 3 2 e 4 f 6 e 6 5 " Ġ+ ĊĠĠĠĠĠ Ġ" 4 6 6 9 6 5 6 c 6 4 1 2 0 2 0 8 0 3 1 2 4 3 0 a 3 d 7 4 7 9 7 0 6 5 2 e 6 7 6 f 6 f 6 7 6 c 6 5 6 1 7 0 6 9 7 3 2 e 6 3 6 f 6 d 2 f 7 3 7 1 7 5 6 1 7 2 6 5 7 5 7 0 2 e 7 0 7 2 " Ġ+ ĊĠĠĠĠĠ Ġ" 6 f 7 4 6 f 7 3 2 e 6 b 6 f 7 4 6 c 6 9 6 e 2 e 6 5 6 4 6 7 6 5 6 3 6 1 7 3 6 5 7 3 2 e 4 f 6 e 6 5 4 6 6 9 6 5 6 c 6 4 1 2 0 2 0 8 0 4 " ĊĊĠĠĠ Ġval Ġthree Ġ= ĠOne Field ( opt _ int 3 2 Ġ= Ġ 3 ) ĊĠĠĠ Ġval Ġfour Ġ= ĠOne Field ( opt _ int 3 2 Ġ= Ġ 4 ) ĊĊĠĠĠ Ġval Ġuses Any Ġ= ĠUses Any ( ĊĠĠĠĠĠ Ġjust _ one Ġ= ĠAny Message . pack ( three ), ĊĠĠĠĠĠ Ġmany _ an ys Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠAny Message . pack ( three ), ĊĠĠĠĠĠĠĠ ĠAny Message . pack ( four ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠassertEquals ( hex , Ġuses Any . encode ByteString (). hex ()) ĊĠĠĠ ĠassertEquals ( uses Any , ĠUses Any . ADAPTER . decode ( hex . decode Hex ())) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġdecoding With Missing Type Url () Ġ{ ĊĠĠĠ Ġval Ġhex Ġ= Ġ" 0 a 0 4 1 2 0 2 0 8 0 3 1 2 0 4 1 2 0 2 0 8 0 3 1 2 0 4 1 2 0 2 0 8 0 4 " ĊĊĠĠĠ Ġval Ġuses Any Ġ= ĠUses Any . ADAPTER . decode ( hex . decode Hex ()) ĊĠĠĠ ĠassertEquals ("", Ġuses Any . just _ one !!. type Url ) ĊĠĠĠ ĠassertEquals ( 2 , Ġuses Any . many _ an ys . size ) ĊĠĠĠ Ġfor Ġ( many Any Ġin Ġuses Any . many _ an ys ) Ġ{ ĊĠĠĠĠĠ ĠassertEquals ("", Ġmany Any . type Url ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġunpack With Wrong Type Url Throw () Ġ{ ĊĠĠĠ Ġval Ġuses Any Ġ= ĠUses Any ( ĊĠĠĠĠĠ Ġjust _ one Ġ= ĠAny Message . pack ( One Field ( opt _ int 3 2 Ġ= Ġ 3 )), ĊĠĠĠĠĠ Ġmany _ an ys Ġ= ĠlistOf () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġuses Any . just _ one !!. unpack ( No Fields . ADAPTER ) ĊĠĠĠĠĠ Ġfail () ĊĠĠĠ Ġ} Ġcatch Ġ( expected : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠ Ġ" type Ġmismatch : Ġtype . googleapis . com / squareup . protos . kotlin . edge cases . One Field Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠ Ġ" != Ġtype . googleapis . com / squareup . protos . kotlin . edge cases . No Fields ", ĊĠĠĠĠĠĠĠ Ġexpected . message ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġunpack OrNull With Wrong Type Url Returns Null () Ġ{ ĊĠĠĠ Ġval Ġuses Any Ġ= ĠUses Any ( ĊĠĠĠĠĠ Ġjust _ one Ġ= ĠAny Message . pack ( One Field ( opt _ int 3 2 Ġ= Ġ 3 )), ĊĠĠĠĠĠ Ġmany _ an ys Ġ= ĠlistOf () ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠassertNull ( uses Any . just _ one !!. unpack OrNull ( No Type Url Message . ADAPTER )) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġpack Without A Type Url Throws () Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ ĠAny Message . pack ( No Type Url Message ()) ĊĠĠĠĠĠ Ġfail () ĊĠĠĠ Ġ} Ġcatch Ġ( expected : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠ ĠassertTrue ( expected . message !!. startsWith (" re compile Ġclass Ġ"), Ġexpected . message ) ĊĠĠĠĠĠ ĠassertTrue ( ĊĠĠĠĠĠĠĠ Ġexpected . message !!. endsWith (" No Type Url Message Ġto Ġuse Ġit Ġwith ĠAny Message "), ĊĠĠĠĠĠĠĠ Ġexpected . message ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġclass ĠNo Type Url Message ( ĊĠĠĠ ĠunknownFields : ĠByte String Ġ= ĠByte String . EMPTY ĊĠ Ġ) Ġ: ĠMessage < No Type Url Message , ĠNothing >( ADAPTER , ĠunknownFields ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠnewBuilder (): ĠNothing Ġ= Ġthrow ĠAssertionError () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠ Ġval ĠAD AP TER : ĠProto Adapter < No Type Url Message > Ġ= Ġobject Ġ: ĠProto Adapter < No Type Url Message >( ĊĠĠĠĠĠĠĠ ĠField Encoding . LENGTH _ DE LIMIT ED , ĊĠĠĠĠĠĠĠ ĠNo Type Url Message :: class , ĊĠĠĠĠĠĠĠ Ġnull , Ġ// ĠType Url . ĊĠĠĠĠĠĠĠ ĠSyntax . PROTO _ 2 , ĊĠĠĠĠĠĠĠ Ġnull Ġ// ĠIdentity . ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġencoded Size ( value : ĠNo Type Url Message ) Ġ= ĠTODO () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġencode ( writer : ĠProto Writer , Ġvalue : ĠNo Type Url Message ) Ġ= ĠTODO () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġencode ( writer : ĠReverse Proto Writer , Ġvalue : ĠNo Type Url Message ) Ġ= ĠTODO () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdecode ( reader : ĠProto Reader ): ĠNo Type Url Message Ġ= ĠTODO () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġred act ( value : ĠNo Type Url Message ): ĠNo Type Url Message Ġ= ĠTODO () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ