/* Ċ Ġ* ĠCopyright Ġ 2 0 1 4 ĠN ich olas ĠB ily k Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . ac orn ui . collection Ċ Ċ import Ġcom . ac orn ui . recycle . Clear able Ċ import Ġcom . ac orn ui . recycle . limited Pool Ċ import Ġorg . junit . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ /** Ċ Ġ* Ġ@ author Ġnb ily k Ċ Ġ*/ Ċ class ĠLimited Pool Test Ġ{ ĊĊ ĉ @ Test Ġfun Ġtest Ob tain () Ġ{ Ċĉ ĉ val Ġpool Ġ= Ġlimited Pool ( 1 6 , Ġ{ ĠClear able Test () Ġ}) Ċĉ ĉ val Ġitem 1 Ġ= Ġpool . obtain () Ċĉ ĉ val Ġitem 2 Ġ= Ġpool . obtain () Ċĉ ĉ val Ġitem 3 Ġ= Ġpool . obtain () Ċĉ ĉ assertEquals ( 0 , Ġitem 1 . use Count ) Ċĉ ĉ assertEquals ( 0 , Ġitem 2 . use Count ) Ċĉ ĉ assertEquals ( 0 , Ġitem 3 . use Count ) Ċĉ ĉ pool . free ( item 1 ) Ċĉ ĉ pool . free ( item 2 ) Ċĉ ĉ pool . free ( item 3 ) Ċĉ ĉ val Ġitem 4 Ġ= Ġpool . obtain () Ċĉ ĉ val Ġitem 5 Ġ= Ġpool . obtain () Ċĉ ĉ val Ġitem 6 Ġ= Ġpool . obtain () Ċĉ ĉ assertEquals ( 1 , Ġitem 4 . use Count ) Ċĉ ĉ assertEquals ( 1 , Ġitem 5 . use Count ) Ċĉ ĉ assertEquals ( 1 , Ġitem 6 . use Count ) Ċ ĉ } ĊĊ ĉ @ Test Ġfun Ġtest Ob tain Past Capacity () Ġ{ Ċĉ ĉ val Ġpool Ġ= Ġlimited Pool ( 4 , Ġ{ ĠClear able Test () Ġ}) Ċĉ ĉ val Ġitem 1 Ġ= Ġpool . obtain () Ċĉ ĉ val Ġitem 2 Ġ= Ġpool . obtain () Ċĉ ĉ val Ġitem 3 Ġ= Ġpool . obtain () Ċĉ ĉ val Ġitem 4 Ġ= Ġpool . obtain () Ċĉ ĉ val Ġitem 5 Ġ= Ġpool . obtain () Ċĉ ĉ val Ġitem 6 Ġ= Ġpool . obtain () Ċĉ ĉ assertEquals ( 1 , Ġitem 1 . use Count ) Ġ// Ġ 1 Ġand Ġ 2 Ġshould Ġbe Ġre - used , Ġdespite Ġbeing Ġ' active '. Ċĉ ĉ assertEquals ( 1 , Ġitem 2 . use Count ) Ċĉ ĉ assertEquals ( 0 , Ġitem 3 . use Count ) Ċĉ ĉ assertEquals ( 0 , Ġitem 4 . use Count ) Ċĉ ĉ assertEquals ( 1 , Ġitem 5 . use Count ) Ċĉ ĉ assertEquals ( 1 , Ġitem 6 . use Count ) Ċ ĉ } ĊĊ ĉ private Ġclass ĠClear able Test Ġ: ĠClear able Ġ{ ĊĊĉ ĉ var Ġuse Count : ĠInt Ġ= Ġ 0 ĊĊĉ ĉ override Ġfun Ġclear () Ġ{ Ċĉĉ ĉ use Count ++ Ċĉ ĉ } Ċ ĉ } Ċ }