### Question:
FxRateScenarioArray implements ScenarioArray<FxRate>, ImmutableBean, Serializable { public static FxRateScenarioArray of(CurrencyPair currencyPair, DoubleArray rates) { return new FxRateScenarioArray(currencyPair, rates); } private  FxRateScenarioArray(
      CurrencyPair pair,
      DoubleArray rates); static FxRateScenarioArray of(CurrencyPair currencyPair, DoubleArray rates); static FxRateScenarioArray of(Currency base, Currency counter, DoubleArray rates); @Override int getScenarioCount(); @Override FxRate get(int scenarioIndex); @Override Stream<FxRate> stream(); double fxRate(Currency baseCurrency, Currency counterCurrency, int scenarioIndex); DoubleArray convert(DoubleArray amounts, Currency fromCurrency, Currency toCurrency); FxRateScenarioArray crossRates(FxRateScenarioArray other); static FxRateScenarioArray.Meta meta(); @Override FxRateScenarioArray.Meta metaBean(); CurrencyPair getPair(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void identicalCurrenciesHaveRateOfOne() { assertThatIllegalArgumentException() .isThrownBy(() -> FxRateScenarioArray.of(Currency.EUR, Currency.EUR, DoubleArray.of(1.07, 1.08, 1.09))) .withMessage("Conversion rate between identical currencies must be one"); }
@Test public void coverage() { FxRateScenarioArray rates1 = FxRateScenarioArray.of(Currency.EUR, Currency.USD, DoubleArray.of(1.07, 1.08, 1.09)); FxRateScenarioArray rates2 = FxRateScenarioArray.of(Currency.GBP, Currency.USD, DoubleArray.of(1.46, 1.47, 1.48)); coverImmutableBean(rates1); coverBeanEquals(rates1, rates2); }