mobile/android/tests/background/junit3/src/helpers/DBProviderTestCase.java

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/mobile/android/tests/background/junit3/src/helpers/DBProviderTestCase.java	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,73 @@
     1.4 +/* Any copyright is dedicated to the Public Domain.
     1.5 +   http://creativecommons.org/publicdomain/zero/1.0/ */
     1.6 +
     1.7 +package org.mozilla.gecko.background.helpers;
     1.8 +
     1.9 +import java.io.File;
    1.10 +
    1.11 +import android.content.ContentProvider;
    1.12 +import android.content.Context;
    1.13 +import android.test.AndroidTestCase;
    1.14 +import android.test.mock.MockContentResolver;
    1.15 +
    1.16 +/**
    1.17 + * Because ProviderTestCase2 is unable to handle custom DB paths.
    1.18 + */
    1.19 +public abstract class DBProviderTestCase<T extends ContentProvider> extends
    1.20 +    AndroidTestCase {
    1.21 +
    1.22 +  Class<T> providerClass;
    1.23 +  String providerAuthority;
    1.24 +
    1.25 +  protected File fakeProfileDirectory;
    1.26 +  private MockContentResolver resolver;
    1.27 +  private T provider;
    1.28 +
    1.29 +  public DBProviderTestCase(Class<T> providerClass, String providerAuthority) {
    1.30 +    this.providerClass = providerClass;
    1.31 +    this.providerAuthority = providerAuthority;
    1.32 +  }
    1.33 +
    1.34 +  public T getProvider() {
    1.35 +    return provider;
    1.36 +  }
    1.37 +
    1.38 +  public MockContentResolver getMockContentResolver() {
    1.39 +    return resolver;
    1.40 +  }
    1.41 +
    1.42 +  protected String getCacheSuffix() {
    1.43 +    return this.getClass().getName() + "-" + System.currentTimeMillis();
    1.44 +  }
    1.45 +
    1.46 +  @Override
    1.47 +  protected void setUp() throws Exception {
    1.48 +    super.setUp();
    1.49 +
    1.50 +    File cache = getContext().getCacheDir();
    1.51 +    fakeProfileDirectory = new File(cache.getAbsolutePath() + getCacheSuffix());
    1.52 +    System.out.println("Test: Creating profile directory " + fakeProfileDirectory.getAbsolutePath());
    1.53 +    if (!fakeProfileDirectory.mkdir()) {
    1.54 +      throw new IllegalStateException("Could not create temporary directory.");
    1.55 +    }
    1.56 +
    1.57 +    final Context context = getContext();
    1.58 +    assertNotNull(context);
    1.59 +    resolver = new MockContentResolver();
    1.60 +    provider = providerClass.newInstance();
    1.61 +    provider.attachInfo(context, null);
    1.62 +    assertNotNull(provider);
    1.63 +    resolver.addProvider(providerAuthority, getProvider());
    1.64 +  }
    1.65 +
    1.66 +  @Override
    1.67 +  protected void tearDown() throws Exception {
    1.68 +    // We don't check return values.
    1.69 +    System.out.println("Test: Cleaning up " + fakeProfileDirectory.getAbsolutePath());
    1.70 +    for (File child : fakeProfileDirectory.listFiles()) {
    1.71 +      child.delete();
    1.72 +    }
    1.73 +    fakeProfileDirectory.delete();
    1.74 +    super.tearDown();
    1.75 +  }
    1.76 +}

mercurial