// Path: databoundary/src/main/java/eu/rampsoftware/er/data/CurrencyRepository.java
// public interface CurrencyRepository {
// 
//     Observable<CurrencyData> getCurrencies(final Date date);
// 
//     Observable<SingleValue> getSeries(Date from, Date to, String currencyCode);
// }
// 
// Path: databoundary/src/main/java/eu/rampsoftware/er/data/SingleValue.java
// public class SingleValue {
//     private Date mDate;
//     private double mValue;
// 
//     public SingleValue(final Date date, final double value) {
//         mDate = date;
//         mValue = value;
//     }
// 
//     public Date getDate() {
//         return mDate;
//     }
// 
//     public double getValue() {
//         return mValue;
//     }
// 
//     @Override
//     public String toString() {
//         return "SingleValue{" +
//                 "mDate=" + mDate +
//                 ", mValue=" + mValue +
//                 '}';
//     }
// }
// 
// Path: domain/src/test/java/eu/rampsoftware/er/domain/TestDisposableObserver.java
// public class TestDisposableObserver<T> extends DisposableObserver<T> {
//     private int valuesCount = 0;
// 
//     @Override
//     public void onNext(T value) {
//         valuesCount++;
//     }
// 
//     @Override
//     public void onError(Throwable e) {
//     }
// 
//     @Override
//     public void onComplete() {
//     }
// }
// 
// Path: domain/src/main/java/eu/rampsoftware/er/domain/usecases/GetCurrencySeriesUseCase.java
// public static class CurrencySeriesParam {
//     Date from;
//     Date to;
//     String currencyCode;
// 
//     public CurrencySeriesParam(final Date from,
//                                final Date to,
//                                final String currencyCode) {
//         this.from = checkNotNull(from);
//         this.to = checkNotNull(to);
//         this.currencyCode = checkNotNull(currencyCode);
//         if(currencyCode.isEmpty()){
//             throw new InvalidParameterException("CURRENCY CODE parameter cannot be empty");
//         }
//         if(from.getTime() > to.getTime()){
//             throw new InvalidParameterException("START date cannot be after TO date.");
//         }
//     }
// }


import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.Mock;
import java.security.InvalidParameterException;
import java.util.Date;
import eu.rampsoftware.er.data.CurrencyRepository;
import eu.rampsoftware.er.data.SingleValue;
import eu.rampsoftware.er.domain.TestDisposableObserver;
import io.reactivex.Observable;
import io.reactivex.schedulers.TestScheduler;
import static eu.rampsoftware.er.domain.usecases.GetCurrencySeriesUseCase.CurrencySeriesParam;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
package eu.rampsoftware.er.domain.usecases;






public class GetCurrencySeriesUseCaseTest {

    private static final long MILLIS_22_01_2016__10_00 = 1453453200000L;
    private static final long MILLIS_24_01_2016__10_00 = 1453593600000L;

    @Rule
    public final ExpectedException exception = ExpectedException.none();

    @Mock
    CurrencyRepository mRepositoryMock;
    private GetCurrencySeriesUseCase mUseCase;
// Path: databoundary/src/main/java/eu/rampsoftware/er/data/CurrencyRepository.java
// public interface CurrencyRepository {
// 
//     Observable<CurrencyData> getCurrencies(final Date date);
// 
//     Observable<SingleValue> getSeries(Date from, Date to, String currencyCode);
// }
// 
// Path: databoundary/src/main/java/eu/rampsoftware/er/data/SingleValue.java
// public class SingleValue {
//     private Date mDate;
//     private double mValue;
// 
//     public SingleValue(final Date date, final double value) {
//         mDate = date;
//         mValue = value;
//     }
// 
//     public Date getDate() {
//         return mDate;
//     }
// 
//     public double getValue() {
//         return mValue;
//     }
// 
//     @Override
//     public String toString() {
//         return "SingleValue{" +
//                 "mDate=" + mDate +
//                 ", mValue=" + mValue +
//                 '}';
//     }
// }
// 
// Path: domain/src/test/java/eu/rampsoftware/er/domain/TestDisposableObserver.java
// public class TestDisposableObserver<T> extends DisposableObserver<T> {
//     private int valuesCount = 0;
// 
//     @Override
//     public void onNext(T value) {
//         valuesCount++;
//     }
// 
//     @Override
//     public void onError(Throwable e) {
//     }
// 
//     @Override
//     public void onComplete() {
//     }
// }
// 
// Path: domain/src/main/java/eu/rampsoftware/er/domain/usecases/GetCurrencySeriesUseCase.java
// public static class CurrencySeriesParam {
//     Date from;
//     Date to;
//     String currencyCode;
// 
//     public CurrencySeriesParam(final Date from,
//                                final Date to,
//                                final String currencyCode) {
//         this.from = checkNotNull(from);
//         this.to = checkNotNull(to);
//         this.currencyCode = checkNotNull(currencyCode);
//         if(currencyCode.isEmpty()){
//             throw new InvalidParameterException("CURRENCY CODE parameter cannot be empty");
//         }
//         if(from.getTime() > to.getTime()){
//             throw new InvalidParameterException("START date cannot be after TO date.");
//         }
//     }
// }


// Path: domain/src/test/java/eu/rampsoftware/er/domain/usecases/GetCurrencySeriesUseCaseTest.java
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.Mock;
import java.security.InvalidParameterException;
import java.util.Date;
import eu.rampsoftware.er.data.CurrencyRepository;
import eu.rampsoftware.er.data.SingleValue;
import eu.rampsoftware.er.domain.TestDisposableObserver;
import io.reactivex.Observable;
import io.reactivex.schedulers.TestScheduler;
import static eu.rampsoftware.er.domain.usecases.GetCurrencySeriesUseCase.CurrencySeriesParam;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;

package eu.rampsoftware.er.domain.usecases;






public class GetCurrencySeriesUseCaseTest {

    private static final long MILLIS_22_01_2016__10_00 = 1453453200000L;
    private static final long MILLIS_24_01_2016__10_00 = 1453593600000L;

    @Rule
    public final ExpectedException exception = ExpectedException.none();

    @Mock
    CurrencyRepository mRepositoryMock;
    private GetCurrencySeriesUseCase mUseCase;
    private TestDisposableObserver<SingleValue> mTestObserver;