// 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/PreferencesData.java
// public interface PreferencesData {
//     void setCurrenciesExchangeDate(Date date);
//     Optional<Date> getCurrenciesExchangeDate();
// }
// 
// Path: data/src/main/java/eu/rampsoftware/er/data/datasource/CurrencyDataSource.java
// public interface CurrencyDataSource {
// 
//     Observable<CurrencyData> getCurrencies(Date date);
// 
//     boolean containsCurrencyValue(Date date, String currencyCode);
// 
//     boolean containsCurrencyValues(Date date);
// 
//     Observable<SingleValue> getCurrencyValues(Date startDate, Date endDate, String currencyCode);
// 
//     void storeCurrencies(CurrencyData currencyData);
// }
// 
// Path: data/src/main/java/eu/rampsoftware/er/data/datasource/remote/CurrencyDataApi.java
// public interface CurrencyDataApi {
// 
//     @GET("/historical/{date}.json")
//     Observable<Response<CurrencyList>> getCurrencies(@Path("date") String date,
//                                                      @Query("app_id") String appId);
// }
// 
// Path: presentation/src/main/java/eu/rampsoftware/er/properties/ApplicationProperties.java
// public interface ApplicationProperties {
//     String baseUrl();
// 
//     boolean logsEnabled();
// 
//     String getOerAppId();
// 
//     String sharedPreferencesName();
// }
// 
// Path: presentation/src/main/java/eu/rampsoftware/er/properties/ResourcesApplicationProperties.java
// public class ResourcesApplicationProperties implements ApplicationProperties {
// 
//     private final Context mContext;
// 
//     public ResourcesApplicationProperties(Context context){
//         mContext = context;
//     }
// 
// 
//     @Override
//     public String baseUrl(){
//         return mContext.getResources().getString(R.string.base_url);
//     }
// 
//     @Override
//     public boolean logsEnabled() {
//         return mContext.getResources().getBoolean(R.bool.logs_enabled);
//     }
// 
//     @Override
//     public String getOerAppId() {
//         return mContext.getString(R.string.oer_app_id);
//     }
// 
//     @Override
//     public String sharedPreferencesName() {
//         return mContext.getResources().getString(R.string.shared_preferences_name);
//     }
// }


import android.content.Context;
import javax.inject.Named;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import eu.rampsoftware.er.data.CurrencyRepository;
import eu.rampsoftware.er.data.PreferencesData;
import eu.rampsoftware.er.data.datasource.CurrencyDataSource;
import eu.rampsoftware.er.data.datasource.remote.CurrencyDataApi;
import eu.rampsoftware.er.properties.ApplicationProperties;
import eu.rampsoftware.er.properties.ResourcesApplicationProperties;
package eu.rampsoftware.er.di;




@Module
public class TestApplicationModule implements IApplicationModule{

    private final Context mContext;

    public TestApplicationModule(Context context){
        mContext = context;
    }

    @Provides
    @Named("example")
    public String provideExampleString() {
        return "Test Example";
    }

    @Provides
    @Singleton
    public Context provideContext(){
        return mContext;
    }

    @Provides
    @Singleton
    public ApplicationProperties provideApplicationProperties(final Context context){
        return new ResourcesApplicationProperties(context);
    }

    @Provides
    @Override
    @Named("remote")
// 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/PreferencesData.java
// public interface PreferencesData {
//     void setCurrenciesExchangeDate(Date date);
//     Optional<Date> getCurrenciesExchangeDate();
// }
// 
// Path: data/src/main/java/eu/rampsoftware/er/data/datasource/CurrencyDataSource.java
// public interface CurrencyDataSource {
// 
//     Observable<CurrencyData> getCurrencies(Date date);
// 
//     boolean containsCurrencyValue(Date date, String currencyCode);
// 
//     boolean containsCurrencyValues(Date date);
// 
//     Observable<SingleValue> getCurrencyValues(Date startDate, Date endDate, String currencyCode);
// 
//     void storeCurrencies(CurrencyData currencyData);
// }
// 
// Path: data/src/main/java/eu/rampsoftware/er/data/datasource/remote/CurrencyDataApi.java
// public interface CurrencyDataApi {
// 
//     @GET("/historical/{date}.json")
//     Observable<Response<CurrencyList>> getCurrencies(@Path("date") String date,
//                                                      @Query("app_id") String appId);
// }
// 
// Path: presentation/src/main/java/eu/rampsoftware/er/properties/ApplicationProperties.java
// public interface ApplicationProperties {
//     String baseUrl();
// 
//     boolean logsEnabled();
// 
//     String getOerAppId();
// 
//     String sharedPreferencesName();
// }
// 
// Path: presentation/src/main/java/eu/rampsoftware/er/properties/ResourcesApplicationProperties.java
// public class ResourcesApplicationProperties implements ApplicationProperties {
// 
//     private final Context mContext;
// 
//     public ResourcesApplicationProperties(Context context){
//         mContext = context;
//     }
// 
// 
//     @Override
//     public String baseUrl(){
//         return mContext.getResources().getString(R.string.base_url);
//     }
// 
//     @Override
//     public boolean logsEnabled() {
//         return mContext.getResources().getBoolean(R.bool.logs_enabled);
//     }
// 
//     @Override
//     public String getOerAppId() {
//         return mContext.getString(R.string.oer_app_id);
//     }
// 
//     @Override
//     public String sharedPreferencesName() {
//         return mContext.getResources().getString(R.string.shared_preferences_name);
//     }
// }


// Path: presentation/src/test/java/eu/rampsoftware/er/di/TestApplicationModule.java
import android.content.Context;
import javax.inject.Named;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import eu.rampsoftware.er.data.CurrencyRepository;
import eu.rampsoftware.er.data.PreferencesData;
import eu.rampsoftware.er.data.datasource.CurrencyDataSource;
import eu.rampsoftware.er.data.datasource.remote.CurrencyDataApi;
import eu.rampsoftware.er.properties.ApplicationProperties;
import eu.rampsoftware.er.properties.ResourcesApplicationProperties;

package eu.rampsoftware.er.di;




@Module
public class TestApplicationModule implements IApplicationModule{

    private final Context mContext;

    public TestApplicationModule(Context context){
        mContext = context;
    }

    @Provides
    @Named("example")
    public String provideExampleString() {
        return "Test Example";
    }

    @Provides
    @Singleton
    public Context provideContext(){
        return mContext;
    }

    @Provides
    @Singleton
    public ApplicationProperties provideApplicationProperties(final Context context){
        return new ResourcesApplicationProperties(context);
    }

    @Provides
    @Override
    @Named("remote")
    public CurrencyDataSource provideRemoteCurrencyDataSource(final ApplicationProperties properties, final CurrencyDataApi currencyDataApi) {