/* Ċ ĠCopyright Ġ( C ) Ġ 2 0 1 5 Ġ- Ġ 2 0 2 0 ĠElectron ic ĠAr ts ĠInc . Ġ ĠAll Ġrights Ġreserved . Ċ ĠThis Ġfile Ġis Ġpart Ġof Ġthe ĠOr bit ĠProject Ġ< https :// www . orbit . cloud >. Ċ ĠSee Ġlicense Ġin ĠLICENSE . Ċ Ġ*/ Ċ Ċ package Ġorbit . util . misc Ċ Ċ import Ġio . kot lint est . shouldBe Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġkotlin . test . Test Ċ Ċ class ĠRetry Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` will Ġattempt Ġmultiple Ġtimes `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(++ count Ġ< Ġ 5 ) Ġthrow ĠException (" Fail ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ĠshouldBe Ġ 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` will Ġstop Ġattempting Ġafter Ġspecified Ġamount `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ ĠassertThrows < Retries Exceeded Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġretry ( attempts Ġ= Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" Fail ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcount ĠshouldBe Ġ 5 ĊĠĠĠ Ġ} Ċ }