package Ġcom . mem fault . cloud . sdk . internal Ċ Ċ import Ġcom . mem fault . cloud . sdk . Get Latest Release Callback Ċ import Ġcom . mem fault . cloud . sdk . Mem fault DeviceInfo Ċ import Ġcom . mem fault . cloud . sdk . Mem fault O ta Package Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . slot Ċ import Ġio . mock k . verify Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . util . concurrent . Executor Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . fail Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ Ċ internal Ġclass ĠGet Latest Release Task Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Callback From Response _ returns OnError If No Response () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcallback : ĠGet Latest Release Callback Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġcreate Task ( callback ). create Callback Task From Response ( null ). run () ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġcallback . onError ( any < IOException >()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Callback From Response _ returns OnError On S ad StatusCode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock Response Ġ= Ġmock k < HttpResponse > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcode Ġ} Ġreturns Ġ 3 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmessage Ġ} Ġreturns Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcallback : ĠGet Latest Release Callback Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġcreate Task ( callback ). create Callback Task From Response ( mock Response ). run () ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġcallback . onError ( any ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Callback From Response _ returns Up ToDate On 2 0 4 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock Response Ġ= Ġmock k < HttpResponse > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcode Ġ} Ġreturns Ġ 2 0 4 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcallback : ĠGet Latest Release Callback Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġcreate Task ( callback ). create Callback Task From Response ( mock Response ). run () ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġcallback . on Up ToDate () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Callback From Response _ returns O ta Package On Two H undred () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock Response Ġ= Ġmock k < HttpResponse > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcode Ġ} Ġreturns Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġbody Ġ} Ġreturns ĠRESP ONSE . byte InputStream ( Charsets . UTF _ 8 ) Ġas ĠInputStream ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcallback : ĠGet Latest Release Callback Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġpackage Slot Ġ= Ġslot < Mem fault O ta Package >() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcallback . on Update Available ( capture ( package Slot )) Ġ} Ġreturns ĠUnit ĊĊĠĠĠĠĠĠĠ Ġcreate Task ( callback ). create Callback Task From Response ( mock Response ). run () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( APP _ VERSION , Ġpackage Slot . captured . app Version ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġjson To O ta Package _ created From Valid Response () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġo ta Package Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGet Latest Release Task . json To O ta Package ( JSON _ OBJECT ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( LOCATION , Ġo ta Package . location ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( RELEASE _ NOTES , Ġo ta Package . release Notes ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( APP _ VERSION , Ġo ta Package . app Version ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( MD 5 , Ġo ta Package . md 5 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Map (), Ġo ta Package . extra Info ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġjson To O ta Package _ created From Valid Response With Extra Info () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġo ta Package Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGet Latest Release Task . json To O ta Package ( JSON _ OBJECT _ WITH _ EXTRA _ INFO ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( LOCATION , Ġo ta Package . location ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( RELEASE _ NOTES , Ġo ta Package . release Notes ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( APP _ VERSION , Ġo ta Package . app Version ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( MD 5 , Ġo ta Package . md 5 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( EXTRA _ INFO , Ġo ta Package . extra Info ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġjson To O ta Package _ throws With Empty Json () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGet Latest Release Task . json To O ta Package ( JSONObject ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfail (" Expected Ġexception ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠLOC ATION Ġ= Ġ""" Ċ https :// bar . s 3 . amazonaws . com / foo Ċ """. replace ("\ n ", Ġ"") ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRELEASE _ NOTES Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAPP _ VERSION Ġ= Ġ" 1 . 0 . 0 " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMD 5 Ġ= Ġ" 4 3 c 8 2 1 cfb 0 3 9 f 5 9 aa 8 1 0 7 8 f 6 0 8 8 5 abe 4 " ĊĠĠĠĠĠĠĠ Ġval ĠEX TRA _ INFO Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" meta " Ġto Ġ" data ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" meta 2 " Ġto Ġ" data 2 " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRESP ONSE Ġ= Ġ""" Ċ { ĊĠĠĠ Ġ" artifacts ": Ġ[ ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" build _ id ": Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" created _ date ": Ġ" 2 0 1 9 - 0 5 - 2 2 T 2 1 : 4 3 : 2 0 . 3 5 6 3 9 7 + 0 0 : 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" filename ": Ġ" Screen ĠShot Ġ 2 0 1 9 - 0 5 - 2 1 Ġat Ġ 8 . 2 0 . 5 0 ĠAM . png ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" hardware _ version ": Ġ" proto ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ": Ġ 6 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" md 5 ": Ġ" 4 3 c 8 2 1 cfb 0 3 9 f 5 9 aa 8 1 0 7 8 f 6 0 8 8 5 abe 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ" firmware ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" updated _ date ": Ġ" 2 0 1 9 - 0 5 - 2 2 T 2 1 : 4 3 : 2 0 . 3 6 0 8 5 0 + 0 0 : 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" url ": Ġ" https :// bar . s 3 . amazonaws . com / foo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" extra _ info ": Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ], ĊĠĠĠ Ġ" count _ devices ": Ġ 1 , ĊĠĠĠ Ġ" created _ date ": Ġ" 2 0 1 9 - 0 4 - 2 8 T 0 7 : 4 7 : 0 7 . 8 4 0 8 5 5 + 0 0 : 0 0 ", ĊĠĠĠ Ġ" extra _ info ": Ġnull , ĊĠĠĠ Ġ" id ": Ġ 3 7 , ĊĠĠĠ Ġ" min _ version ": Ġ"", ĊĠĠĠ Ġ" notes ": Ġ"", ĊĠĠĠ Ġ" revision ": Ġ"", ĊĠĠĠ Ġ" updated _ date ": Ġ" 2 0 1 9 - 0 4 - 2 8 T 0 7 : 4 7 : 0 7 . 8 4 0 8 6 6 + 0 0 : 0 0 ", ĊĠĠĠ Ġ" version ": Ġ" 1 . 0 . 0 " Ċ } Ċ """ ĊĠĠĠĠĠĠĠ Ġval ĠJSON _ OBJECT Ġ= ĠJSONObject ( RESPONSE ) ĊĠĠĠĠĠĠĠ Ġval ĠJSON _ OBJECT _ WITH _ EXTRA _ INFO Ġ= Ġadd Extra Info ( JSONObject ( RESPONSE )) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġadd Extra Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj : ĠJSONObject , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextra Info Map : ĠMap < String , ĠString > Ġ= ĠEX TRA _ INFO ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġobj . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextra Info Ġ= ĠJSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra Info Map . forEach Ġ{ Ġ( key , Ġvalue ) Ġ-> Ġput ( key , Ġvalue ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget JSONArray (" artifacts ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getJSONObject ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" extra _ info ", Ġextra Info ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdevice Ġ= ĠMem fault DeviceInfo ( ĊĠĠĠĠĠĠĠ Ġdevice Serial Ġ= Ġ" abc ", ĊĠĠĠĠĠĠĠ Ġhardware Version Ġ= Ġ" proto ", ĊĠĠĠĠĠĠĠ Ġcurrent Version Ġ= Ġ" 1 . 0 . 0 ", ĊĠĠĠĠĠĠĠ Ġsoftware Type Ġ= Ġ" main " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġexecutor : ĠExecutor Ġ= ĠExecutor Ġ{ Ġp 0 Ġ-> Ġp 0 . run () Ġ} ĊĊĠĠĠ Ġfun Ġcreate Task ( callback : ĠGet Latest Release Callback ) Ġ= ĠGet Latest Release Task ( ĊĠĠĠĠĠĠĠ Ġdevice Info Ġ= Ġdevice , ĊĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġexecutor , ĊĠĠĠĠĠĠĠ Ġmem fault Http Api Ġ= Ġmock k (), ĊĠĠĠĠĠĠĠ Ġcallback Ġ= Ġcallback ĊĠĠĠ Ġ) Ċ } Ċ