package Ġjp . j ug g ler . sub way to oter . api čĊč Ċ import Ġandroidx . test . platform . app . Instrumentation Registry č Ċ import Ġandroidx . test . runner . Android JUnit 4 č Ċ import Ġjp . j ug g ler . sub way to oter . api . entity .* č Ċ import Ġjp . j ug g ler . sub way to oter . table . Saved Account č Ċ import Ġjp . j ug g ler . util . JsonObject č Ċ import Ġjp . j ug g ler . util . jsonObject č Ċ import Ġorg . junit . Assert . assertEquals č Ċ import Ġorg . junit . Assert . assertNotNull č Ċ import Ġorg . junit . Test č Ċ import Ġorg . junit . runner . RunWith čĊč Ċ @ RunWith ( Android JUnit 4 :: class ) č Ċ class ĠTest Duplicate Map Ġ{ čĊčĊĠĠĠ Ġprivate Ġval Ġparser Ġ= ĠT oot Parser ( čĊĠĠĠĠĠĠĠ ĠInstrument ation Registry . get Instrumentation (). target Context , čĊĠĠĠĠĠĠĠ ĠSaved Account ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb _ id Ġ= Ġ 1 , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġac ct Arg Ġ= Ġ" user 1 @ host 1 ", čĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Host Arg Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠ Ġ) čĊčĊĠĠĠ Ġprivate Ġfun Ġgen Status ( čĊĠĠĠĠĠĠĠ Ġparser : ĠT oot Parser , čĊĠĠĠĠĠĠĠ Ġaccount Json : ĠJsonObject , čĊĠĠĠĠĠĠĠ Ġstatus Id : ĠString , čĊĠĠĠĠĠĠĠ Ġuri : ĠString , čĊĠĠĠĠĠĠĠ Ġurl : ĠString ? čĊĠĠĠ Ġ): ĠT oot Status Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġitem Json Ġ= ĠjsonObject Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" account ", Ġaccount Json ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" id ", Ġstatus Id ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" uri ", Ġuri ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url Ġ!= Ġnull ) Ġput (" url ", Ġurl ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġreturn ĠT oot Status ( parser , Ġitem Json ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġtest Duplicate Status (): ĠArrayList < Timeline Item > Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġgenerated Items Ġ= ĠArrayList < Timeline Item >() čĊĠĠĠĠĠĠĠ Ġfun Ġcheck Status ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap : ĠDuplicate Map , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser : ĠT oot Parser , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Json : ĠJsonObject , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Id : ĠString , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri : ĠString , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl : ĠString ? čĊĠĠĠĠĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġgen Status ( parser , Ġaccount Json , Ġstatus Id , Ġuri , Ġurl ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( item ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated Items . add ( item ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġmap . is Duplicate ( item )) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġmap . is Duplicate ( item )) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊčĊĠĠĠĠĠĠĠ Ġval Ġaccount 1 Json Ġ= ĠjsonObject Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" username ", Ġ" user 1 ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" acct ", Ġ" user 1 ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" id ", Ġ 1 L ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" url ", Ġ" http ://${ parser . api Host }/ @ user 1 ") čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġaccount 1 Ġ= ĠT oot Account ( parser , Ġaccount 1 Json ) čĊĠĠĠĠĠĠĠ ĠassertNotNull ( account 1 ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠDuplicate Map () čĊčĊĠĠĠĠĠĠĠ Ġ// Ġæ Ļ ® éĢļ ãģ® ãĤ¹ãĥĨ ãĥ¼ãĤ¿ ãĤ¹ čĊĠĠĠĠĠĠĠ Ġcheck Status ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount 1 Json , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" s 1 ", čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" http ://${ parser . api Host }/ @ ${ account 1 . username }/ 1 ", čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" http ://${ parser . api Host }/ @ ${ account 1 . username }/ 1 " čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠ Ġ// Ġ åĪ¥ ãģ® ãĤ¹ãĥĨ ãĥ¼ãĤ¿ ãĤ¹ čĊĠĠĠĠĠĠĠ Ġcheck Status ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount 1 Json , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" s 2 ", čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" http ://${ parser . api Host }/ @ ${ account 1 . username }/ 2 ", čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" http ://${ parser . api Host }/ @ ${ account 1 . username }/ 2 " čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠ Ġ// ĠURI ãģ¯ å¿ħ éł Ī ãģ«ãģª ãģ£ãģŁ ãģ®ãģ§ ãĢģ URI ãģª ãģĹ ãģ® ãĥĨãĤ¹ãĥĪ ãģ¯ è¡Į ãĤı ãģªãģĦ čĊĠĠĠĠĠĠĠ Ġ// Ġ ä»Ĭ åº¦ ãģ¯ URL ãģĮ ãģªãģĦ čĊĠĠĠĠĠĠĠ Ġcheck Status ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount 1 Json , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" s 4 ", čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" http ://${ parser . api Host }/ @ ${ account 1 . username }/ 4 ", čĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ// " http ://${ parser . api Host }/ @ ${ account 1 . username }/ 4 " čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠ Ġ// Ġ ä»Ĭ åº¦ ãģ¯ ID ãģĮ ãģĬ ãģĭ ãģĹãģĦ čĊĠĠĠĠĠĠĠ Ġcheck Status ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount 1 Json , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"", čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" http ://${ parser . api Host }/ @ ${ account 1 . username }/ 5 ", čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" http ://${ parser . api Host }/ @ ${ account 1 . username }/ 5 " čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠ Ġreturn Ġgenerated Items čĊĠĠĠ Ġ} čĊčĊčĊĠĠĠ Ġprivate Ġfun Ġtest Duplicate Notification (): ĠArrayList < Timeline Item > Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġgenerated Items Ġ= ĠArrayList < Timeline Item >() čĊĠĠĠĠĠĠĠ Ġfun Ġcheck Notification ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap : ĠDuplicate Map , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser : ĠT oot Parser , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString čĊĠĠĠĠĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Json Ġ= ĠJsonObject () čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Json . apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" type ", ĠT oot Notification . TYPE _ MENT ION ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" id ", Ġid ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠT oot Notification ( parser , Ġitem Json ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( item ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated Items . add ( item ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġmap . is Duplicate ( item )) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġmap . is Duplicate ( item )) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠDuplicate Map () čĊĠĠĠĠĠĠĠ Ġcheck Notification ( map , Ġparser , Ġ" n 0 ") čĊĠĠĠĠĠĠĠ Ġcheck Notification ( map , Ġparser , Ġ" n 1 ") čĊĠĠĠĠĠĠĠ Ġcheck Notification ( map , Ġparser , Ġ" n 2 ") čĊĠĠĠĠĠĠĠ Ġcheck Notification ( map , Ġparser , Ġ" n 3 ") čĊĠĠĠĠĠĠĠ Ġreturn Ġgenerated Items čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġtest Duplicate Report (): ĠArrayList < Timeline Item > Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġgenerated Items Ġ= ĠArrayList < Timeline Item >() čĊĠĠĠĠĠĠĠ Ġfun Ġcheck Report ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap : ĠDuplicate Map , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString čĊĠĠĠĠĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠT oot Report ( JsonObject (). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" id ", Ġid ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" action _ taken ", Ġ" eat ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( item ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated Items . add ( item ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġmap . is Duplicate ( item )) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġmap . is Duplicate ( item )) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊčĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠDuplicate Map () čĊĠĠĠĠĠĠĠ Ġcheck Report ( map , Ġ" r 0 ") čĊĠĠĠĠĠĠĠ Ġcheck Report ( map , Ġ" r 1 ") čĊĠĠĠĠĠĠĠ Ġcheck Report ( map , Ġ" r 2 ") čĊĠĠĠĠĠĠĠ Ġcheck Report ( map , Ġ" r 3 ") čĊĠĠĠĠĠĠĠ Ġreturn Ġgenerated Items čĊĠĠĠ Ġ} čĊčĊčĊĠĠĠ Ġprivate Ġfun Ġtest Duplicate Account (): ĠArrayList < Timeline Item > Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġgenerated Items Ġ= ĠArrayList < Timeline Item >() čĊĠĠĠĠĠĠĠ Ġfun Ġcheck Account ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap : ĠDuplicate Map , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser : ĠT oot Parser , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString čĊĠĠĠĠĠĠĠ Ġ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Json Ġ= ĠJsonObject () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Json . apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" username ", Ġ" user $ id ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" acct ", Ġ" user $ id ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" id ", Ġid ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" url ", Ġ" http ://${ parser . api Host }/ @ user $ id ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠT oot Account Ref . notNull ( parser , ĠT oot Account ( parser , Ġitem Json )) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( item ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated Items . add ( item ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġmap . is Duplicate ( item )) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġmap . is Duplicate ( item )) Ġ// Ġ äºĮ åĽŀ çĽ® ãģ¯ true ãģ« ãģªãĤĭ čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠDuplicate Map () čĊĠĠĠĠĠĠĠ Ġcheck Account ( map , Ġparser , Ġ" a 0 ") čĊĠĠĠĠĠĠĠ Ġcheck Account ( map , Ġparser , Ġ" a 1 ") čĊĠĠĠĠĠĠĠ Ġcheck Account ( map , Ġparser , Ġ" a 2 ") čĊĠĠĠĠĠĠĠ Ġcheck Account ( map , Ġparser , Ġ" a 3 ") čĊĠĠĠĠĠĠĠ Ġreturn Ġgenerated Items čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Filter List () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġstatus Items Ġ= Ġtest Duplicate Status () čĊĠĠĠĠĠĠĠ Ġval Ġnot i Items Ġ= Ġtest Duplicate Notification () čĊĠĠĠĠĠĠĠ Ġval Ġreport Items Ġ= Ġtest Duplicate Report () čĊĠĠĠĠĠĠĠ Ġval Ġaccount Items Ġ= Ġtest Duplicate Account () čĊčĊĠĠĠĠĠĠĠ Ġvar Ġmap Ġ= ĠDuplicate Map () čĊĠĠĠĠĠĠĠ Ġvar Ġdst Ġ= Ġmap . filter Duplicate ( status Items ) čĊĠĠĠĠĠĠĠ ĠassertEquals (" status Items ", Ġstatus Items . size , Ġdst . size ) čĊčĊĠĠĠĠĠĠĠ Ġmap Ġ= ĠDuplicate Map () čĊĠĠĠĠĠĠĠ Ġdst Ġ= Ġmap . filter Duplicate ( not i Items ) čĊĠĠĠĠĠĠĠ ĠassertEquals (" not i Items ", Ġnot i Items . size , Ġdst . size ) čĊčĊĠĠĠĠĠĠĠ Ġmap Ġ= ĠDuplicate Map () čĊĠĠĠĠĠĠĠ Ġdst Ġ= Ġmap . filter Duplicate ( report Items ) čĊĠĠĠĠĠĠĠ ĠassertEquals (" report Items ", Ġreport Items . size , Ġdst . size ) čĊčĊĠĠĠĠĠĠĠ Ġmap Ġ= ĠDuplicate Map () čĊĠĠĠĠĠĠĠ Ġdst Ġ= Ġmap . filter Duplicate ( account Items ) čĊĠĠĠĠĠĠĠ ĠassertEquals (" account Items ", Ġaccount Items . size , Ġdst . size ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġtotal Items Ġ= ĠArrayList < Timeline Item >() čĊĠĠĠĠĠĠĠ Ġtotal Items . addAll ( status Items ) čĊĠĠĠĠĠĠĠ Ġtotal Items . addAll ( not i Items ) čĊĠĠĠĠĠĠĠ Ġtotal Items . addAll ( report Items ) čĊĠĠĠĠĠĠĠ Ġtotal Items . addAll ( account Items ) čĊĠĠĠĠĠĠĠ Ġmap Ġ= ĠDuplicate Map () čĊĠĠĠĠĠĠĠ Ġdst Ġ= Ġmap . filter Duplicate ( total Items ) čĊĠĠĠĠĠĠĠ ĠassertEquals (" total Items ", Ġtotal Items . size , Ġdst . size ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġdst 2 Ġ= Ġmap . filter Duplicate ( total Items ) čĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġdst 2 . size ) čĊĠĠĠ Ġ} č Ċ } čĊ