### Question:
PreTransactionModel extends BaseStageModel { public void setAmountsPaid(Amounts amountsPaid, String paymentMethod) { checkNotNull(amountsPaid, "Amounts paid must be set"); checkNotEmpty(paymentMethod, "Payment method must be set"); if (amountsPaid.getBaseAmountValue() > transactionRequest.getAmounts().getBaseAmountValue()) { throw new IllegalArgumentException("Paid base amount value can not exceed the request base amount value"); } if (!amountsPaid.getAdditionalAmounts().isEmpty()) { throw new IllegalArgumentException("Paid additional amounts is not supported at the moment - set base amount only"); } if (amountsPaid.getTotalAmountValue() > transactionRequest.getAmounts().getTotalAmountValue()) { throw new IllegalArgumentException("Paid amounts can not exceed requested amounts"); } if (!amountsPaid.getCurrency().equals(transactionRequest.getAmounts().getCurrency())) { throw new IllegalArgumentException("Paid currency does not match request currency"); } flowResponse.setAmountsPaid(amountsPaid, paymentMethod); } private  PreTransactionModel(Activity activity, @NonNull TransactionRequest transactionRequest); private  PreTransactionModel(ClientCommunicator clientCommunicator, @NonNull TransactionRequest transactionRequest,
                                InternalData senderInternalData); @NonNull static PreTransactionModel fromActivity(Activity activity); @NonNull static PreTransactionModel fromService(ClientCommunicator clientCommunicator, TransactionRequest request,
                                                  InternalData senderInternalData); @NonNull TransactionRequest getTransactionRequest(); void changeCurrency(String currency, double exchangeRate); void setAdditionalAmount(String identifier, long amount); void setAdditionalAmountAsBaseFraction(String identifier, float fraction); @SafeVarargs final void addRequestData(String key, T... values); void addNewBasket(Basket basket); void applyDiscountsToBasket(String basketId, List<BasketItem> basketItems, String paymentMethod); void setAmountsPaid(Amounts amountsPaid, String paymentMethod); void setPaymentReferences(AdditionalData paymentReferences); void addOrUpdateCustomerDetails(Customer customer); void sendResponse(); void skip(); @Override @NonNull String getRequestJson();  }### Answer:
@Test(expected = IllegalArgumentException.class) public void shouldThrowIllegalArgumentForDifferentPaidCurrency() throws Exception { preTransactionModel.setAmountsPaid(new Amounts(100, "SEK"), "reward"); }