japod@55: package org.apidesign.apifest08.test; japod@55: japod@55: japod@55: import java.math.BigDecimal; japod@55: import java.util.Currency; japod@55: import org.apidesign.apifest08.currency.ExchangeRate; japod@55: import org.apidesign.apifest08.currency.ExchangeRateFinder; japod@55: japod@55: japod@55: class TestExchangeRateFinder japod@55: implements ExchangeRateFinder japod@55: { japod@55: private final BigDecimal min; japod@55: private final BigDecimal max; japod@55: private final BigDecimal stepUp; japod@55: private final BigDecimal stepDown; japod@55: private BigDecimal step; japod@55: private BigDecimal rate; japod@55: private boolean firstCall; japod@55: japod@55: TestExchangeRateFinder(final BigDecimal mn, japod@55: final BigDecimal mx, japod@55: final BigDecimal start, japod@55: final BigDecimal up, japod@55: final BigDecimal down) japod@55: { japod@55: min = mn; japod@55: max = mx; japod@55: rate = start; japod@55: stepUp = up; japod@55: stepDown = down; japod@55: firstCall = true; japod@55: } japod@55: japod@55: public ExchangeRate findRate(Currency a, Currency b) japod@55: { japod@55: final ExchangeRate value; japod@55: japod@55: if(rate.equals(max)) japod@55: { japod@55: step = stepDown; japod@55: } japod@55: else if(rate.equals(min)) japod@55: { japod@55: step = stepUp; japod@55: } japod@55: japod@55: value = new ExchangeRate(a, b, BigDecimal.ONE, rate); japod@55: japod@55: if(firstCall) japod@55: { japod@55: firstCall = false; japod@55: } japod@55: else japod@55: { japod@55: rate = rate.add(step); japod@55: } japod@55: japod@55: return (value); japod@55: } japod@55: }