// Path: test/src/com/sharethis/loopy/sdk/MockConfig.java
// public class MockConfig extends Config {
// 
//     @Override
//     public Properties newProperties() {
//         return super.newProperties();
//     }
// 
//     @Override
//     public String clean(String url) {
//         return super.clean(url);
//     }
// 
//     @Override
//     public ResourceLocator newResourceLocator() {
//         return super.newResourceLocator();
//     }
// 
//     @Override
//     public boolean getBooleanProperty(Properties props, String key, boolean defaultValue) {
//         return super.getBooleanProperty(props, key, defaultValue);
//     }
// 
//     @Override
//     public int getIntProperty(Properties props, String key, int defaultValue) {
//         return super.getIntProperty(props, key, defaultValue);
//     }
// 
//     @Override
//     public String getUrlProperty(Properties props, String key) {
//         return super.getUrlProperty(props, key);
//     }
// }
// 
// Path: sdk/src/com/sharethis/loopy/sdk/util/ResourceLocator.java
// public class ResourceLocator {
//     private ClassLoaderProvider classLoaderProvider = new ClassLoaderProvider();
// 
//     public InputStream locateInAssets(Context context, String name) throws IOException {
//         InputStream in = null;
// 
//         try {
//             if(Logger.isDebugEnabled()) {
//                 Logger.d("Looking for " +
//                         name +
//                         " in asset path...");
//             }
// 
//             in = context.getAssets().open(name);
// 
//             if(Logger.isDebugEnabled()) {
//                 Logger.d("Found " +
//                         name +
//                         " in asset path");
//             }
//         }
//         catch (IOException ignore) {
//             // Ignore this, just means no override.
//             if(Logger.isDebugEnabled()) {
//                 Logger.d("No file found in assets with name [" +
//                         name +
//                         "].");
//             }
//         }
// 
//         return in;
//     }
// 
//     public InputStream locateInClassPath(String name) throws IOException {
// 
//         InputStream in = null;
// 
//         if(classLoaderProvider != null) {
// 
//             if(Logger.isDebugEnabled()) {
//                 Logger.d("Looking for " +
//                         name +
//                         " in classpath...");
//             }
// 
//             in = classLoaderProvider.getClassLoader().getResourceAsStream(name);
// 
//             if(in != null) {
//                 if(Logger.isDebugEnabled()) {
//                     Logger.d("Found " +
//                             name +
//                             " in classpath");
//                 }
//             }
//         }
// 
//         return in;
//     }
// 
//     public InputStream locate(Context context, String name) throws IOException {
// 
//         InputStream in = locateInAssets(context, name);
// 
//         if(in == null) {
//             in = locateInClassPath(name);
//         }
// 
//         if(in == null) {
//             Logger.w("Could not locate [" +
//                     name +
//                     "] in any location");
//         }
// 
//         return in;
//     }
// 
//     public ClassLoaderProvider getClassLoaderProvider() {
//         return classLoaderProvider;
//     }
// 
//     public void setClassLoaderProvider(ClassLoaderProvider classLoaderProvider) {
//         this.classLoaderProvider = classLoaderProvider;
//     }
// }


