/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 2 Ġkotlin - mbedtls Ġcontributors Ġ( https :// github . com / open - co ap / kotlin - mbedtls ) Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ* Ġ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 Ġorg . open co ap . ssl Ċ Ċ import Ġcom . sun . j na . Memory Ċ import Ġcom . sun . j na . Pointer Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . open co ap . ssl . util . decode ToString Ċ import Ġorg . open co ap . ssl . util . to ByteBuffer Ċ import Ġorg . open co ap . ssl . util . to Memory Ċ import Ġjava . nio . ByteBuffer Ċ Ċ internal Ġclass ĠReceive Callback Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġsend Ġ= ĠSend Callback ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno Data Available () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmem Ġ= ĠMemory ( 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠReceive Callback . callback ( Pointer . NULL , Ġmem , Ġ 1 0 0 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( M bed tls Api . MB ED TLS _ ERR _ SSL _ W ANT _ READ , Ġret ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġcopy Ġdata Ġto Ġpointer `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= Ġ" dup a ". to ByteBuffer () ĊĠĠĠĠĠĠĠ Ġval Ġmem Ġ= ĠMemory ( 1 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠReceive Callback . invoke ( buf ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReceive Callback . callback ( Pointer . NULL , Ġmem , Ġ 1 0 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġret ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" dup a ", Ġmem . get ByteArray ( 0 , Ġ 4 ). decode ToString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġcopy Ġdata Ġto Ġpointer Ġ- Ġfrom Ġbuffer Ġposition `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= ĠByteBuffer . allocate Direct ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġbuf . put (" aa ad up a ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠ Ġbuf . flip () ĊĠĠĠĠĠĠĠ Ġbuf . position ( 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġmem Ġ= ĠMemory ( 1 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠReceive Callback . invoke ( buf ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReceive Callback . callback ( Pointer . NULL , Ġmem , Ġ 2 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġret ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" du ", Ġmem . get ByteArray ( 0 , Ġret ). decode ToString ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġand ĊĠĠĠĠĠĠĠ ĠassertEquals ( M bed tls Api . MB ED TLS _ ERR _ SSL _ W ANT _ READ , ĠReceive Callback . callback ( Pointer . NULL , Ġmem , Ġ 1 0 0 , Ġ 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġsent Ġbytes `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsent Buf Ġ= Ġsend . invoke Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġsend . callback ( Pointer . NULL , Ġ" dup a ". to Memory (), Ġ 4 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" dup a ", Ġsent Buf ?. decode ToString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġsent Ġmultiple Ġtimes `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġsend . invoke ({ Ġindex Ġ+= Ġ 1 Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġsend . callback ( Pointer . NULL , Ġ" dup a ". to Memory (), Ġ 4 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġsend . callback ( Pointer . NULL , Ġ" dup a 2 ". to Memory (), Ġ 4 )) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġindex ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġfailed Ġwhen Ġcalled Ġoutside Ġinvoke Ġscope `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( M bed tls Api . MB ED TLS _ ERR _ NET _ SEND _ FAILED , Ġsend . callback ( Pointer . NULL , Ġ" dup a ". to Memory (), Ġ 4 )) ĊĠĠĠ Ġ} Ċ } Ċ