Loading android/app/tests/unit/src/com/android/bluetooth/btservice/storage/DatabaseManagerTest.java +166 −6 Original line number Diff line number Diff line Loading @@ -16,7 +16,15 @@ package com.android.bluetooth.btservice.storage; import static org.mockito.Mockito.*; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothA2dp; import android.bluetooth.BluetoothAdapter; Loading Loading @@ -446,7 +454,7 @@ public final class DatabaseManagerTest { device.put("unthethered_left_charging", testString); device.put("unthethered_right_charging", testString); device.put("unthethered_case_charging", testString); Assert.assertThat(db.insert("metadata", SQLiteDatabase.CONFLICT_IGNORE, device), assertThat(db.insert("metadata", SQLiteDatabase.CONFLICT_IGNORE, device), CoreMatchers.not(-1)); // Check the metadata names on version 101 Loading Loading @@ -529,22 +537,174 @@ public final class DatabaseManagerTest { } } @Test public void testDatabaseMigration_102_103() throws IOException { String testString = "TEST STRING"; // Create a database with version 102 SupportSQLiteDatabase db = testHelper.createDatabase(DB_NAME, 102); Cursor cursor = db.query("SELECT * FROM metadata"); // insert a device to the database ContentValues device = new ContentValues(); device.put("address", TEST_BT_ADDR); device.put("migrated", false); device.put("a2dpSupportsOptionalCodecs", -1); device.put("a2dpOptionalCodecsEnabled", -1); device.put("a2dp_priority", 1000); device.put("a2dp_sink_priority", 1000); device.put("hfp_priority", 1000); device.put("hfp_client_priority", 1000); device.put("hid_host_priority", 1000); device.put("pan_priority", 1000); device.put("pbap_priority", 1000); device.put("pbap_client_priority", 1000); device.put("map_priority", 1000); device.put("sap_priority", 1000); device.put("hearing_aid_priority", 1000); device.put("map_client_priority", 1000); device.put("manufacturer_name", testString); device.put("model_name", testString); device.put("software_version", testString); device.put("hardware_version", testString); device.put("companion_app", testString); device.put("main_icon", testString); device.put("is_untethered_headset", testString); device.put("untethered_left_icon", testString); device.put("untethered_right_icon", testString); device.put("untethered_case_icon", testString); device.put("untethered_left_battery", testString); device.put("untethered_right_battery", testString); device.put("untethered_case_battery", testString); device.put("untethered_left_charging", testString); device.put("untethered_right_charging", testString); device.put("untethered_case_charging", testString); assertThat(db.insert("metadata", SQLiteDatabase.CONFLICT_IGNORE, device), CoreMatchers.not(-1)); // Check the metadata names on version 102 assertHasColumn(cursor, "a2dp_priority", true); assertHasColumn(cursor, "a2dp_sink_priority", true); assertHasColumn(cursor, "hfp_priority", true); assertHasColumn(cursor, "hfp_client_priority", true); assertHasColumn(cursor, "hid_host_priority", true); assertHasColumn(cursor, "pan_priority", true); assertHasColumn(cursor, "pbap_priority", true); assertHasColumn(cursor, "pbap_client_priority", true); assertHasColumn(cursor, "map_priority", true); assertHasColumn(cursor, "sap_priority", true); assertHasColumn(cursor, "hearing_aid_priority", true); assertHasColumn(cursor, "map_client_priority", true); // Migrate database from 102 to 103 db.close(); db = testHelper.runMigrationsAndValidate(DB_NAME, 103, true, MetadataDatabase.MIGRATION_102_103); cursor = db.query("SELECT * FROM metadata"); // metadata names should be changed on version 103 assertHasColumn(cursor, "a2dp_priority", false); assertHasColumn(cursor, "a2dp_sink_priority", false); assertHasColumn(cursor, "hfp_priority", false); assertHasColumn(cursor, "hfp_client_priority", false); assertHasColumn(cursor, "hid_host_priority", false); assertHasColumn(cursor, "pan_priority", false); assertHasColumn(cursor, "pbap_priority", false); assertHasColumn(cursor, "pbap_client_priority", false); assertHasColumn(cursor, "map_priority", false); assertHasColumn(cursor, "sap_priority", false); assertHasColumn(cursor, "hearing_aid_priority", false); assertHasColumn(cursor, "map_client_priority", false); assertHasColumn(cursor, "a2dp_connection_policy", true); assertHasColumn(cursor, "a2dp_sink_connection_policy", true); assertHasColumn(cursor, "hfp_connection_policy", true); assertHasColumn(cursor, "hfp_client_connection_policy", true); assertHasColumn(cursor, "hid_host_connection_policy", true); assertHasColumn(cursor, "pan_connection_policy", true); assertHasColumn(cursor, "pbap_connection_policy", true); assertHasColumn(cursor, "pbap_client_connection_policy", true); assertHasColumn(cursor, "map_connection_policy", true); assertHasColumn(cursor, "sap_connection_policy", true); assertHasColumn(cursor, "hearing_aid_connection_policy", true); assertHasColumn(cursor, "map_client_connection_policy", true); while (cursor.moveToNext()) { // Check PRIORITY_AUTO_CONNECT (1000) was replaced with CONNECTION_POLICY_ALLOWED (100) assertColumnIntData(cursor, "a2dp_connection_policy", 100); assertColumnIntData(cursor, "a2dp_sink_connection_policy", 100); assertColumnIntData(cursor, "hfp_connection_policy", 100); assertColumnIntData(cursor, "hfp_client_connection_policy", 100); assertColumnIntData(cursor, "hid_host_connection_policy", 100); assertColumnIntData(cursor, "pan_connection_policy", 100); assertColumnIntData(cursor, "pbap_connection_policy", 100); assertColumnIntData(cursor, "pbap_client_connection_policy", 100); assertColumnIntData(cursor, "map_connection_policy", 100); assertColumnIntData(cursor, "sap_connection_policy", 100); assertColumnIntData(cursor, "hearing_aid_connection_policy", 100); assertColumnIntData(cursor, "map_client_connection_policy", 100); // Check whether metadata data type are blob assertColumnBlob(cursor, "manufacturer_name"); assertColumnBlob(cursor, "model_name"); assertColumnBlob(cursor, "software_version"); assertColumnBlob(cursor, "hardware_version"); assertColumnBlob(cursor, "companion_app"); assertColumnBlob(cursor, "main_icon"); assertColumnBlob(cursor, "is_untethered_headset"); assertColumnBlob(cursor, "untethered_left_icon"); assertColumnBlob(cursor, "untethered_right_icon"); assertColumnBlob(cursor, "untethered_case_icon"); assertColumnBlob(cursor, "untethered_left_battery"); assertColumnBlob(cursor, "untethered_right_battery"); assertColumnBlob(cursor, "untethered_case_battery"); assertColumnBlob(cursor, "untethered_left_charging"); assertColumnBlob(cursor, "untethered_right_charging"); assertColumnBlob(cursor, "untethered_case_charging"); // Check whether metadata values are migrated to version 103 successfully assertColumnBlobData(cursor, "manufacturer_name", testString.getBytes()); assertColumnBlobData(cursor, "model_name", testString.getBytes()); assertColumnBlobData(cursor, "software_version", testString.getBytes()); assertColumnBlobData(cursor, "hardware_version", testString.getBytes()); assertColumnBlobData(cursor, "companion_app", testString.getBytes()); assertColumnBlobData(cursor, "main_icon", testString.getBytes()); assertColumnBlobData(cursor, "is_untethered_headset", testString.getBytes()); assertColumnBlobData(cursor, "untethered_left_icon", testString.getBytes()); assertColumnBlobData(cursor, "untethered_right_icon", testString.getBytes()); assertColumnBlobData(cursor, "untethered_case_icon", testString.getBytes()); assertColumnBlobData(cursor, "untethered_left_battery", testString.getBytes()); assertColumnBlobData(cursor, "untethered_right_battery", testString.getBytes()); assertColumnBlobData(cursor, "untethered_case_battery", testString.getBytes()); assertColumnBlobData(cursor, "untethered_left_charging", testString.getBytes()); assertColumnBlobData(cursor, "untethered_right_charging", testString.getBytes()); assertColumnBlobData(cursor, "untethered_case_charging", testString.getBytes()); } } /** * Helper function to check whether the database has the expected column */ void assertHasColumn(Cursor cursor, String columnName, boolean hasColumn) { if (hasColumn) { Assert.assertThat(cursor.getColumnIndex(columnName), CoreMatchers.not(-1)); assertThat(cursor.getColumnIndex(columnName), CoreMatchers.not(-1)); } else { Assert.assertThat(cursor.getColumnIndex(columnName), CoreMatchers.is(-1)); assertThat(cursor.getColumnIndex(columnName), CoreMatchers.is(-1)); } } /** * Helper function to check whether the database has the expected value */ void assertColumnIntData(Cursor cursor, String columnName, int value) { assertThat(cursor.getInt(cursor.getColumnIndex(columnName)), CoreMatchers.is(value)); } /** * Helper function to check whether the column data type is BLOB */ void assertColumnBlob(Cursor cursor, String columnName) { Assert.assertThat(cursor.getType(cursor.getColumnIndex(columnName)), assertThat(cursor.getType(cursor.getColumnIndex(columnName)), CoreMatchers.is(Cursor.FIELD_TYPE_BLOB)); } Loading @@ -552,7 +712,7 @@ public final class DatabaseManagerTest { * Helper function to check the BLOB data in a column is expected */ void assertColumnBlobData(Cursor cursor, String columnName, byte[] data) { Assert.assertThat(cursor.getBlob(cursor.getColumnIndex(columnName)), assertThat(cursor.getBlob(cursor.getColumnIndex(columnName)), CoreMatchers.is(data)); } Loading android/app/tests/unit/src/com/android/bluetooth/btservice/storage/schemas/com.android.bluetooth.btservice.storage.MetadataDatabase/103.json 0 → 100644 +226 −0 Original line number Diff line number Diff line { "formatVersion": 1, "database": { "version": 103, "identityHash": "2feccd539474eca8e3dec65a98c8b084", "entities": [ { "tableName": "metadata", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`address` TEXT NOT NULL, `migrated` INTEGER NOT NULL, `a2dpSupportsOptionalCodecs` INTEGER NOT NULL, `a2dpOptionalCodecsEnabled` INTEGER NOT NULL, `a2dp_connection_policy` INTEGER, `a2dp_sink_connection_policy` INTEGER, `hfp_connection_policy` INTEGER, `hfp_client_connection_policy` INTEGER, `hid_host_connection_policy` INTEGER, `pan_connection_policy` INTEGER, `pbap_connection_policy` INTEGER, `pbap_client_connection_policy` INTEGER, `map_connection_policy` INTEGER, `sap_connection_policy` INTEGER, `hearing_aid_connection_policy` INTEGER, `map_client_connection_policy` INTEGER, `manufacturer_name` BLOB, `model_name` BLOB, `software_version` BLOB, `hardware_version` BLOB, `companion_app` BLOB, `main_icon` BLOB, `is_untethered_headset` BLOB, `untethered_left_icon` BLOB, `untethered_right_icon` BLOB, `untethered_case_icon` BLOB, `untethered_left_battery` BLOB, `untethered_right_battery` BLOB, `untethered_case_battery` BLOB, `untethered_left_charging` BLOB, `untethered_right_charging` BLOB, `untethered_case_charging` BLOB, `enhanced_settings_ui_uri` BLOB, PRIMARY KEY(`address`))", "fields": [ { "fieldPath": "address", "columnName": "address", "affinity": "TEXT", "notNull": true }, { "fieldPath": "migrated", "columnName": "migrated", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "a2dpSupportsOptionalCodecs", "columnName": "a2dpSupportsOptionalCodecs", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "a2dpOptionalCodecsEnabled", "columnName": "a2dpOptionalCodecsEnabled", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "profileConnectionPolicies.a2dp_connection_policy", "columnName": "a2dp_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.a2dp_sink_connection_policy", "columnName": "a2dp_sink_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.hfp_connection_policy", "columnName": "hfp_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.hfp_client_connection_policy", "columnName": "hfp_client_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.hid_host_connection_policy", "columnName": "hid_host_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.pan_connection_policy", "columnName": "pan_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.pbap_connection_policy", "columnName": "pbap_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.pbap_client_connection_policy", "columnName": "pbap_client_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.map_connection_policy", "columnName": "map_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.sap_connection_policy", "columnName": "sap_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.hearing_aid_connection_policy", "columnName": "hearing_aid_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.map_client_connection_policy", "columnName": "map_client_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "publicMetadata.manufacturer_name", "columnName": "manufacturer_name", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.model_name", "columnName": "model_name", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.software_version", "columnName": "software_version", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.hardware_version", "columnName": "hardware_version", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.companion_app", "columnName": "companion_app", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.main_icon", "columnName": "main_icon", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.is_untethered_headset", "columnName": "is_untethered_headset", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_left_icon", "columnName": "untethered_left_icon", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_right_icon", "columnName": "untethered_right_icon", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_case_icon", "columnName": "untethered_case_icon", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_left_battery", "columnName": "untethered_left_battery", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_right_battery", "columnName": "untethered_right_battery", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_case_battery", "columnName": "untethered_case_battery", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_left_charging", "columnName": "untethered_left_charging", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_right_charging", "columnName": "untethered_right_charging", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_case_charging", "columnName": "untethered_case_charging", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.enhanced_settings_ui_uri", "columnName": "enhanced_settings_ui_uri", "affinity": "BLOB", "notNull": false } ], "primaryKey": { "columnNames": [ "address" ], "autoGenerate": false }, "indices": [], "foreignKeys": [] } ], "views": [], "setupQueries": [ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '2feccd539474eca8e3dec65a98c8b084')" ] } } No newline at end of file Loading
android/app/tests/unit/src/com/android/bluetooth/btservice/storage/DatabaseManagerTest.java +166 −6 Original line number Diff line number Diff line Loading @@ -16,7 +16,15 @@ package com.android.bluetooth.btservice.storage; import static org.mockito.Mockito.*; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothA2dp; import android.bluetooth.BluetoothAdapter; Loading Loading @@ -446,7 +454,7 @@ public final class DatabaseManagerTest { device.put("unthethered_left_charging", testString); device.put("unthethered_right_charging", testString); device.put("unthethered_case_charging", testString); Assert.assertThat(db.insert("metadata", SQLiteDatabase.CONFLICT_IGNORE, device), assertThat(db.insert("metadata", SQLiteDatabase.CONFLICT_IGNORE, device), CoreMatchers.not(-1)); // Check the metadata names on version 101 Loading Loading @@ -529,22 +537,174 @@ public final class DatabaseManagerTest { } } @Test public void testDatabaseMigration_102_103() throws IOException { String testString = "TEST STRING"; // Create a database with version 102 SupportSQLiteDatabase db = testHelper.createDatabase(DB_NAME, 102); Cursor cursor = db.query("SELECT * FROM metadata"); // insert a device to the database ContentValues device = new ContentValues(); device.put("address", TEST_BT_ADDR); device.put("migrated", false); device.put("a2dpSupportsOptionalCodecs", -1); device.put("a2dpOptionalCodecsEnabled", -1); device.put("a2dp_priority", 1000); device.put("a2dp_sink_priority", 1000); device.put("hfp_priority", 1000); device.put("hfp_client_priority", 1000); device.put("hid_host_priority", 1000); device.put("pan_priority", 1000); device.put("pbap_priority", 1000); device.put("pbap_client_priority", 1000); device.put("map_priority", 1000); device.put("sap_priority", 1000); device.put("hearing_aid_priority", 1000); device.put("map_client_priority", 1000); device.put("manufacturer_name", testString); device.put("model_name", testString); device.put("software_version", testString); device.put("hardware_version", testString); device.put("companion_app", testString); device.put("main_icon", testString); device.put("is_untethered_headset", testString); device.put("untethered_left_icon", testString); device.put("untethered_right_icon", testString); device.put("untethered_case_icon", testString); device.put("untethered_left_battery", testString); device.put("untethered_right_battery", testString); device.put("untethered_case_battery", testString); device.put("untethered_left_charging", testString); device.put("untethered_right_charging", testString); device.put("untethered_case_charging", testString); assertThat(db.insert("metadata", SQLiteDatabase.CONFLICT_IGNORE, device), CoreMatchers.not(-1)); // Check the metadata names on version 102 assertHasColumn(cursor, "a2dp_priority", true); assertHasColumn(cursor, "a2dp_sink_priority", true); assertHasColumn(cursor, "hfp_priority", true); assertHasColumn(cursor, "hfp_client_priority", true); assertHasColumn(cursor, "hid_host_priority", true); assertHasColumn(cursor, "pan_priority", true); assertHasColumn(cursor, "pbap_priority", true); assertHasColumn(cursor, "pbap_client_priority", true); assertHasColumn(cursor, "map_priority", true); assertHasColumn(cursor, "sap_priority", true); assertHasColumn(cursor, "hearing_aid_priority", true); assertHasColumn(cursor, "map_client_priority", true); // Migrate database from 102 to 103 db.close(); db = testHelper.runMigrationsAndValidate(DB_NAME, 103, true, MetadataDatabase.MIGRATION_102_103); cursor = db.query("SELECT * FROM metadata"); // metadata names should be changed on version 103 assertHasColumn(cursor, "a2dp_priority", false); assertHasColumn(cursor, "a2dp_sink_priority", false); assertHasColumn(cursor, "hfp_priority", false); assertHasColumn(cursor, "hfp_client_priority", false); assertHasColumn(cursor, "hid_host_priority", false); assertHasColumn(cursor, "pan_priority", false); assertHasColumn(cursor, "pbap_priority", false); assertHasColumn(cursor, "pbap_client_priority", false); assertHasColumn(cursor, "map_priority", false); assertHasColumn(cursor, "sap_priority", false); assertHasColumn(cursor, "hearing_aid_priority", false); assertHasColumn(cursor, "map_client_priority", false); assertHasColumn(cursor, "a2dp_connection_policy", true); assertHasColumn(cursor, "a2dp_sink_connection_policy", true); assertHasColumn(cursor, "hfp_connection_policy", true); assertHasColumn(cursor, "hfp_client_connection_policy", true); assertHasColumn(cursor, "hid_host_connection_policy", true); assertHasColumn(cursor, "pan_connection_policy", true); assertHasColumn(cursor, "pbap_connection_policy", true); assertHasColumn(cursor, "pbap_client_connection_policy", true); assertHasColumn(cursor, "map_connection_policy", true); assertHasColumn(cursor, "sap_connection_policy", true); assertHasColumn(cursor, "hearing_aid_connection_policy", true); assertHasColumn(cursor, "map_client_connection_policy", true); while (cursor.moveToNext()) { // Check PRIORITY_AUTO_CONNECT (1000) was replaced with CONNECTION_POLICY_ALLOWED (100) assertColumnIntData(cursor, "a2dp_connection_policy", 100); assertColumnIntData(cursor, "a2dp_sink_connection_policy", 100); assertColumnIntData(cursor, "hfp_connection_policy", 100); assertColumnIntData(cursor, "hfp_client_connection_policy", 100); assertColumnIntData(cursor, "hid_host_connection_policy", 100); assertColumnIntData(cursor, "pan_connection_policy", 100); assertColumnIntData(cursor, "pbap_connection_policy", 100); assertColumnIntData(cursor, "pbap_client_connection_policy", 100); assertColumnIntData(cursor, "map_connection_policy", 100); assertColumnIntData(cursor, "sap_connection_policy", 100); assertColumnIntData(cursor, "hearing_aid_connection_policy", 100); assertColumnIntData(cursor, "map_client_connection_policy", 100); // Check whether metadata data type are blob assertColumnBlob(cursor, "manufacturer_name"); assertColumnBlob(cursor, "model_name"); assertColumnBlob(cursor, "software_version"); assertColumnBlob(cursor, "hardware_version"); assertColumnBlob(cursor, "companion_app"); assertColumnBlob(cursor, "main_icon"); assertColumnBlob(cursor, "is_untethered_headset"); assertColumnBlob(cursor, "untethered_left_icon"); assertColumnBlob(cursor, "untethered_right_icon"); assertColumnBlob(cursor, "untethered_case_icon"); assertColumnBlob(cursor, "untethered_left_battery"); assertColumnBlob(cursor, "untethered_right_battery"); assertColumnBlob(cursor, "untethered_case_battery"); assertColumnBlob(cursor, "untethered_left_charging"); assertColumnBlob(cursor, "untethered_right_charging"); assertColumnBlob(cursor, "untethered_case_charging"); // Check whether metadata values are migrated to version 103 successfully assertColumnBlobData(cursor, "manufacturer_name", testString.getBytes()); assertColumnBlobData(cursor, "model_name", testString.getBytes()); assertColumnBlobData(cursor, "software_version", testString.getBytes()); assertColumnBlobData(cursor, "hardware_version", testString.getBytes()); assertColumnBlobData(cursor, "companion_app", testString.getBytes()); assertColumnBlobData(cursor, "main_icon", testString.getBytes()); assertColumnBlobData(cursor, "is_untethered_headset", testString.getBytes()); assertColumnBlobData(cursor, "untethered_left_icon", testString.getBytes()); assertColumnBlobData(cursor, "untethered_right_icon", testString.getBytes()); assertColumnBlobData(cursor, "untethered_case_icon", testString.getBytes()); assertColumnBlobData(cursor, "untethered_left_battery", testString.getBytes()); assertColumnBlobData(cursor, "untethered_right_battery", testString.getBytes()); assertColumnBlobData(cursor, "untethered_case_battery", testString.getBytes()); assertColumnBlobData(cursor, "untethered_left_charging", testString.getBytes()); assertColumnBlobData(cursor, "untethered_right_charging", testString.getBytes()); assertColumnBlobData(cursor, "untethered_case_charging", testString.getBytes()); } } /** * Helper function to check whether the database has the expected column */ void assertHasColumn(Cursor cursor, String columnName, boolean hasColumn) { if (hasColumn) { Assert.assertThat(cursor.getColumnIndex(columnName), CoreMatchers.not(-1)); assertThat(cursor.getColumnIndex(columnName), CoreMatchers.not(-1)); } else { Assert.assertThat(cursor.getColumnIndex(columnName), CoreMatchers.is(-1)); assertThat(cursor.getColumnIndex(columnName), CoreMatchers.is(-1)); } } /** * Helper function to check whether the database has the expected value */ void assertColumnIntData(Cursor cursor, String columnName, int value) { assertThat(cursor.getInt(cursor.getColumnIndex(columnName)), CoreMatchers.is(value)); } /** * Helper function to check whether the column data type is BLOB */ void assertColumnBlob(Cursor cursor, String columnName) { Assert.assertThat(cursor.getType(cursor.getColumnIndex(columnName)), assertThat(cursor.getType(cursor.getColumnIndex(columnName)), CoreMatchers.is(Cursor.FIELD_TYPE_BLOB)); } Loading @@ -552,7 +712,7 @@ public final class DatabaseManagerTest { * Helper function to check the BLOB data in a column is expected */ void assertColumnBlobData(Cursor cursor, String columnName, byte[] data) { Assert.assertThat(cursor.getBlob(cursor.getColumnIndex(columnName)), assertThat(cursor.getBlob(cursor.getColumnIndex(columnName)), CoreMatchers.is(data)); } Loading
android/app/tests/unit/src/com/android/bluetooth/btservice/storage/schemas/com.android.bluetooth.btservice.storage.MetadataDatabase/103.json 0 → 100644 +226 −0 Original line number Diff line number Diff line { "formatVersion": 1, "database": { "version": 103, "identityHash": "2feccd539474eca8e3dec65a98c8b084", "entities": [ { "tableName": "metadata", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`address` TEXT NOT NULL, `migrated` INTEGER NOT NULL, `a2dpSupportsOptionalCodecs` INTEGER NOT NULL, `a2dpOptionalCodecsEnabled` INTEGER NOT NULL, `a2dp_connection_policy` INTEGER, `a2dp_sink_connection_policy` INTEGER, `hfp_connection_policy` INTEGER, `hfp_client_connection_policy` INTEGER, `hid_host_connection_policy` INTEGER, `pan_connection_policy` INTEGER, `pbap_connection_policy` INTEGER, `pbap_client_connection_policy` INTEGER, `map_connection_policy` INTEGER, `sap_connection_policy` INTEGER, `hearing_aid_connection_policy` INTEGER, `map_client_connection_policy` INTEGER, `manufacturer_name` BLOB, `model_name` BLOB, `software_version` BLOB, `hardware_version` BLOB, `companion_app` BLOB, `main_icon` BLOB, `is_untethered_headset` BLOB, `untethered_left_icon` BLOB, `untethered_right_icon` BLOB, `untethered_case_icon` BLOB, `untethered_left_battery` BLOB, `untethered_right_battery` BLOB, `untethered_case_battery` BLOB, `untethered_left_charging` BLOB, `untethered_right_charging` BLOB, `untethered_case_charging` BLOB, `enhanced_settings_ui_uri` BLOB, PRIMARY KEY(`address`))", "fields": [ { "fieldPath": "address", "columnName": "address", "affinity": "TEXT", "notNull": true }, { "fieldPath": "migrated", "columnName": "migrated", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "a2dpSupportsOptionalCodecs", "columnName": "a2dpSupportsOptionalCodecs", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "a2dpOptionalCodecsEnabled", "columnName": "a2dpOptionalCodecsEnabled", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "profileConnectionPolicies.a2dp_connection_policy", "columnName": "a2dp_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.a2dp_sink_connection_policy", "columnName": "a2dp_sink_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.hfp_connection_policy", "columnName": "hfp_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.hfp_client_connection_policy", "columnName": "hfp_client_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.hid_host_connection_policy", "columnName": "hid_host_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.pan_connection_policy", "columnName": "pan_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.pbap_connection_policy", "columnName": "pbap_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.pbap_client_connection_policy", "columnName": "pbap_client_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.map_connection_policy", "columnName": "map_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.sap_connection_policy", "columnName": "sap_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.hearing_aid_connection_policy", "columnName": "hearing_aid_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "profileConnectionPolicies.map_client_connection_policy", "columnName": "map_client_connection_policy", "affinity": "INTEGER", "notNull": false }, { "fieldPath": "publicMetadata.manufacturer_name", "columnName": "manufacturer_name", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.model_name", "columnName": "model_name", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.software_version", "columnName": "software_version", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.hardware_version", "columnName": "hardware_version", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.companion_app", "columnName": "companion_app", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.main_icon", "columnName": "main_icon", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.is_untethered_headset", "columnName": "is_untethered_headset", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_left_icon", "columnName": "untethered_left_icon", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_right_icon", "columnName": "untethered_right_icon", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_case_icon", "columnName": "untethered_case_icon", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_left_battery", "columnName": "untethered_left_battery", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_right_battery", "columnName": "untethered_right_battery", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_case_battery", "columnName": "untethered_case_battery", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_left_charging", "columnName": "untethered_left_charging", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_right_charging", "columnName": "untethered_right_charging", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.untethered_case_charging", "columnName": "untethered_case_charging", "affinity": "BLOB", "notNull": false }, { "fieldPath": "publicMetadata.enhanced_settings_ui_uri", "columnName": "enhanced_settings_ui_uri", "affinity": "BLOB", "notNull": false } ], "primaryKey": { "columnNames": [ "address" ], "autoGenerate": false }, "indices": [], "foreignKeys": [] } ], "views": [], "setupQueries": [ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '2feccd539474eca8e3dec65a98c8b084')" ] } } No newline at end of file