// Path: lib/src/test/java/io/reist/sklad/TestUtils.java
// static final byte[] TEST_DATA_1 = new byte[] {17, 25, 33};
// 
// Path: lib/src/test/java/io/reist/sklad/TestUtils.java
// static void assertTestObject(Storage storage) throws IOException {
//     assertTestObject(storage, 0);
// }
// 
// Path: lib/src/test/java/io/reist/sklad/TestUtils.java
// static void saveTestObject(Storage storage) throws IOException {
//     saveTestObject(storage, TEST_NAME_1, TEST_DATA_1);
// }


import static org.junit.Assert.assertTrue;
import android.support.annotation.CallSuper;
import android.support.annotation.NonNull;
import org.junit.Test;
import java.io.IOException;
import java.io.InterruptedIOException;
import static io.reist.sklad.TestUtils.TEST_DATA_1;
import static io.reist.sklad.TestUtils.assertTestObject;
import static io.reist.sklad.TestUtils.saveTestObject;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
    @NonNull
    protected abstract S createStorage() throws IOException;

    @Test
    @CallSuper
    public void testDelete() throws Exception {
        S storage = createStorage();
        saveTestObject(storage);
        try {
            storage.delete(TestUtils.TEST_NAME_1);
            assertFalse(storage.contains(TestUtils.TEST_NAME_1));
        } catch (UnsupportedOperationException ignored) {}
    }

    @Test
    @CallSuper
    public void testDeleteAll() throws Exception {
        S storage = createStorage();
        saveTestObject(storage);
        try {
            storage.deleteAll();
            assertFalse(storage.contains(TestUtils.TEST_NAME_1));
        } catch (UnsupportedOperationException ignored) {}
    }

    @Test
    @CallSuper
    public void testSkip() throws Exception {
        S storage = createStorage();
        saveTestObject(storage);
// Path: lib/src/test/java/io/reist/sklad/TestUtils.java
// static final byte[] TEST_DATA_1 = new byte[] {17, 25, 33};
// 
// Path: lib/src/test/java/io/reist/sklad/TestUtils.java
// static void assertTestObject(Storage storage) throws IOException {
//     assertTestObject(storage, 0);
// }
// 
// Path: lib/src/test/java/io/reist/sklad/TestUtils.java
// static void saveTestObject(Storage storage) throws IOException {
//     saveTestObject(storage, TEST_NAME_1, TEST_DATA_1);
// }


// Path: lib/src/test/java/io/reist/sklad/BaseStorageTest.java
import static org.junit.Assert.assertTrue;
import android.support.annotation.CallSuper;
import android.support.annotation.NonNull;
import org.junit.Test;
import java.io.IOException;
import java.io.InterruptedIOException;
import static io.reist.sklad.TestUtils.TEST_DATA_1;
import static io.reist.sklad.TestUtils.assertTestObject;
import static io.reist.sklad.TestUtils.saveTestObject;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;

    @NonNull
    protected abstract S createStorage() throws IOException;

    @Test
    @CallSuper
    public void testDelete() throws Exception {
        S storage = createStorage();
        saveTestObject(storage);
        try {
            storage.delete(TestUtils.TEST_NAME_1);
            assertFalse(storage.contains(TestUtils.TEST_NAME_1));
        } catch (UnsupportedOperationException ignored) {}
    }

    @Test
    @CallSuper
    public void testDeleteAll() throws Exception {
        S storage = createStorage();
        saveTestObject(storage);
        try {
            storage.deleteAll();
            assertFalse(storage.contains(TestUtils.TEST_NAME_1));
        } catch (UnsupportedOperationException ignored) {}
    }

    @Test
    @CallSuper
    public void testSkip() throws Exception {
        S storage = createStorage();
        saveTestObject(storage);
        assertTestObject(storage, TEST_DATA_1.length / 2);