package Ġcom . king sw im . mock Ċ Ċ import Ġandroid . content . Context Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġjava . io . IOException Ċ import Ġkotlin . collections . HashMap Ċ Ċ object ĠMock Helper Ġ{ ĊĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" MOCK _ MODULE " ĊĠĠĠ Ġprivate Ġval Ġmock Data : ĠMutable Map < String , ĠMutable Map < String , ĠAny >> Ġ= ĠHashMap () ĊĠĠĠ Ġprivate Ġvar Ġopen Mock : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġgson : ĠGson Ġ= ĠGson () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĿå§ĭåĮĸ æīĢæľī mock æķ°æį® ĊĠĠĠĠ Ġ* Ġ å¤ĩ æ³¨ ï¼ļ æľĢ å¥½ æĺ¯åľ¨ Application éĩĮéĿ¢ è°ĥçĶ¨ ï¼Į æıĲ åīį åĩĨå¤ĩ å¥½ æķ°æį® ĊĠĠĠĠ Ġ* Ġ@ param Ġassets Path Ġæĸĩä»¶ åĲį æĪĸèĢħ æĸĩä»¶å¤¹ åĲį ĊĠĠĠĠ Ġ* Ġ@ param Ġis Folder Ġ Ġæĺ¯åĲ¦ æĺ¯ æĸĩä»¶å¤¹ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinit ( context : ĠContext , Ġassets Path : ĠString , Ġis Folder : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Data . clear () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Folder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . assets . list ( assets Path )?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparser Map Ġ= Ġparser Mock Json ( context , ĠConvert Utils . join ( assets Path , it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmock Data . put All ( parser Map ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparser Map Ġ= Ġparser Mock Json ( context , Ġassets Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock Data . put All ( parser Map ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ æīĵå¼Ģ æ¨¡ æĭŁ æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Mock Mode ( open Mock : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . open Mock Ġ= Ġopen Mock ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠéĢļè¿ĩ è·¯å¾Ħ èİ·åıĸ å¯¹åºĶçļĦ æ¨¡ æĭŁ æķ°æį® ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ param Ġurl ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Mock Data ( url : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkeys : ĠSet < String > Ġ= Ġmock Data . keys ĊĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġkeys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url . contains ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmock Data [ key ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĻ¤ éĿŀ æīĭåĬ¨ æĮĩå®ļ ä¸º false , åĲ¦åĪĻ é»ĺè®¤ åıª è¦ģ éħįç½® äºĨ æ¨¡ æĭŁ æķ°æį® å°±ä¼ļ ä½¿çĶ¨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Ġresult Ġ!= Ġnull Ġ&& Ġresult [" mock "] Ġ!= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgson . toJson ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġparser Mock Json ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġassets Path : ĠString ĊĠĠĠ Ġ): ĠMutable Map < String , ĠMutable Map < String , ĠAny >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Map : ĠMutable Map < String , ĠMutable Map < String , ĠAny >> Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġif Ġ( open Mock Ġ&& Ġassets Path . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġcontext . assets . open ( assets Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmock Data Ġ= ĠConvert Utils . inputStream 2 String ( inputStream , Ġ" UTF - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mock Data . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġobject Ġ: ĠType Token < Mutable Map < String , ĠMutable Map < String , ĠAny >> >() Ġ{} . type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è§£æŀĲ æĸĩä»¶ èİ·å¾Ĺ çļĦ æĢ» ä½ĵ Json ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġal L Data Ġ= Ġgson . fromJson < Mutable Map < String , ĠMutable Map < String , ĠAny >> >( mock Data , Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( urlPath , Ġvalue ) Ġin Ġal L Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĪ¤æĸŃ Ġkey éĩĮéĿ¢ æĺ¯åĲ¦ åĲ« æľī å¤ļä¸ª Ġkey . æĮĩåĲĳ åĲĮ ä¸Ģä¸ª Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// key ä¹ĭéĹ´ çĶ¨ "; " åĪĨ åī² ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( urlPath . contains ("; ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// å°Ĩ key ä¸Ģä¸ª ä¸ª åıĸ åĩºæĿ¥ ãĢĤ èµĭåĢ¼ åĲĮ æł· çļĦ Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġurl Path . split ("; ". to Regex ()). to Typed Array ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparser Map [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparser Map [ urlPath ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġparser Map ĊĠĠĠ Ġ} Ċ }