package Ġcom . kin . eco system . recovery . restore . presenter Ċ Ċ import Ġandroid . app . Activity . RESULT _ C ANCE LED Ċ import Ġandroid . app . Activity . RESULT _ OK Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent . EXTRA _ INT ENT Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġcom . kin . eco system . recovery . restore . presenter . File Sharing Helper .* Ċ import Ġcom . n ha ar man . mock it ok otlin 2 .* Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertNull Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ import Ġorg . ro bo lectric . annotation . Config Ċ import Ġjava . lang . reflect . Field Ċ import Ġjava . lang . reflect . Modifier ĊĊ Ċ @ Config ( manifest Ġ= ĠConfig . NONE ) Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠFile Sharing Helper Test Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSDK _ INT Ġ= Ġ" SDK _ INT " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfragment : ĠFragment Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfile Sharing Helper : ĠFile Sharing Helper ĊĊĠĠĠ Ġprivate Ġval Ġintent Captor Ġ= Ġargument Captor < Intent >() ĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġfile Sharing Helper Ġ= ĠFile Sharing Helper ( fragment ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` request Ġimage Ġfile Ġwith Ġtitle , Ġandroid Ġos Ġabove Ġand Ġequal Ġto ĠK IT K AT `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġ" inc red ible Ġtitle " ĊĠĠĠĠĠĠĠ Ġset Final Static ( Build . VERSION :: class . java . getField ( SDK _ INT ), Ġ 1 9 ) ĊĠĠĠĠĠĠĠ Ġfile Sharing Helper . request Image File ( title ) ĊĠĠĠĠĠĠĠ Ġverify ( fragment ). startActivity For Result ( intent Captor . capture (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġintent Captor . first Value ĊĠĠĠĠĠĠĠ Ġintent . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Intent . ACTION _ CH OO SER , Ġaction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Intent Ġ= Ġget Parcelable Extra < Intent >( EXTRA _ INT ENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Intent . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Intent . ACTION _ OPEN _ DOCUMENT , Ġaction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcategories . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Intent . CATEGORY _ OP ENABLE , Ġcategories . elementAt ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( INT ENT _ TYPE _ ALL _ IMAGE , Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` request Ġimage Ġfile Ġwith Ġtitle , Ġandroid Ġos Ġbelow ĠK IT K AT `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġ" inc red ible Ġtitle " ĊĠĠĠĠĠĠĠ Ġset Final Static ( Build . VERSION :: class . java . getField ( SDK _ INT ), Ġ 1 8 ) ĊĠĠĠĠĠĠĠ Ġfile Sharing Helper . request Image File ( title ) ĊĠĠĠĠĠĠĠ Ġverify ( fragment ). startActivity For Result ( intent Captor . capture (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġintent Captor . first Value ĊĠĠĠĠĠĠĠ Ġintent . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Intent . ACTION _ CH OO SER , Ġaction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Intent Ġ= Ġget Parcelable Extra < Intent >( EXTRA _ INT ENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Intent . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Intent . ACTION _ P ICK , Ġaction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( categories ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( INT ENT _ TYPE _ ALL _ IMAGE , Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` extract Ġuri Ġfrom Ġresult , Ġrequest Ġcode Ġis Ġnot ĠREQUEST _ CODE _ IMAGE Ġshould Ġfailed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest File Result Ġ= Ġfile Sharing Helper . extract Uri From Activity Result ( 5 6 4 , Ġ 6 5 , Ġnull ) ĊĠĠĠĠĠĠĠ Ġrequest File Result . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( REQUEST _ RESULT _ FAILED , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( file Uri ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` extract Ġuri Ġfrom Ġresult , Ġresult Ġcode Ġis ĠRESULT _ C ANCE LED Ġreturn Ġcancel Ġ` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest File Result Ġ= Ġfile Sharing Helper . extract Uri From Activity Result ( REQUEST _ CODE _ IMAGE , ĠRESULT _ C ANCE LED , Ġnull ) ĊĠĠĠĠĠĠĠ Ġrequest File Result . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( REQUEST _ RESULT _ C ANCE LED , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( file Uri ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` extract Ġuri Ġfrom Ġresult , Ġresult Ġcode Ġis ĠRESULT _ OK Ġreturn Ġok Ġwith Ġcorrect Ġdata Ġ` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata : ĠIntent Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġuri : ĠUri Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġwhenever ( data . data ). thenReturn ( uri ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest File Result Ġ= Ġfile Sharing Helper . extract Uri From Activity Result ( REQUEST _ CODE _ IMAGE , ĠRESULT _ OK , Ġdata ) ĊĠĠĠĠĠĠĠ Ġrequest File Result . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( REQUEST _ RESULT _ OK , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( uri , Ġfile Uri ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġset Final Static ( field : ĠField , ĠnewValue : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġmodifiers Field Ġ= ĠField :: class . java . getDeclared Field (" modifiers ") ĊĠĠĠĠĠĠĠ Ġmodifiers Field . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġmodifiers Field . setInt ( field , Ġfield . modifiers Ġand ĠModifier . FINAL . inv ()) ĊĊĠĠĠĠĠĠĠ Ġfield . set ( null , ĠnewValue ) ĊĠĠĠ Ġ} Ċ }