package Ġtry pp . support . memory Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . testng . Assert Ċ Ċ import Ġorg . testng . annotations . Test Ċ Ċ class ĠPool able Test Ġ{ ĊĠĠĠ Ġclass ĠDummy Pool able Ġ: ĠPool able Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġreset Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Count ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠNo Empty Constructor Pool able ( val Ġid : ĠInt ) Ġ: ĠPool able Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġpool Of Pool able Works As Expected () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdummy Pool Ġ= ĠPool . of ( Dummy Pool able :: class , Ġcapacity Ġ= Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġitem 1 Ġ= Ġdummy Pool . grab New () ĊĠĠĠĠĠĠĠ Ġval Ġitem 2 Ġ= Ġdummy Pool . grab New () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( dummy Pool . remaining Count ). isEqualTo ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġdummy Pool . free All () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( dummy Pool . remaining Count ). isEqualTo ( 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( item 1 . reset Count ). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( item 2 . reset Count ). isEqualTo ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġpool Of Pool able Class Without Empty Constructor Throws Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPool . of ( No Empty Constructor Pool able :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . fail (" Pool able Ġclass Ġmust Ġhave Ġan Ġempty Ġconstructor ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