// ĠCopyright Ġ 2 0 2 1 ĠThe ĠCross - Media ĠMeasurement ĠAuthors Ċ // Ċ // Ġ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 Ġorg . wf an et . panel match . client . ex chan get ask s Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġcom . google . protobuf . ByteString Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . JUnit 4 Ċ import Ġorg . mockito . kotlin . any Ċ import Ġorg . mockito . kotlin . mock Ċ import Ġorg . mockito . kotlin . times Ċ import Ġorg . mockito . kotlin . verify Ċ import Ġorg . mockito . kotlin . verify No More Interactions Ċ import Ġorg . mockito . kotlin . wh enever Ċ import Ġorg . wf an et . measurement . storage . Storage Client Ċ import Ġorg . wf an et . panel match . common . testing . Always Ready Th rott ler Ċ import Ġorg . wf an et . panel match . common . testing . run Blocking Test Ċ Ċ @ RunWith ( JUnit 4 :: class ) Ċ class ĠInput Task Test Ġ{ ĊĠ Ġprivate Ġval Ġstorage Ġ= Ġmock < Storage Client >() ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` wait Ġon Ġinput `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠ Ġval Ġblob Key Ġ= Ġ" mp - crypto - key " ĊĠĠĠ Ġval Ġtask Ġ= ĠInput Task ( blob Key , ĠAlways Ready Th rott ler , Ġstorage ) ĊĊĠĠĠ Ġwhenever ( storage . get Blob ( any ())) ĊĠĠĠĠĠ Ġ. thenReturn ( null ) ĊĠĠĠĠĠ Ġ. thenReturn ( null ) ĊĠĠĠĠĠ Ġ. thenReturn ( null ) ĊĠĠĠĠĠ Ġ. thenReturn ( null ) ĊĠĠĠĠĠ Ġ. thenReturn ( mock ()) ĊĊĠĠĠ Ġval Ġresult : ĠMap < String , ĠFlow < ByteString >> Ġ= Ġtask . execute ( empty Map ()) ĊĊĠĠĠ ĠassertThat ( result ). isEmpty () ĊĊĠĠĠ Ġverify ( storage , Ġtimes ( 5 )). get Blob ( blob Key ) ĊĠĠĠ Ġverify No More Interactions ( storage ) ĊĠ Ġ} Ċ } Ċ