Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6215859b authored by Hansen Kurli's avatar Hansen Kurli
Browse files

Implement ConnectivityBlobStore remove.

Implement remove(), including tests.

Bug: 307903113
Test: atest ConnectivityBlobStoreTest
Change-Id: Ibf88d68ca3c68fa4ef929cc1d507a3a93bfa6ac0
parent e066965c
Loading
Loading
Loading
Loading
+20 −0
Original line number Original line Diff line number Diff line
@@ -115,4 +115,24 @@ public class ConnectivityBlobStore {


        return null;
        return null;
    }
    }

    /**
     * Removes a blob by the name from the database.
     *
     * @param name Name of the blob to be removed.
     * @return True if a blob was removed. False if no such name was found.
     * @hide
     */
    public boolean remove(@NonNull String name) {
        final int ownerUid = Binder.getCallingUid();
        try {
            final int res = mDb.delete(TABLENAME,
                    "owner=? AND name=?" /* whereClause */,
                    new String[] {Integer.toString(ownerUid), name} /* whereArgs */);
            return res > 0;
        } catch (SQLException e) {
            Log.e(TAG, "Error in removing " + name + ": " + e);
            return false;
        }
    }
}
}
+47 −0
Original line number Original line Diff line number Diff line
@@ -82,4 +82,51 @@ public class ConnectivityBlobStoreTest {
        assertTrue(connectivityBlobStore.put(TEST_NAME, newBlob));
        assertTrue(connectivityBlobStore.put(TEST_NAME, newBlob));
        assertArrayEquals(newBlob, connectivityBlobStore.get(TEST_NAME));
        assertArrayEquals(newBlob, connectivityBlobStore.get(TEST_NAME));
    }
    }

    @Test
    public void testRemove() throws Exception {
        final ConnectivityBlobStore connectivityBlobStore = createConnectivityBlobStore();
        assertNull(connectivityBlobStore.get(TEST_NAME));
        assertFalse(connectivityBlobStore.remove(TEST_NAME));

        assertTrue(connectivityBlobStore.put(TEST_NAME, TEST_BLOB));
        assertArrayEquals(TEST_BLOB, connectivityBlobStore.get(TEST_NAME));

        assertTrue(connectivityBlobStore.remove(TEST_NAME));
        assertNull(connectivityBlobStore.get(TEST_NAME));

        // Removing again returns false
        assertFalse(connectivityBlobStore.remove(TEST_NAME));
    }

    @Test
    public void testMultipleNames() throws Exception {
        final String name1 = TEST_NAME + "1";
        final String name2 = TEST_NAME + "2";
        final ConnectivityBlobStore connectivityBlobStore = createConnectivityBlobStore();

        assertNull(connectivityBlobStore.get(name1));
        assertNull(connectivityBlobStore.get(name2));
        assertFalse(connectivityBlobStore.remove(name1));
        assertFalse(connectivityBlobStore.remove(name2));

        assertTrue(connectivityBlobStore.put(name1, TEST_BLOB));
        assertTrue(connectivityBlobStore.put(name2, TEST_BLOB));
        assertArrayEquals(TEST_BLOB, connectivityBlobStore.get(name1));
        assertArrayEquals(TEST_BLOB, connectivityBlobStore.get(name2));

        // Replace the blob for name1 only.
        final byte[] newBlob = new byte[] {(byte) 16, (byte) 21};
        assertTrue(connectivityBlobStore.put(name1, newBlob));
        assertArrayEquals(newBlob, connectivityBlobStore.get(name1));

        assertTrue(connectivityBlobStore.remove(name1));
        assertNull(connectivityBlobStore.get(name1));
        assertArrayEquals(TEST_BLOB, connectivityBlobStore.get(name2));

        assertFalse(connectivityBlobStore.remove(name1));
        assertTrue(connectivityBlobStore.remove(name2));
        assertNull(connectivityBlobStore.get(name2));
        assertFalse(connectivityBlobStore.remove(name2));
    }
}
}