import java.io.InputStream;
import java.util.Properties;
import android.content.Context;
import com.sharethis.loopy.sdk.MockConfig;
import com.sharethis.loopy.sdk.util.ResourceLocator;
import org.mockito.Mockito;
import java.io.IOException;
        Mockito.verify(props).putAll(overrideProps);

        assertEquals(69, config.getApiTimeout());
        assertEquals(96, config.getSessionTimeoutSeconds());
        assertEquals(apiUrl, config.getAPIUrl());
        assertEquals(secureApiUrl, config.getSecureAPIUrl());
        assertTrue(config.isDebug());
    }

    public void testConfigLoadWithoutOverride() throws IOException {

        final Context context = getContext();
        final String apiUrl = "foobar_url/";
        final String secureApiUrl =  "foobar_secure_url/";
        final String apiTimeout = "69";
        final String sessionTimeout = "96";
        final String debug = "true";

        final ResourceLocator resourceLocator = Mockito.mock(ResourceLocator.class);
        final Properties props = Mockito.mock(Properties.class);
        final InputStream in = Mockito.mock(InputStream.class);

        Mockito.when(resourceLocator.locateInClassPath("loopy.properties")).thenReturn(in);
        Mockito.when(resourceLocator.locateInAssets(context, "loopy.properties")).thenReturn(null);
        Mockito.when(props.getProperty("api.host")).thenReturn(apiUrl);
        Mockito.when(props.getProperty("secure.api.host")).thenReturn(secureApiUrl);
        Mockito.when(props.getProperty("api.timeout")).thenReturn(apiTimeout);
        Mockito.when(props.getProperty("session.timeout")).thenReturn(sessionTimeout);
        Mockito.when(props.getProperty("debug")).thenReturn(debug);

// Path: test/src/com/sharethis/loopy/sdk/MockConfig.java
// public class MockConfig extends Config {
// 
//     @Override
//     public Properties newProperties() {
//         return super.newProperties();
//     }
// 
//     @Override
//     public String clean(String url) {
//         return super.clean(url);
//     }
// 
//     @Override
//     public ResourceLocator newResourceLocator() {
//         return super.newResourceLocator();
//     }
// 
//     @Override
//     public boolean getBooleanProperty(Properties props, String key, boolean defaultValue) {
//         return super.getBooleanProperty(props, key, defaultValue);
//     }
// 
//     @Override
//     public int getIntProperty(Properties props, String key, int defaultValue) {
//         return super.getIntProperty(props, key, defaultValue);
//     }
// 
//     @Override
//     public String getUrlProperty(Properties props, String key) {
//         return super.getUrlProperty(props, key);
//     }
// }
// 
// Path: sdk/src/com/sharethis/loopy/sdk/util/ResourceLocator.java
// public class ResourceLocator {
//     private ClassLoaderProvider classLoaderProvider = new ClassLoaderProvider();
// 
//     public InputStream locateInAssets(Context context, String name) throws IOException {
//         InputStream in = null;
// 
//         try {
//             if(Logger.isDebugEnabled()) {
//                 Logger.d("Looking for " +
//                         name +
//                         " in asset path...");
//             }
// 
//             in = context.getAssets().open(name);
// 
//             if(Logger.isDebugEnabled()) {
//                 Logger.d("Found " +
//                         name +
//                         " in asset path");
//             }
//         }
//         catch (IOException ignore) {
//             // Ignore this, just means no override.
//             if(Logger.isDebugEnabled()) {
//                 Logger.d("No file found in assets with name [" +
//                         name +
//                         "].");
//             }
//         }
// 
//         return in;
//     }
// 
//     public InputStream locateInClassPath(String name) throws IOException {
// 
//         InputStream in = null;
// 
//         if(classLoaderProvider != null) {
// 
//             if(Logger.isDebugEnabled()) {
//                 Logger.d("Looking for " +
//                         name +
//                         " in classpath...");
//             }
// 
//             in = classLoaderProvider.getClassLoader().getResourceAsStream(name);
// 
//             if(in != null) {
//                 if(Logger.isDebugEnabled()) {
//                     Logger.d("Found " +
//                             name +
//                             " in classpath");
//                 }
//             }
//         }
// 
//         return in;
//     }
// 
//     public InputStream locate(Context context, String name) throws IOException {
// 
//         InputStream in = locateInAssets(context, name);
// 
//         if(in == null) {
//             in = locateInClassPath(name);
//         }
// 
//         if(in == null) {
//             Logger.w("Could not locate [" +
//                     name +
//                     "] in any location");
//         }
// 
//         return in;
//     }
// 
//     public ClassLoaderProvider getClassLoaderProvider() {
//         return classLoaderProvider;
//     }
// 
//     public void setClassLoaderProvider(ClassLoaderProvider classLoaderProvider) {
//         this.classLoaderProvider = classLoaderProvider;
//     }
// }


// Path: test/src/com/sharethis/loopy/test/ConfigTest.java
import java.io.InputStream;
import java.util.Properties;
import android.content.Context;
import com.sharethis.loopy.sdk.MockConfig;
import com.sharethis.loopy.sdk.util.ResourceLocator;
import org.mockito.Mockito;
import java.io.IOException;

        Mockito.verify(props).putAll(overrideProps);

        assertEquals(69, config.getApiTimeout());
        assertEquals(96, config.getSessionTimeoutSeconds());
        assertEquals(apiUrl, config.getAPIUrl());
        assertEquals(secureApiUrl, config.getSecureAPIUrl());
        assertTrue(config.isDebug());
    }

    public void testConfigLoadWithoutOverride() throws IOException {

        final Context context = getContext();
        final String apiUrl = "foobar_url/";
        final String secureApiUrl =  "foobar_secure_url/";
        final String apiTimeout = "69";
        final String sessionTimeout = "96";
        final String debug = "true";

        final ResourceLocator resourceLocator = Mockito.mock(ResourceLocator.class);
        final Properties props = Mockito.mock(Properties.class);
        final InputStream in = Mockito.mock(InputStream.class);

        Mockito.when(resourceLocator.locateInClassPath("loopy.properties")).thenReturn(in);
        Mockito.when(resourceLocator.locateInAssets(context, "loopy.properties")).thenReturn(null);
        Mockito.when(props.getProperty("api.host")).thenReturn(apiUrl);
        Mockito.when(props.getProperty("secure.api.host")).thenReturn(secureApiUrl);
        Mockito.when(props.getProperty("api.timeout")).thenReturn(apiTimeout);
        Mockito.when(props.getProperty("session.timeout")).thenReturn(sessionTimeout);
        Mockito.when(props.getProperty("debug")).thenReturn(debug);

        MockConfig config = Mockito.spy(new MockConfig());