package Ġjp . j ug g ler . sub way to oter . api čĊč Ċ import Ġandroidx . test . runner . Android JUnit 4 č Ċ import Ġandroid . test . mock . Mock Context č Ċ 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 Ġorg . json . JSONObject čĊč Ċ import Ġorg . junit . Test č Ċ import Ġorg . junit . runner . RunWith čĊč Ċ import Ġorg . junit . Assert . assertEquals č Ċ import Ġorg . junit . Assert . assertNotNull čĊč Ċ @ RunWith ( Android JUnit 4 :: class ) č Ċ class ĠTest Duplicate Map Ġ{ čĊĉčĊ ĉ private Ġval Ġparser Ġ= ĠT oot Parser ( čĊĉ ĉ Mock Context (), čĊĉ ĉ Saved Account ( čĊĉĉ ĉ db _ id Ġ= Ġ 1 , čĊĉĉ ĉ acct Ġ= Ġ" user 1 @ host 1 ", čĊĉĉ ĉ host Arg Ġ= Ġnull čĊĉ ĉ ) čĊ ĉ ) čĊĉčĊ ĉ private Ġval Ġgenerated Items Ġ= ĠArrayList < Timeline Item >() čĊĉčĊ ĉ private Ġfun Ġgen Status ( čĊĉ ĉ parser Ġ: ĠT oot Parser , čĊĉ ĉ account Json Ġ: ĠJSONObject , čĊĉ ĉ status Id Ġ: ĠString , čĊĉ ĉ uri Ġ: ĠString ?, čĊĉ ĉ url Ġ: ĠString ? čĊ ĉ ): To ot Status { čĊĉ ĉ val Ġitem Json Ġ= ĠJSONObject () čĊĉĉčĊĉ ĉ item Json . apply Ġ{ čĊĉĉ ĉ put (" account ", Ġaccount Json ) čĊĉĉ ĉ put (" id ", Ġstatus Id ) čĊĉĉ ĉ if ( uri Ġ!= Ġnull ) Ġput (" uri ", Ġuri ) čĊĉĉ ĉ if ( url Ġ!= Ġnull ) Ġput (" url ", Ġurl ) čĊĉ ĉ } čĊĉĉčĊĉ ĉ return ĠT oot Status ( parser , item Json ) čĊ ĉ } čĊĉčĊ ĉ private Ġ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 )) čĊ ĉ } čĊĉčĊ ĉ private Ġfun Ġtest Duplicate Status () Ġ{ čĊĉĉčĊĉ ĉ val Ġaccount 1 Json Ġ= ĠJSONObject () čĊĉ ĉ account 1 Json . apply Ġ{ čĊĉĉ ĉ put (" username ", Ġ" user 1 ") čĊĉĉ ĉ put (" acct ", Ġ" user 1 ") čĊĉĉ ĉ put (" id ", Ġ 1 L ) čĊĉĉ ĉ put (" url ", Ġ" http ://${ parser . access 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 , čĊĉĉ ĉ " 1 ", čĊĉĉ ĉ " http ://${ parser . access Host }/ @ ${ account 1 . username }/ 1 ", čĊĉĉ ĉ " http ://${ parser . access Host }/ @ ${ account 1 . username }/ 1 " čĊĉ ĉ ) čĊĉ ĉ // Ġ åĪ¥ ãģ® ãĤ¹ãĥĨ ãĥ¼ãĤ¿ ãĤ¹ čĊĉ ĉ check Status ( čĊĉĉ ĉ map , čĊĉĉ ĉ parser , čĊĉĉ ĉ account 1 Json , čĊĉĉ ĉ " 2 ", čĊĉĉ ĉ " http ://${ parser . access Host }/ @ ${ account 1 . username }/ 2 ", čĊĉĉ ĉ " http ://${ parser . access Host }/ @ ${ account 1 . username }/ 2 " čĊĉ ĉ ) čĊĉ ĉ // Ġ ä»Ĭ åº¦ ãģ¯ uri ãģĮ ãģªãģĦ čĊĉ ĉ check Status ( čĊĉĉ ĉ map , čĊĉĉ ĉ parser , čĊĉĉ ĉ account 1 Json , čĊĉĉ ĉ " 3 ", čĊĉĉ ĉ null , Ġ// Ġ" http ://${ parser . access Host }/ @ ${ account 1 . username }/ 3 ", čĊĉĉ ĉ " http ://${ parser . access Host }/ @ ${ account 1 . username }/ 3 " čĊĉ ĉ ) čĊĉ ĉ // Ġ ä»Ĭ åº¦ ãģ¯ uri ãģ¨ URL ãģĮ ãģªãģĦ čĊĉ ĉ check Status ( čĊĉĉ ĉ map , čĊĉĉ ĉ parser , čĊĉĉ ĉ account 1 Json , čĊĉĉ ĉ " 4 ", čĊĉĉ ĉ null , Ġ// Ġ" http ://${ parser . access Host }/ @ ${ account 1 . username }/ 4 ", čĊĉĉ ĉ null Ġ// " http ://${ parser . access Host }/ @ ${ account 1 . username }/ 4 " čĊĉ ĉ ) čĊĉ ĉ // Ġ ä»Ĭ åº¦ ãģ¯ ID ãģĮ ãģĬ ãģĭ ãģĹãģĦ čĊĉ ĉ check Status ( čĊĉĉ ĉ map , čĊĉĉ ĉ parser , čĊĉĉ ĉ account 1 Json , čĊĉĉ ĉ "", čĊĉĉ ĉ null , Ġ// Ġ" http ://${ parser . access Host }/ @ ${ account 1 . username }/ 4 ", čĊĉĉ ĉ null Ġ// " http ://${ parser . access Host }/ @ ${ account 1 . username }/ 4 " čĊĉ ĉ ) čĊĉĉčĊ ĉ } čĊĉ čĊĉčĊ ĉ private Ġfun Ġcheck Notification ( čĊĉ ĉ map Ġ: ĠDuplicate Map , čĊĉ ĉ parser Ġ: ĠT oot Parser , čĊĉ ĉ id Ġ: ĠLong čĊ ĉ ) Ġ{ čĊĉ ĉ 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 )) čĊ ĉ } čĊĉčĊ ĉ private Ġfun Ġtest Duplicate Notification () Ġ{ čĊĉ ĉ val Ġmap Ġ= ĠDuplicate Map () čĊĉ ĉ check Notification ( map , parser , 0 L ) čĊĉ ĉ check Notification ( map , parser , 1 L ) čĊĉ ĉ check Notification ( map , parser , 2 L ) čĊĉ ĉ check Notification ( map , parser , 3 L ) čĊ ĉ } čĊĉčĊ ĉ private Ġfun Ġcheck Report ( čĊĉ ĉ map Ġ: ĠDuplicate Map , čĊĉ ĉ id Ġ: ĠLong čĊ ĉ ) Ġ{ čĊĉ ĉ 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 )) čĊ ĉ } čĊĉ čĊĉčĊ ĉ private Ġfun Ġtest Duplicate Report () Ġ{ čĊĉ ĉ val Ġmap Ġ= ĠDuplicate Map () čĊĉ ĉ check Report ( map , 0 L ) čĊĉ ĉ check Report ( map , 1 L ) čĊĉ ĉ check Report ( map , 2 L ) čĊĉ ĉ check Report ( map , 3 L ) čĊ ĉ } čĊĉčĊ ĉ private Ġfun Ġcheck Account ( čĊĉ ĉ map Ġ: ĠDuplicate Map , čĊĉ ĉ parser Ġ: ĠT oot Parser , čĊĉ ĉ id Ġ: ĠLong čĊ ĉ ) Ġ{ čĊčĊĉ ĉ val Ġitem Json Ġ= ĠJSONObject () čĊĉ ĉ item Json . apply Ġ{ čĊĉĉ ĉ put (" username ", Ġ" user $ id ") čĊĉĉ ĉ put (" acct ", Ġ" user $ id ") čĊĉĉ ĉ put (" id ", Ġid ) čĊĉĉ ĉ put (" url ", Ġ" http ://${ parser . access Host }/ @ user $ id ") čĊĉ ĉ } čĊĉĉčĊĉ ĉ val Ġitem Ġ= ĠT oot Account Ref . notNull ( parser , To ot Account ( parser , item Json )) čĊĉ ĉ assertNotNull ( item ) čĊĉ ĉ generated Items . add ( item ) čĊĉ ĉ assertEquals ( false , Ġmap . is Duplicate ( item )) čĊĉ ĉ assertEquals ( true , Ġmap . is Duplicate ( item )) Ġ// Ġ äºĮ åĽŀ çĽ® ãģ¯ true ãģ« ãģªãĤĭ čĊ ĉ } čĊĉčĊ ĉ private Ġfun Ġtest Duplicate Account () Ġ{ čĊĉ ĉ val Ġmap Ġ= ĠDuplicate Map () čĊĉ ĉ check Account ( map , parser , 0 L ) čĊĉ ĉ check Account ( map , parser , 1 L ) čĊĉ ĉ check Account ( map , parser , 2 L ) čĊĉ ĉ check Account ( map , parser , 3 L ) čĊ ĉ } čĊĉčĊ ĉ @ Test Ġfun Ġtest Filter List (){ čĊĉ ĉ generated Items . clear () čĊĉ ĉ test Duplicate Status () čĊĉ ĉ test Duplicate Notification () čĊĉ ĉ test Duplicate Report () čĊĉ ĉ test Duplicate Account () čĊĉĉčĊĉ ĉ val Ġmap Ġ= ĠDuplicate Map () čĊčĊĉ ĉ val Ġdst Ġ= Ġmap . filter Duplicate ( Ġgenerated Items ) čĊĉ ĉ assertEquals ( Ġgenerated Items . size , dst . size ) čĊčĊĉ ĉ val Ġdst 2 Ġ= Ġmap . filter Duplicate ( Ġgenerated Items ) čĊĉ ĉ assertEquals ( Ġ 0 , dst 2 . size ) čĊ ĉ } č Ċ } čĊ