package Ġbr . u fs . u ol challenge . data . tests . handlers Ċ Ċ import Ġbr . u fs . u ol challenge . data . handlers . Networking ErrorHandler Ċ import Ġbr . u fs . u ol challenge . domain . Communication Error Ċ import Ġbr . u fs . u ol challenge . domain . Communication Error .* Ċ import Ġcom . google . gson . Json Syntax Exception Ċ import Ġio . reactivex . Observable Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġjava . io . IOException Ċ import Ġjava . net . Socket TimeoutException Ċ import Ġjava . net . Unknown Host Exception ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġbir a Ġon Ġ 1 1 / 3 / 1 7 . Ċ Ġ*/ Ċ Ċ type alias ĠData Flow Ġ= ĠObservable < String > Ċ Ċ class ĠNetwork ing ErrorHandler Tests Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġhandler : ĠNetwork ing ErrorHandler < String > ĊĊĠĠĠ Ġ@ Before Ġfun Ġ` before Ġeach Ġtest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġhandler Ġ= ĠNetwork ing ErrorHandler () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` should Ġhandle Ġinternet Ġunavailable `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġno Internet : ĠData Flow Ġ= ĠObservable . error ( Unknown Host Exception (" No ĠInternet ")) ĊĠĠĠĠĠĠĠ Ġno Internet . compose ( handler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Error ( Internet Unavailable :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` should Ġhandle Ġconnection Ġerrors `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbroken Connection : ĠData Flow Ġ= ĠObservable . error ( IOException (" Canceled ")) ĊĠĠĠĠĠĠĠ Ġbroken Connection . compose ( handler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Error ( Networking H ipp cup :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` should Ġhandle Ġtimeouts `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtimeout : ĠData Flow Ġ= ĠObservable . error ( Socket TimeoutException ()) ĊĠĠĠĠĠĠĠ Ġtimeout . compose ( handler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Error ( Slow :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` should Ġnot Ġhandle Ġother Ġerrors `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġother Error : ĠData Flow Ġ= ĠObservable . error ( Json Syntax Exception (" Broken Ġjson ")) ĊĠĠĠĠĠĠĠ Ġother Error . compose ( handler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Error ({ Ġthrowable Ġ-> Ġthrowable Ġ! is ĠCommunication Error Ġ}) ĊĠĠĠ Ġ} Ċ }