public void testUris() {
    assertInvalidUri(InstalledAppProvider.getAuthority());
    assertInvalidUri(RepoProvider.getContentUri());
    assertInvalidUri(AppProvider.getContentUri());
    assertInvalidUri(ApkProvider.getContentUri());
    assertInvalidUri("blah");

    assertValidUri(InstalledAppProvider.getContentUri());
    assertValidUri(InstalledAppProvider.getAppUri("com.example.com"));
    assertValidUri(InstalledAppProvider.getAppUri("blah"));
  }
  public void testUpdate() {

    insertInstalledApp("com.example.app1", 10, "1.0");
    insertInstalledApp("com.example.app2", 10, "1.0");

    assertResultCount(2, InstalledAppProvider.getContentUri());
    assertIsInstalledVersionInDb("com.example.app2", 10, "1.0");

    try {
      getMockContentResolver()
          .update(
              InstalledAppProvider.getAppUri("com.example.app2"),
              createContentValues(11, "1.1"),
              null,
              null);
      fail();
    } catch (UnsupportedOperationException e) {
      // We expect this to happen, because we should be using insert() instead.
    }

    getMockContentResolver()
        .insert(
            InstalledAppProvider.getContentUri(),
            createContentValues("com.example.app2", 11, "1.1"));

    assertResultCount(2, InstalledAppProvider.getContentUri());
    assertIsInstalledVersionInDb("com.example.app2", 11, "1.1");
  }
  public void testDelete() {

    insertInstalledApp("com.example.app1", 10, "1.0");
    insertInstalledApp("com.example.app2", 10, "1.0");

    assertResultCount(2, InstalledAppProvider.getContentUri());

    getMockContentResolver().delete(InstalledAppProvider.getAppUri("com.example.app1"), null, null);

    assertResultCount(1, InstalledAppProvider.getContentUri());
    assertIsInstalledVersionInDb("com.example.app2", 10, "1.0");
  }