package Ġco il . memory Ċ Ċ import Ġco il . bitmap . Bitmap Pool Ċ import Ġco il . bitmap . Bitmap Reference Counter Ċ import Ġco il . memory . Memory Cache . Key Ċ import Ġco il . util . DEFAULT _ BITMAP _ SIZE Ċ import Ġco il . util . create Bitmap Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNotNull Ċ import Ġkotlin . test . assertNull Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠStr ong Memory Cache Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` can Ġretrieve Ġcached Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġweak Cache Ġ= ĠEmpty Weak Memory Cache ĊĠĠĠĠĠĠĠ Ġval Ġpool Ġ= ĠBitmap Pool ( Int . MAX _ VALUE ) ĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠBitmap Reference Counter ( weak Cache , Ġpool , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġstrong Cache Ġ= ĠStr ong Memory Cache ( weak Cache , Ġcounter , Ġ( 2 Ġ* ĠDEFAULT _ BITMAP _ SIZE ), Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġcreate Bitmap () ĊĠĠĠĠĠĠĠ Ġstrong Cache . set ( Key (" 1 "), Ġbitmap , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( bitmap , Ġstrong Cache . get ( Key (" 1 ")) ?. bitmap ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` least Ġrecently Ġused Ġvalue Ġis Ġev ict ed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġweak Cache Ġ= ĠEmpty Weak Memory Cache ĊĠĠĠĠĠĠĠ Ġval Ġpool Ġ= ĠBitmap Pool ( Int . MAX _ VALUE ) ĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠBitmap Reference Counter ( weak Cache , Ġpool , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġstrong Cache Ġ= ĠStr ong Memory Cache ( weak Cache , Ġcounter , Ġ( 2 Ġ* ĠDEFAULT _ BITMAP _ SIZE ), Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġcreate Bitmap () ĊĠĠĠĠĠĠĠ Ġstrong Cache . set ( Key (" 1 "), Ġfirst , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġcreate Bitmap () ĊĠĠĠĠĠĠĠ Ġstrong Cache . set ( Key (" 2 "), Ġsecond , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġthird Ġ= Ġcreate Bitmap () ĊĠĠĠĠĠĠĠ Ġstrong Cache . set ( Key (" 3 "), Ġthird , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( strong Cache . get ( Key (" 1 "))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` maxSize Ġ 0 Ġdisables Ġmemory Ġcache `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġweak Cache Ġ= ĠEmpty Weak Memory Cache ĊĠĠĠĠĠĠĠ Ġval Ġpool Ġ= ĠBitmap Pool ( Int . MAX _ VALUE ) ĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠBitmap Reference Counter ( weak Cache , Ġpool , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġstrong Cache Ġ= ĠStr ong Memory Cache ( weak Cache , Ġcounter , Ġ 0 , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġcreate Bitmap () ĊĠĠĠĠĠĠĠ Ġstrong Cache . set ( Key (" 1 "), Ġbitmap , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( strong Cache . get ( Key (" 1 "))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` value Ġis Ġremoved Ġafter Ġinvalidate Ġis Ġcalled `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġweak Cache Ġ= ĠReal Weak Memory Cache ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġpool Ġ= ĠBitmap Pool ( Int . MAX _ VALUE ) ĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠBitmap Reference Counter ( weak Cache , Ġpool , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġstrong Cache Ġ= ĠStr ong Memory Cache ( weak Cache , Ġcounter , Ġ( 2 Ġ* ĠDEFAULT _ BITMAP _ SIZE ), Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġcreate Bitmap () ĊĠĠĠĠĠĠĠ Ġstrong Cache . set ( Key (" 1 "), Ġbitmap , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġstrong Cache . remove ( Key (" 1 ")) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( strong Cache . get ( Key (" 1 "))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` valid Ġev ict ed Ġitem Ġis Ġadded Ġto Ġbitmap Ġpool `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġweak Cache Ġ= ĠReal Weak Memory Cache ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġpool Ġ= ĠBitmap Pool ( Int . MAX _ VALUE ) ĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠBitmap Reference Counter ( weak Cache , Ġpool , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġstrong Cache Ġ= ĠStr ong Memory Cache ( weak Cache , Ġcounter , ĠDEFAULT _ BITMAP _ SIZE , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġcreate Bitmap () ĊĠĠĠĠĠĠĠ Ġstrong Cache . set ( Key (" 1 "), Ġfirst , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( strong Cache . get ( Key (" 1 "))) ĊĊĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġcreate Bitmap () ĊĠĠĠĠĠĠĠ Ġstrong Cache . set ( Key (" 2 "), Ġsecond , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( strong Cache . get ( Key (" 1 "))) ĊĠĠĠĠĠĠĠ ĠassertNull ( weak Cache . get ( Key (" 1 "))) ĊĠĠĠĠĠĠĠ ĠassertEquals ( first , Ġpool . get Dirty OrNull ( first . width , Ġfirst . height , Ġfirst . config )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` invalid Ġev ict ed Ġitem Ġis Ġadded Ġto Ġweak Ġmemory Ġcache `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġweak Cache Ġ= ĠReal Weak Memory Cache ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġpool Ġ= ĠBitmap Pool ( Int . MAX _ VALUE ) ĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠBitmap Reference Counter ( weak Cache , Ġpool , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġstrong Cache Ġ= ĠStr ong Memory Cache ( weak Cache , Ġcounter , ĠDEFAULT _ BITMAP _ SIZE , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġcreate Bitmap () ĊĠĠĠĠĠĠĠ Ġstrong Cache . set ( Key (" key "), Ġfirst , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( strong Cache . get ( Key (" key "))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠIn validate Ġthe Ġfirst Ġbitmap . ĊĠĠĠĠĠĠĠ Ġcounter . invalidate ( first ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠOver write Ġthe Ġvalue Ġin Ġthe Ġmemory Ġcache . ĊĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġcreate Bitmap () ĊĠĠĠĠĠĠĠ Ġstrong Cache . set ( Key (" key "), Ġsecond , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( second , Ġstrong Cache . get ( Key (" key ")) ?. bitmap ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( first , Ġweak Cache . get ( Key (" key ")) ?. bitmap ) ĊĠĠĠĠĠĠĠ ĠassertNull ( pool . get Dirty OrNull ( first . width , Ġfirst . height , Ġfirst . config )) ĊĠĠĠ Ġ} Ċ } Ċ