package Ġio . acon ite . client Ċ Ċ import Ġio . acon ite . Response Ċ import Ġio . acon ite . annotations . Body Ċ import Ġio . acon ite . annotations . GET Ċ import Ġio . acon ite . annotations . Header Ċ import Ġio . acon ite . annotations . Response Class Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ Ċ class ĠComplex Response Test Ġ{ ĊĠĠĠ Ġ@ Response Class ĊĠĠĠ Ġdata Ġclass ĠComplex Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Body Ġval Ġbody : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Header Ġval Ġheader : ĠString ? ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Response Class ĊĠĠĠ Ġdata Ġclass ĠGeneric Response < out ĠT >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Header Ġval Ġheader : ĠT ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinterface ĠApi Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ GET ("/ foo ") ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġfoo (): ĠComplex Response ĊĊĠĠĠĠĠĠĠ Ġ@ GET ("/ bar ") ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġbar (): ĠGeneric Response < Int > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Complex Response () Ġ= Ġasync Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠA con ite Client ( Test HttpClient Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġbody (" 1 2 3 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= Ġmap Of (" header " Ġto Ġ" 4 5 6 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġapi Ġ= Ġclient . create < Api >() [" http :// localhost "] ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġapi . foo () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" 1 2 3 ", Ġresponse . body ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" 4 5 6 ", Ġresponse . header ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Generic Response () Ġ= Ġasync Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠA con ite Client ( Test HttpClient Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġbody (" 1 2 3 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= Ġmap Of (" header " Ġto Ġ" 4 5 6 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġapi Ġ= Ġclient . create < Api >() [" http :// localhost "] ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġapi . bar () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 4 5 6 , Ġresponse . header ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Optional Header () Ġ= Ġasync Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠA con ite Client ( Test HttpClient Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġbody (" 1 2 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġapi Ġ= Ġclient . create < Api >() [" http :// localhost "] ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġapi . foo () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" 1 2 3 ", Ġresponse . body ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNull ( response . header ) ĊĠĠĠ Ġ} Ċ }