blob: 801e00b56ba5a70a40f007cd14384b88a9d3c879 [file] [log] [blame]
/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.android.vault;
import static com.example.android.vault.VaultProvider.AUTHORITY;
import static com.example.android.vault.VaultProvider.DEFAULT_DOCUMENT_ID;
import android.content.ContentProviderClient;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.DocumentsContract.Document;
import android.test.AndroidTestCase;
import java.util.HashSet;
/**
* Tests for {@link VaultProvider}.
*/
public class VaultProviderTest extends AndroidTestCase {
private static final String MIME_TYPE_DEFAULT = "text/plain";
private ContentProviderClient mClient;
private VaultProvider mProvider;
@Override
protected void setUp() throws Exception {
super.setUp();
mClient = getContext().getContentResolver().acquireContentProviderClient(AUTHORITY);
mProvider = (VaultProvider) mClient.getLocalContentProvider();
mProvider.wipeAllContents();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
mClient.release();
}
public void testDeleteDirectory() throws Exception {
Cursor c;
final String file = mProvider.createDocument(
DEFAULT_DOCUMENT_ID, MIME_TYPE_DEFAULT, "file");
final String dir = mProvider.createDocument(
DEFAULT_DOCUMENT_ID, Document.MIME_TYPE_DIR, "dir");
final String dirfile = mProvider.createDocument(
dir, MIME_TYPE_DEFAULT, "dirfile");
final String dirdir = mProvider.createDocument(
dir, Document.MIME_TYPE_DIR, "dirdir");
final String dirdirfile = mProvider.createDocument(
dirdir, MIME_TYPE_DEFAULT, "dirdirfile");
// verify everything is in place
c = mProvider.queryChildDocuments(DEFAULT_DOCUMENT_ID, null, (Bundle) null);
assertContains(c, "file", "dir");
c = mProvider.queryChildDocuments(dir, null, (Bundle) null);
assertContains(c, "dirfile", "dirdir");
// should remove children and parent ref
mProvider.deleteDocument(dir);
c = mProvider.queryChildDocuments(DEFAULT_DOCUMENT_ID, null, (Bundle) null);
assertContains(c, "file");
mProvider.queryDocument(file, null);
try { mProvider.queryDocument(dir, null); } catch (Exception expected) { }
try { mProvider.queryDocument(dirfile, null); } catch (Exception expected) { }
try { mProvider.queryDocument(dirdir, null); } catch (Exception expected) { }
try { mProvider.queryDocument(dirdirfile, null); } catch (Exception expected) { }
}
private static void assertContains(Cursor c, String... docs) {
final HashSet<String> set = new HashSet<String>();
while (c.moveToNext()) {
set.add(c.getString(c.getColumnIndex(Document.COLUMN_DISPLAY_NAME)));
}
for (String doc : docs) {
assertTrue(doc, set.contains(doc));
}
}
}