/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 . ĠJetBrains Ġs . r . o . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġjet brains . datal ore . base . async Ċ Ċ import Ġjet brains . datal ore . base . async . async Assert . Async Matchers Ċ import Ġjet brains . datal ore . base . async . async Assert . Async Matchers . failure Ċ import Ġjet brains . datal ore . base . async . async Assert . Async Matchers . un finished Ċ import Ġorg . hamcrest . Custom Type Safe Matcher Ċ import Ġorg . hamcrest . Matcher Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . hamcrest . Matchers Ċ import Ġorg . hamcrest . Matchers . same Instance Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠComposite Async Test Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġfirst : ĠSimple Async < Int > Ġ= ĠSimple Async () ĊĠĠĠ Ġprivate Ġvar Ġsecond : ĠSimple Async < Int > Ġ= ĠSimple Async () ĊĠĠĠ Ġprivate Ġvar Ġcomposite : ĠAsync < List < Int >> Ġ= ĠPlatform Async s . composite ( listOf ( first , Ġsecond )) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsuccess One By One () Ġ{ ĊĠĠĠĠĠĠĠ Ġfirst . success ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( composite , Ġun finished < Int >()) ĊĊĠĠĠĠĠĠĠ Ġsecond . success ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( composite , ĠAsync Matchers . succeeded ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġalready Succeeded () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( Platform Async s . composite ( listOf ( Async s . constant ( 0 ))), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAsync Matchers . succeeded ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġempty Request () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( Platform Async s . composite ( emptyList < Async < Int >> ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAsync Matchers . result ( Matchers . has Size ( 0 ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfail With Single Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġfirst . success ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( composite , Ġun finished < Int >()) ĊĊĠĠĠĠĠĠĠ Ġval Ġfailure Ġ= ĠIllegalStateException (" test ") ĊĠĠĠĠĠĠĠ Ġsecond . failure ( failure ) ĊĠĠĠĠĠĠĠ ĠassertThat ( composite , Ġfailure ( same Instance ( failure ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfail With Se veral Exceptions () Ġ{ ĊĠĠĠĠĠĠĠ Ġfirst . failure ( RuntimeException (" 0 ")) ĊĠĠĠĠĠĠĠ Ġsecond . failure ( RuntimeException (" 1 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( composite , Ġfailure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠCustom Type Safe Matcher < Throwable Collection Exception >(" collection Ġof Ġthrow ables ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches S af ely ( failure : ĠThrowable Collection Exception ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthrow ables Ġ= Ġfailure . throw ables ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġthrow ables . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠlistOf (" 0 ", Ġ" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠlistOf ( throw ables [ 0 ]. message , Ġthrow ables [ 1 ]. message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġexpected Ġ== Ġactual ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġresult List Order () Ġ{ ĊĠĠĠĠĠĠĠ Ġsecond . success ( 1 ) ĊĠĠĠĠĠĠĠ Ġfirst . success ( 0 ) ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġval Ġvalue Matcher Ġ= ĠMatch ers . contains ( 0 , Ġ 1 ) Ġas ĠMatcher < List < Int >> ĊĠĠĠĠĠĠĠ ĠassertThat ( composite , ĠAsync Matchers . result ( value Matcher )) ĊĠĠĠ Ġ} Ċ } Ċ