package Ġcom . h ic zp . ca er ule um . test Ċ Ċ import Ġcom . github . sal om on br ys . kot son . fromJson Ċ import Ġcom . github . sal om on br ys . kot son . jsonObject Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Json Element Ċ import Ġcom . google . gson . JsonObject Ċ import Ġcom . h ic zp . ca er ule um . annotation .* Ċ import Ġcom . h ic zp . ca er ule um . annotation . Headers Ċ import Ġcom . h ic zp . ca er ule um . annotation . Url Ċ import Ġcom . h ic zp . ca er ule um . create Ċ import Ġio . ktor . client . features .* Ċ import Ġio . ktor . client . statement .* Ċ import Ġio . ktor . content .* Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . utils . io .* Ċ import Ġkotlinx . coroutines . Cancellation Exception Ċ import Ġkotlinx . coroutines . Deferred Ċ import Ġkotlinx . coroutines . Job Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . jupiter . api .* Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ const Ġval ĠLOCAL HOST Ġ= Ġ" https :// localhost /" Ċ Ċ @ Suppress (" Deferred Is Result ") Ċ @ BaseUrl ( LOCAL HOST ) Ċ @ Default ContentType (" application / json ") Ċ interface ĠService Ġ{ ĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġfun Ġno ReturnValue (): ĠJob ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġfun Ġwith ReturnValue (): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Get (" user ") ĊĠĠĠ Ġfun Ġwith Url (): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Get (" users /{ user }/ repos ") ĊĠĠĠ Ġfun Ġwith PathVariable (@ Path Ġuser : ĠString ): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Get (" users ") ĊĠĠĠ Ġfun Ġwith QueryParam (@ Query Ġparam 1 : ĠString , Ġ@ Query Ġparam 2 : ĠString ): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Post (" user ") ĊĠĠĠ Ġ@ Form Url Encoded ĊĠĠĠ Ġfun Ġpost Form Url Encoded (@ Field Ġarg 1 : ĠString , Ġ@ Field (" cz p ") Ġarg 2 : ĠString ? Ġ= Ġnull ): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Post (" user ") ĊĠĠĠ Ġ@ Form Url Encoded ĊĠĠĠ Ġfun Ġpost Empty Content (): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Post (" user ") ĊĠĠĠ Ġ@ Form Url Encoded ĊĠĠĠ Ġfun Ġpost With Map (@ Field Map Ġfield Map : ĠMap < String , ĠString >): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Delete ĊĠĠĠ Ġfun Ġdelete (): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Post (" user ") ĊĠĠĠ Ġfun Ġpost Without Body (): ĠDeferred < Json Element > ĊĊĠĠĠ Ġfun Ġnon Abstract ( arg 1 : ĠString ) Ġ= Ġarg 1 ĊĊĠĠĠ Ġsuspend Ġfun Ġnon Abstract And Suspend ( arg 1 : ĠString ) Ġ= Ġarg 1 ĊĊĠĠĠ Ġ@ Jvm Default ĊĠĠĠ Ġfun Ġj vm Default ( arg 1 : ĠString ) Ġ= Ġarg 1 ĊĊĠĠĠ Ġ@ Jvm Default ĊĠĠĠ Ġsuspend Ġfun Ġj vm Default And Suspend ( arg 1 : ĠString ) Ġ= Ġarg 1 ĊĊĠĠĠ Ġ@ Post ĊĠĠĠ Ġfun Ġpost Json (@ Body Ġbody : ĠJsonObject ): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġfun Ġurl (@ Url Ġurl : ĠString , Ġ@ Query Ġarg 1 : ĠString ): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Get (" user /{ path }/ repos ") ĊĠĠĠ Ġfun Ġpath With Slash (@ Path Ġpath : ĠString ): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġfun Ġquery Encode (@ Query Ġarg 1 : ĠString Ġ= Ġ"! "): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Post ĊĠĠĠ Ġ@ Form Url Encoded ĊĠĠĠ Ġfun Ġfield Encode ( ĊĠĠĠĠĠĠĠ Ġ@ Field Map Ġmap : ĠMap < String , ĠString > Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" param 1 " Ġto Ġ" 1 Ġ 2 ! + /" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġfun Ġparam Nullable (@ Query Ġarg : ĠString ?): ĠDeferred < Json Element > ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfunction In Companion Object ( arg : ĠString ) Ġ= Ġarg ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġj vm Static ( arg : ĠString ) Ġ= Ġarg ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġfun Ġraw (): ĠDeferred < HttpResponse > ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġsuspend Get (@ Query Ġarg 1 : ĠString Ġ= Ġ"! "): ĠJson Element ĊĊĠĠĠ Ġ@ Post ĊĠĠĠ Ġsuspend Ġfun Ġsuspend Post (@ Body ĠjsonObject : ĠJsonObject ): ĠJson Element ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġboth Deferred And Suspend (): ĠDeferred < Json Element > ĊĊĠĠĠ Ġ@ Get ("/ not Found ") ĊĠĠĠ Ġsuspend Ġfun Ġnot Found () ĊĊĠĠĠ Ġ@ Post ĊĠĠĠ Ġ@ Form Url Encoded ĊĠĠĠ Ġsuspend Ġfun Ġmulti Annotation (@ Query (" arg 1 ") Ġ@ Field (" arg 2 ") Ġarg : ĠString Ġ= Ġ" !") ĊĊĠĠĠ Ġ@ Post ĊĠĠĠ Ġ@ Form Url Encoded ĊĠĠĠ Ġsuspend Ġfun Ġcontainer Annotation ( ĊĠĠĠĠĠĠĠ Ġ@ Queries ( Query (" arg 1 "), ĠQuery (" arg 2 ")) ĊĠĠĠĠĠĠĠ Ġ@ Fields ( Field (" field 1 "), ĠField (" field 2 ")) ĊĠĠĠĠĠĠĠ Ġarg : ĠString Ġ= Ġ" !" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Post ĊĠĠĠ Ġsuspend Ġfun Ġpost With Text Body ( ĊĠĠĠĠĠĠĠ Ġ@ Body Ġbody : ĠText Content Ġ= ĠText Content (" !", ĠContentType . Text . Plain ) ĊĠĠĠ Ġ): ĠJson Element ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġget With Enum (@ Query Ġtest Enum : ĠTest Enum Ġ= ĠTest Enum . MY _ NAME _ VERY _ LONG ): ĠJson Element ĊĊĠĠĠ Ġ@ Headers ([" Key : Ġ" ]) ĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġheaders Without Value (): ĠJson Element ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġquery Param With Array (@ Query Ġargs : ĠInt Array Ġ= Ġint ArrayOf ( 1 , Ġ 2 , Ġ 3 )): ĠJson Element ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġquery Param With Object Array (@ Query Ġargs : ĠArray < String > Ġ= ĠarrayOf (" 1 ", Ġ" 2 ", Ġ" 3 ")) : ĠJson Element ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġquery Param With List (@ Query Ġargs : ĠList < Int > Ġ= ĠlistOf ( 1 , Ġ 2 , Ġ 3 )): ĠJson Element ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġquery Param With Var args (@ Query Ġvar arg Ġargs : ĠInt Ġ= Ġint ArrayOf ( 1 , Ġ 2 , Ġ 3 )): ĠJson Element ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġquery Param With Empty (@ Query Ġargs : ĠString Ġ= Ġ"") : ĠJson Element ĊĊĠĠĠ Ġ@ Post ĊĠĠĠ Ġ@ Form Url Encoded ĊĠĠĠ Ġsuspend Ġfun Ġfield With Array (@ Field Ġargs : ĠInt Array Ġ= Ġint ArrayOf ( 1 , Ġ 2 , Ġ 3 )): ĠJson Element ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġquery Param With Nullable Array (@ Query Ġargs : ĠArray < Int ?> Ġ= ĠarrayOf ( 1 , Ġnull , Ġ 2 )): ĠJson Element ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġquery Param With Enum Array ( ĊĠĠĠĠĠĠĠ Ġ@ Query Ġargs : ĠArray < Test Enum > Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Enum . MY _ NAME _ VERY _ LONG , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Enum . SORT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ): ĠJson Element ĊĊĠĠĠ Ġ@ Post ĊĠĠĠ Ġsuspend Ġfun Ġreturn With HttpResponse (@ Body Ġbody : ĠString Ġ= Ġ" HelloWorld "): ĠHttpResponse ĊĊĠĠĠ Ġ@ Post ĊĠĠĠ Ġsuspend Ġfun Ġreturn With Http Statement (@ Body Ġbody : ĠJsonObject ): ĠHttp Statement Ċ } Ċ Ċ interface ĠNo BaseUrl Ġ{ ĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġget (): ĠJson Element ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġget With Param (@ Query Ġparam 1 : ĠString Ġ= Ġ"! "): ĠJson Element ĊĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġdynamic (@ Url Ġurl : ĠString Ġ= ĠLOCAL HOST ): ĠJson Element ĊĊĠĠĠ Ġ@ Get ( LOCAL HOST Ġ+ Ġ" path ") ĊĠĠĠ Ġsuspend Ġfun Ġurl In Get (): ĠJson Element ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠbaseUrl Ġ= Ġ" https :// test . com /" ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ BaseUrl ( LOCAL HOST ) Ċ interface ĠProgram matic BaseUrl Ġ{ ĊĠĠĠ Ġ@ Get ĊĠĠĠ Ġsuspend Ġfun Ġget (): ĠJson Element Ċ } Ċ Ċ enum Ġclass ĠTest Enum Ġ{ ĊĠĠĠ Ġ@ Encode Name (" sort ") ĊĠĠĠ ĠMY _ NAME _ VERY _ LONG , ĊĊĠĠĠ Ġ@ Encode Name (" long ") ĊĠĠĠ ĠSORT Ċ } Ċ Ċ @ TestMethod Order ( N ature Order :: class ) Ċ @ Test Instance ( Test Instance . Lifecycle . PER _ CLASS ) Ċ class ĠTest Ġ{ ĊĠĠĠ Ġprivate Ġval ĠhttpClient Ġ= Ġcreate HttpClient () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġservice : ĠService ĊĊĠĠĠ Ġ@ Before All ĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġservice Ġ= ĠhttpClient . create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno ReturnValue () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . no ReturnValue (). join () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwith ReturnValue () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . with ReturnValue (). await (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOCAL HOST ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwith Url () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . with Url (). await (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOCAL HOST Ġ+ Ġ" user " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwith PathVariable () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . with PathVariable (" cz p 3 0 0 9 "). await (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOCAL HOST Ġ+ Ġ" users / cz p 3 0 0 9 / repos " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwith QueryParam () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . with QueryParam (" cz p 1 ", Ġ" cz p 2 "). await (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOCAL HOST Ġ+ Ġ" users ? param 1 = cz p 1 & param 2 = cz p 2 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpost Form Url Encoded () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . post Form Url Encoded (" 0 1 ", Ġ" 0 2 "). await (). body . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" arg 1 = 0 1 & cz p = 0 2 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrepeat Post () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . post Form Url Encoded (" 0 0 1 ", Ġ" 0 0 2 "). await (). body . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" arg 1 = 0 0 1 & cz p = 0 0 2 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpost With NullValue () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . post Form Url Encoded (" 0 1 "). await (). body . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" arg 1 = 0 1 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpost Empty Content () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . post Empty Content (). await (). body . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpost With Map () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . post With Map ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" arg 1 " Ġto Ġ" 0 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" arg 2 " Ġto Ġ" 0 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). await (). body . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" arg 1 = 0 2 & arg 2 = 0 1 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdelete Method () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . delete (). await (). method . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpMethod . Delete . value ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpost Without Body () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . post Without Body (). await (). body . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġnon Abstract () Ġ= Ġservice . non Abstract (" hello "). assert Ġ{ ĊĠĠĠĠĠĠĠ Ġ" hello " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrepeat Non Abstract () Ġ= Ġservice . non Abstract (" hello 2 "). assert Ġ{ ĊĠĠĠĠĠĠĠ Ġ" hello 2 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġnon Abstract And Suspend () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . non Abstract And Suspend (" hello "). assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" hello " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġj vm Default () Ġ= Ġservice . jvm Default (" hello "). assert Ġ{ ĊĠĠĠĠĠĠĠ Ġ" hello " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġj vm Default And Suspend () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . jvm Default And Suspend (" hello "). assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" hello " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpost Json () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠjsonObject ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" key 1 " Ġto Ġ" value 1 " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġservice . post Json ( jsonObject ). await (). body . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġurl () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . url (" user ", Ġ" value 1 "). await (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOCAL HOST Ġ+ Ġ" user ? arg 1 = value 1 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpath With Slash () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . path With Slash (" a / b / c "). await (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOCAL HOST Ġ+ Ġ" user / a / b / c / repos " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġquery With Encode () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . query Encode (). await (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ LOCAL HOST ? arg 1 =% 2 1 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfiled Encode () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . field Encode (). await (). body . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" param 1 = 1 + 2 % 2 1 % 2 B % 2 F " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparam Nullable () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . param Nullable ( null ). await (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOCAL HOST ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" Remove Red undant Qualifier Name ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfunction In Companion Object () Ġ= ĠService . function In Companion Object (" hello "). assert Ġ{ ĊĠĠĠĠĠĠĠ Ġ" hello " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" Remove Red undant Qualifier Name ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġj vm Static () Ġ= ĠService . jvm Static (" hello "). assert Ġ{ ĊĠĠĠĠĠĠĠ Ġ" hello " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtoString Method () Ġ= Ġservice . toString (). assert Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Service Ġinterface Ġ${ Service :: class . qualified Name }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġequals Method () Ġ= Ġ( service Ġ== ĠhttpClient . create < Service > ()). assert Ġ{ ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġraw () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . raw (). await (). status . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatusCode . OK ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsuspend Get () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . suspend Get (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ LOCAL HOST ? arg 1 =% 2 1 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsuspend Post () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠjsonObject ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" a " Ġto Ġ 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġservice . suspend Post ( jsonObject ). body . assert Ġ{ ĠjsonObject . toString () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġboth Deferred And Suspend () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThrows < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . both Deferred And Suspend (). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġclose HttpClient () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold HttpClient Ġ= Ġcreate HttpClient () ĊĠĠĠĠĠĠĠ Ġval Ġold Service Ġ= Ġold HttpClient . create < Service >() ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Service . suspend Get (). let (:: println ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġold HttpClient . close () ĊĊĠĠĠĠĠĠĠ Ġval Ġnew HttpClient Ġ= Ġcreate HttpClient () ĊĠĠĠĠĠĠĠ Ġval Ġnew Service Ġ= Ġnew HttpClient . create < Service >() ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Service . suspend Get (). let (:: println ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnew HttpClient . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcall Closed HttpClient () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠhttpClient Ġ= Ġcreate HttpClient () ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠhttpClient . create < Service >() ĊĠĠĠĠĠĠĠ ĠhttpClient . close () ĊĠĠĠĠĠĠĠ ĠassertThrows < Cancellation Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . suspend Get (). let (:: println ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno BaseUrl () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġno BaseUrl Ġ= ĠhttpClient . create < No BaseUrl >() ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġno BaseUrl . get (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" http :// localhost /" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno BaseUrl With Param () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġno BaseUrl Ġ= ĠhttpClient . create < No BaseUrl >() ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġno BaseUrl . get With Param (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" http :// localhost /? param 1 =% 2 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdynamic BaseUrl () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdynamic BaseUrl Ġ= ĠhttpClient . create < No BaseUrl >( No BaseUrl . baseUrl ) ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic BaseUrl . get (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNo BaseUrl . baseUrl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdynamic Url () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdynamic Url Ġ= ĠhttpClient . create < No BaseUrl >() ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic Url . dynamic ( No BaseUrl . baseUrl ). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNo BaseUrl . baseUrl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġurl In Get () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdynamic Url Ġ= ĠhttpClient . create < No BaseUrl >() ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic Url . url In Get (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOCAL HOST Ġ+ Ġ" path " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġnot Found () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThrows < Client RequestException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . not Found () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmulti Annotation () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . multi Annotation () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcontainer Annotation () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . container Annotation () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpost With Text Body () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . post With Text Body () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget With Enum () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . get With Enum (). url . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// localhost /? test Enum = sort " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġheaders Without Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . headers Without Value (). header . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Headers Ġ[ Accept =[ application / json ], ĠAccept - Charset =[ UTF - 8 ]] " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġiterable Args () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . query Param With Array (). url . assert Ġ{ Ġ" https :// localhost /? args = 1 & args = 2 & args = 3 " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . query Param With Object Array (). url . assert Ġ{ Ġ" https :// localhost /? args = 1 & args = 2 & args = 3 " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . query Param With List (). url . assert Ġ{ Ġ" https :// localhost /? args = 1 & args = 2 & args = 3 " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . query Param With Var args (). url . assert Ġ{ Ġ" https :// localhost /? args = 1 & args = 2 & args = 3 " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . query Param With Empty (). url . assert Ġ{ Ġ" https :// localhost /? args =" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . field With Array (). body . assert Ġ{ Ġ" args = 1 & args = 2 & args = 3 " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . query Param With Nullable Array (). url . assert Ġ{ Ġ" https :// localhost /? args = 1 & args =& args = 2 " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . query Param With Enum Array (). url . assert Ġ{ Ġ" https :// localhost /? args = sort & args = long " Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreturn With HttpResponse () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . return With HttpResponse (). content . read UTF 8 Line () !!. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGson (). fromJson < JsonObject >( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. body . assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" HelloWorld \"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreturn With Http Statement () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠjsonObject (" key " Ġto Ġ" value ") ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . return With Http Statement ( jsonObject ). receive < JsonObject >(). body . assert Ġ{ ĠjsonObject . toString () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġprogram matic BaseUrl () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate HttpClient (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . create < Program matic BaseUrl >(). get (). url . assert Ġ{ ĠLOCAL HOST Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠbaseUrl Ġ= Ġ" https :// test . com /" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate HttpClient (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . create < Program matic BaseUrl >( baseUrl ). get (). url . assert Ġ{ ĠbaseUrl Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After All ĊĠĠĠ Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ ĠhttpClient . close () ĊĠĠĠ Ġ} Ċ } Ċ