public void test_should_handle_runtime_error_properly() {
   // given
   givenExceptionWhileRequestingWebService();
   // when
   ExchangeRate downloadedRate = downloadRate("USD", "SGD");
   // then
   assertFalse(downloadedRate.isOk());
   assertRate(downloadedRate, "USD", "SGD");
   assertEquals("Unable to get exchange rates: Timeout", downloadedRate.getErrorMessage());
 }
 public void test_should_skip_unknown_currency() {
   // given
   givenResponseFromWebService(
       anyUrl(), "Exception: Unable to convert ToCurrency to Currency\r\nStacktrace...");
   // when
   ExchangeRate rate = downloadRate("USD", "AAA");
   // then
   assertFalse(rate.isOk());
   assertRate(rate, "USD", "AAA");
 }
 public void test_should_handle_error_from_webservice_properly() {
   // given
   givenResponseFromWebService(
       anyUrl(), "System.IO.IOException: There is not enough space on the disk.\r\nStacktrace...");
   // when
   ExchangeRate downloadedRate = downloadRate("USD", "SGD");
   // then
   assertFalse(downloadedRate.isOk());
   assertEquals(
       "Something wrong with the exchange rates provider. Response from the service - System.IO.IOException: There is not enough space on the disk.",
       downloadedRate.getErrorMessage());
 }