1 /* 2 * Copyright 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.bluetooth.avrcpcontroller; 18 19 import android.bluetooth.BluetoothAdapter; 20 import android.bluetooth.BluetoothDevice; 21 import android.content.Context; 22 import android.net.Uri; 23 import android.support.v4.media.MediaBrowserCompat.MediaItem; 24 import android.support.v4.media.MediaDescriptionCompat; 25 import android.support.v4.media.MediaMetadataCompat; 26 27 import androidx.test.InstrumentationRegistry; 28 import androidx.test.runner.AndroidJUnit4; 29 30 import org.junit.After; 31 import org.junit.Assert; 32 import org.junit.Before; 33 import org.junit.Test; 34 import org.junit.runner.RunWith; 35 36 /** 37 * A test suite for the AvrcpItem class. 38 */ 39 @RunWith(AndroidJUnit4.class) 40 public final class AvrcpItemTest { 41 42 private BluetoothDevice mDevice; 43 private static final String UUID = "AVRCP-ITEM-TEST-UUID"; 44 45 // Attribute ID Values from AVRCP Specification 46 private static final int MEDIA_ATTRIBUTE_TITLE = 0x01; 47 private static final int MEDIA_ATTRIBUTE_ARTIST_NAME = 0x02; 48 private static final int MEDIA_ATTRIBUTE_ALBUM_NAME = 0x03; 49 private static final int MEDIA_ATTRIBUTE_TRACK_NUMBER = 0x04; 50 private static final int MEDIA_ATTRIBUTE_TOTAL_TRACK_NUMBER = 0x05; 51 private static final int MEDIA_ATTRIBUTE_GENRE = 0x06; 52 private static final int MEDIA_ATTRIBUTE_PLAYING_TIME = 0x07; 53 private static final int MEDIA_ATTRIBUTE_COVER_ART_HANDLE = 0x08; 54 55 @Before setUp()56 public void setUp() { 57 Context context = InstrumentationRegistry.getTargetContext(); 58 mDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice("AA:BB:CC:DD:EE:FF"); 59 } 60 61 @After tearDown()62 public void tearDown() { 63 mDevice = null; 64 } 65 66 @Test buildAvrcpItem()67 public void buildAvrcpItem() { 68 String title = "Aaaaargh"; 69 String artist = "Bluetooth"; 70 String album = "The Best Protocol"; 71 long trackNumber = 1; 72 long totalTracks = 12; 73 String genre = "Viking Metal"; 74 long playingTime = 301; 75 String artHandle = "0000001"; 76 Uri uri = Uri.parse("content://somewhere"); 77 Uri uri2 = Uri.parse("content://somewhereelse"); 78 79 AvrcpItem.Builder builder = new AvrcpItem.Builder(); 80 builder.setItemType(AvrcpItem.TYPE_MEDIA); 81 builder.setType(AvrcpItem.MEDIA_AUDIO); 82 builder.setDevice(mDevice); 83 builder.setPlayable(true); 84 builder.setUid(0); 85 builder.setUuid(UUID); 86 builder.setTitle(title); 87 builder.setArtistName(artist); 88 builder.setAlbumName(album); 89 builder.setTrackNumber(trackNumber); 90 builder.setTotalNumberOfTracks(totalTracks); 91 builder.setGenre(genre); 92 builder.setPlayingTime(playingTime); 93 builder.setCoverArtHandle(artHandle); 94 builder.setCoverArtLocation(uri); 95 96 AvrcpItem item = builder.build(); 97 98 Assert.assertEquals(mDevice, item.getDevice()); 99 Assert.assertEquals(true, item.isPlayable()); 100 Assert.assertEquals(false, item.isBrowsable()); 101 Assert.assertEquals(0, item.getUid()); 102 Assert.assertEquals(UUID, item.getUuid()); 103 Assert.assertEquals(null, item.getDisplayableName()); 104 Assert.assertEquals(title, item.getTitle()); 105 Assert.assertEquals(artist, item.getArtistName()); 106 Assert.assertEquals(album, item.getAlbumName()); 107 Assert.assertEquals(trackNumber, item.getTrackNumber()); 108 Assert.assertEquals(totalTracks, item.getTotalNumberOfTracks()); 109 Assert.assertEquals(artHandle, item.getCoverArtHandle()); 110 Assert.assertEquals(uri, item.getCoverArtLocation()); 111 } 112 113 @Test buildAvrcpItemFromAvrcpAttributes()114 public void buildAvrcpItemFromAvrcpAttributes() { 115 String title = "Aaaaargh"; 116 String artist = "Bluetooth"; 117 String album = "The Best Protocol"; 118 String trackNumber = "1"; 119 String totalTracks = "12"; 120 String genre = "Viking Metal"; 121 String playingTime = "301"; 122 String artHandle = "0000001"; 123 124 int[] attrIds = new int[]{ 125 MEDIA_ATTRIBUTE_TITLE, 126 MEDIA_ATTRIBUTE_ARTIST_NAME, 127 MEDIA_ATTRIBUTE_ALBUM_NAME, 128 MEDIA_ATTRIBUTE_TRACK_NUMBER, 129 MEDIA_ATTRIBUTE_TOTAL_TRACK_NUMBER, 130 MEDIA_ATTRIBUTE_GENRE, 131 MEDIA_ATTRIBUTE_PLAYING_TIME, 132 MEDIA_ATTRIBUTE_COVER_ART_HANDLE 133 }; 134 135 String[] attrMap = new String[]{ 136 title, 137 artist, 138 album, 139 trackNumber, 140 totalTracks, 141 genre, 142 playingTime, 143 artHandle 144 }; 145 146 AvrcpItem.Builder builder = new AvrcpItem.Builder(); 147 builder.fromAvrcpAttributeArray(attrIds, attrMap); 148 AvrcpItem item = builder.build(); 149 150 Assert.assertEquals(null, item.getDevice()); 151 Assert.assertEquals(false, item.isPlayable()); 152 Assert.assertEquals(false, item.isBrowsable()); 153 Assert.assertEquals(0, item.getUid()); 154 Assert.assertEquals(null, item.getUuid()); 155 Assert.assertEquals(null, item.getDisplayableName()); 156 Assert.assertEquals(title, item.getTitle()); 157 Assert.assertEquals(artist, item.getArtistName()); 158 Assert.assertEquals(album, item.getAlbumName()); 159 Assert.assertEquals(1, item.getTrackNumber()); 160 Assert.assertEquals(12, item.getTotalNumberOfTracks()); 161 Assert.assertEquals(artHandle, item.getCoverArtHandle()); 162 Assert.assertEquals(null, item.getCoverArtLocation()); 163 } 164 165 @Test buildAvrcpItemFromAvrcpAttributesWithBadIds_badIdsIgnored()166 public void buildAvrcpItemFromAvrcpAttributesWithBadIds_badIdsIgnored() { 167 String title = "Aaaaargh"; 168 String artist = "Bluetooth"; 169 String album = "The Best Protocol"; 170 String trackNumber = "1"; 171 String totalTracks = "12"; 172 String genre = "Viking Metal"; 173 String playingTime = "301"; 174 String artHandle = "0000001"; 175 176 int[] attrIds = new int[]{ 177 MEDIA_ATTRIBUTE_TITLE, 178 MEDIA_ATTRIBUTE_ARTIST_NAME, 179 MEDIA_ATTRIBUTE_ALBUM_NAME, 180 MEDIA_ATTRIBUTE_TRACK_NUMBER, 181 MEDIA_ATTRIBUTE_TOTAL_TRACK_NUMBER, 182 MEDIA_ATTRIBUTE_GENRE, 183 MEDIA_ATTRIBUTE_PLAYING_TIME, 184 MEDIA_ATTRIBUTE_COVER_ART_HANDLE, 185 75, 186 76, 187 77, 188 78 189 }; 190 191 String[] attrMap = new String[]{ 192 title, 193 artist, 194 album, 195 trackNumber, 196 totalTracks, 197 genre, 198 playingTime, 199 artHandle, 200 "ignore me", 201 "ignore me", 202 "ignore me", 203 "ignore me" 204 }; 205 206 AvrcpItem.Builder builder = new AvrcpItem.Builder(); 207 builder.fromAvrcpAttributeArray(attrIds, attrMap); 208 AvrcpItem item = builder.build(); 209 210 Assert.assertEquals(null, item.getDevice()); 211 Assert.assertEquals(false, item.isPlayable()); 212 Assert.assertEquals(false, item.isBrowsable()); 213 Assert.assertEquals(0, item.getUid()); 214 Assert.assertEquals(null, item.getUuid()); 215 Assert.assertEquals(null, item.getDisplayableName()); 216 Assert.assertEquals(title, item.getTitle()); 217 Assert.assertEquals(artist, item.getArtistName()); 218 Assert.assertEquals(album, item.getAlbumName()); 219 Assert.assertEquals(1, item.getTrackNumber()); 220 Assert.assertEquals(12, item.getTotalNumberOfTracks()); 221 Assert.assertEquals(artHandle, item.getCoverArtHandle()); 222 Assert.assertEquals(null, item.getCoverArtLocation()); 223 } 224 225 @Test buildAvrcpItemFromAvrcpAttributes_imageHandleTooShort()226 public void buildAvrcpItemFromAvrcpAttributes_imageHandleTooShort() { 227 String title = "Aaaaargh"; 228 String artist = "Bluetooth"; 229 String album = "The Best Protocol"; 230 String trackNumber = "1"; 231 String totalTracks = "12"; 232 String genre = "Viking Metal"; 233 String playingTime = "301"; 234 String artHandle = "000001"; // length 6 and not 7 235 236 int[] attrIds = new int[]{ 237 MEDIA_ATTRIBUTE_TITLE, 238 MEDIA_ATTRIBUTE_ARTIST_NAME, 239 MEDIA_ATTRIBUTE_ALBUM_NAME, 240 MEDIA_ATTRIBUTE_TRACK_NUMBER, 241 MEDIA_ATTRIBUTE_TOTAL_TRACK_NUMBER, 242 MEDIA_ATTRIBUTE_GENRE, 243 MEDIA_ATTRIBUTE_PLAYING_TIME, 244 MEDIA_ATTRIBUTE_COVER_ART_HANDLE 245 }; 246 247 String[] attrMap = new String[]{ 248 title, 249 artist, 250 album, 251 trackNumber, 252 totalTracks, 253 genre, 254 playingTime, 255 artHandle 256 }; 257 258 AvrcpItem.Builder builder = new AvrcpItem.Builder(); 259 builder.fromAvrcpAttributeArray(attrIds, attrMap); 260 AvrcpItem item = builder.build(); 261 262 Assert.assertEquals(null, item.getDevice()); 263 Assert.assertEquals(false, item.isPlayable()); 264 Assert.assertEquals(false, item.isBrowsable()); 265 Assert.assertEquals(0, item.getUid()); 266 Assert.assertEquals(null, item.getUuid()); 267 Assert.assertEquals(null, item.getDisplayableName()); 268 Assert.assertEquals(title, item.getTitle()); 269 Assert.assertEquals(artist, item.getArtistName()); 270 Assert.assertEquals(album, item.getAlbumName()); 271 Assert.assertEquals(1, item.getTrackNumber()); 272 Assert.assertEquals(12, item.getTotalNumberOfTracks()); 273 Assert.assertEquals(null, item.getCoverArtHandle()); 274 Assert.assertEquals(null, item.getCoverArtLocation()); 275 } 276 277 @Test buildAvrcpItemFromAvrcpAttributes_imageHandleEmpty()278 public void buildAvrcpItemFromAvrcpAttributes_imageHandleEmpty() { 279 String title = "Aaaaargh"; 280 String artist = "Bluetooth"; 281 String album = "The Best Protocol"; 282 String trackNumber = "1"; 283 String totalTracks = "12"; 284 String genre = "Viking Metal"; 285 String playingTime = "301"; 286 String artHandle = ""; 287 288 int[] attrIds = new int[]{ 289 MEDIA_ATTRIBUTE_TITLE, 290 MEDIA_ATTRIBUTE_ARTIST_NAME, 291 MEDIA_ATTRIBUTE_ALBUM_NAME, 292 MEDIA_ATTRIBUTE_TRACK_NUMBER, 293 MEDIA_ATTRIBUTE_TOTAL_TRACK_NUMBER, 294 MEDIA_ATTRIBUTE_GENRE, 295 MEDIA_ATTRIBUTE_PLAYING_TIME, 296 MEDIA_ATTRIBUTE_COVER_ART_HANDLE 297 }; 298 299 String[] attrMap = new String[]{ 300 title, 301 artist, 302 album, 303 trackNumber, 304 totalTracks, 305 genre, 306 playingTime, 307 artHandle 308 }; 309 310 AvrcpItem.Builder builder = new AvrcpItem.Builder(); 311 builder.fromAvrcpAttributeArray(attrIds, attrMap); 312 AvrcpItem item = builder.build(); 313 314 Assert.assertEquals(null, item.getDevice()); 315 Assert.assertEquals(false, item.isPlayable()); 316 Assert.assertEquals(false, item.isBrowsable()); 317 Assert.assertEquals(0, item.getUid()); 318 Assert.assertEquals(null, item.getUuid()); 319 Assert.assertEquals(null, item.getDisplayableName()); 320 Assert.assertEquals(title, item.getTitle()); 321 Assert.assertEquals(artist, item.getArtistName()); 322 Assert.assertEquals(album, item.getAlbumName()); 323 Assert.assertEquals(1, item.getTrackNumber()); 324 Assert.assertEquals(12, item.getTotalNumberOfTracks()); 325 Assert.assertEquals(null, item.getCoverArtHandle()); 326 Assert.assertEquals(null, item.getCoverArtLocation()); 327 } 328 329 @Test buildAvrcpItemFromAvrcpAttributes_imageHandleNull()330 public void buildAvrcpItemFromAvrcpAttributes_imageHandleNull() { 331 String title = "Aaaaargh"; 332 String artist = "Bluetooth"; 333 String album = "The Best Protocol"; 334 String trackNumber = "1"; 335 String totalTracks = "12"; 336 String genre = "Viking Metal"; 337 String playingTime = "301"; 338 String artHandle = null; 339 340 int[] attrIds = new int[]{ 341 MEDIA_ATTRIBUTE_TITLE, 342 MEDIA_ATTRIBUTE_ARTIST_NAME, 343 MEDIA_ATTRIBUTE_ALBUM_NAME, 344 MEDIA_ATTRIBUTE_TRACK_NUMBER, 345 MEDIA_ATTRIBUTE_TOTAL_TRACK_NUMBER, 346 MEDIA_ATTRIBUTE_GENRE, 347 MEDIA_ATTRIBUTE_PLAYING_TIME, 348 MEDIA_ATTRIBUTE_COVER_ART_HANDLE 349 }; 350 351 String[] attrMap = new String[]{ 352 title, 353 artist, 354 album, 355 trackNumber, 356 totalTracks, 357 genre, 358 playingTime, 359 artHandle 360 }; 361 362 AvrcpItem.Builder builder = new AvrcpItem.Builder(); 363 builder.fromAvrcpAttributeArray(attrIds, attrMap); 364 AvrcpItem item = builder.build(); 365 366 Assert.assertEquals(null, item.getDevice()); 367 Assert.assertEquals(false, item.isPlayable()); 368 Assert.assertEquals(false, item.isBrowsable()); 369 Assert.assertEquals(0, item.getUid()); 370 Assert.assertEquals(null, item.getUuid()); 371 Assert.assertEquals(null, item.getDisplayableName()); 372 Assert.assertEquals(title, item.getTitle()); 373 Assert.assertEquals(artist, item.getArtistName()); 374 Assert.assertEquals(album, item.getAlbumName()); 375 Assert.assertEquals(1, item.getTrackNumber()); 376 Assert.assertEquals(12, item.getTotalNumberOfTracks()); 377 Assert.assertEquals(null, item.getCoverArtHandle()); 378 Assert.assertEquals(null, item.getCoverArtLocation()); 379 } 380 381 @Test buildAvrcpItemFromAvrcpAttributes_imageHandleNotDigits()382 public void buildAvrcpItemFromAvrcpAttributes_imageHandleNotDigits() { 383 String title = "Aaaaargh"; 384 String artist = "Bluetooth"; 385 String album = "The Best Protocol"; 386 String trackNumber = "1"; 387 String totalTracks = "12"; 388 String genre = "Viking Metal"; 389 String playingTime = "301"; 390 String artHandle = "123abcd"; 391 392 int[] attrIds = new int[]{ 393 MEDIA_ATTRIBUTE_TITLE, 394 MEDIA_ATTRIBUTE_ARTIST_NAME, 395 MEDIA_ATTRIBUTE_ALBUM_NAME, 396 MEDIA_ATTRIBUTE_TRACK_NUMBER, 397 MEDIA_ATTRIBUTE_TOTAL_TRACK_NUMBER, 398 MEDIA_ATTRIBUTE_GENRE, 399 MEDIA_ATTRIBUTE_PLAYING_TIME, 400 MEDIA_ATTRIBUTE_COVER_ART_HANDLE 401 }; 402 403 String[] attrMap = new String[]{ 404 title, 405 artist, 406 album, 407 trackNumber, 408 totalTracks, 409 genre, 410 playingTime, 411 artHandle 412 }; 413 414 AvrcpItem.Builder builder = new AvrcpItem.Builder(); 415 builder.fromAvrcpAttributeArray(attrIds, attrMap); 416 AvrcpItem item = builder.build(); 417 418 Assert.assertEquals(null, item.getDevice()); 419 Assert.assertEquals(false, item.isPlayable()); 420 Assert.assertEquals(false, item.isBrowsable()); 421 Assert.assertEquals(0, item.getUid()); 422 Assert.assertEquals(null, item.getUuid()); 423 Assert.assertEquals(null, item.getDisplayableName()); 424 Assert.assertEquals(title, item.getTitle()); 425 Assert.assertEquals(artist, item.getArtistName()); 426 Assert.assertEquals(album, item.getAlbumName()); 427 Assert.assertEquals(1, item.getTrackNumber()); 428 Assert.assertEquals(12, item.getTotalNumberOfTracks()); 429 Assert.assertEquals(null, item.getCoverArtHandle()); 430 Assert.assertEquals(null, item.getCoverArtLocation()); 431 } 432 433 @Test updateCoverArtLocation()434 public void updateCoverArtLocation() { 435 Uri uri = Uri.parse("content://somewhere"); 436 Uri uri2 = Uri.parse("content://somewhereelse"); 437 438 AvrcpItem.Builder builder = new AvrcpItem.Builder(); 439 builder.setCoverArtLocation(uri); 440 441 AvrcpItem item = builder.build(); 442 Assert.assertEquals(uri, item.getCoverArtLocation()); 443 444 item.setCoverArtLocation(uri2); 445 Assert.assertEquals(uri2, item.getCoverArtLocation()); 446 } 447 448 @Test avrcpMediaItem_toMediaMetadata()449 public void avrcpMediaItem_toMediaMetadata() { 450 String title = "Aaaaargh"; 451 String artist = "Bluetooth"; 452 String album = "The Best Protocol"; 453 long trackNumber = 1; 454 long totalTracks = 12; 455 String genre = "Viking Metal"; 456 long playingTime = 301; 457 String artHandle = "0000001"; 458 Uri uri = Uri.parse("content://somewhere"); 459 460 AvrcpItem.Builder builder = new AvrcpItem.Builder(); 461 builder.setItemType(AvrcpItem.TYPE_MEDIA); 462 builder.setType(AvrcpItem.MEDIA_AUDIO); 463 builder.setDevice(mDevice); 464 builder.setPlayable(true); 465 builder.setUid(0); 466 builder.setUuid(UUID); 467 builder.setDisplayableName(title); 468 builder.setTitle(title); 469 builder.setArtistName(artist); 470 builder.setAlbumName(album); 471 builder.setTrackNumber(trackNumber); 472 builder.setTotalNumberOfTracks(totalTracks); 473 builder.setGenre(genre); 474 builder.setPlayingTime(playingTime); 475 builder.setCoverArtHandle(artHandle); 476 builder.setCoverArtLocation(uri); 477 478 AvrcpItem item = builder.build(); 479 MediaMetadataCompat metadata = item.toMediaMetadata(); 480 481 Assert.assertEquals(UUID, metadata.getString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID)); 482 Assert.assertEquals(title, 483 metadata.getString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE)); 484 Assert.assertEquals(title, metadata.getString(MediaMetadataCompat.METADATA_KEY_TITLE)); 485 Assert.assertEquals(artist, metadata.getString(MediaMetadataCompat.METADATA_KEY_ARTIST)); 486 Assert.assertEquals(album, metadata.getString(MediaMetadataCompat.METADATA_KEY_ALBUM)); 487 Assert.assertEquals(trackNumber, 488 metadata.getLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER)); 489 Assert.assertEquals(totalTracks, 490 metadata.getLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS)); 491 Assert.assertEquals(genre, metadata.getString(MediaMetadataCompat.METADATA_KEY_GENRE)); 492 Assert.assertEquals(playingTime, 493 metadata.getLong(MediaMetadataCompat.METADATA_KEY_DURATION)); 494 Assert.assertEquals(uri, 495 Uri.parse(metadata.getString(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON_URI))); 496 Assert.assertEquals(uri, 497 Uri.parse(metadata.getString(MediaMetadataCompat.METADATA_KEY_ART_URI))); 498 Assert.assertEquals(uri, 499 Uri.parse(metadata.getString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI))); 500 Assert.assertEquals(null, 501 metadata.getBitmap(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON)); 502 Assert.assertEquals(null, metadata.getBitmap(MediaMetadataCompat.METADATA_KEY_ART)); 503 Assert.assertEquals(null, metadata.getBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART)); 504 Assert.assertFalse(metadata.containsKey(MediaMetadataCompat.METADATA_KEY_BT_FOLDER_TYPE)); 505 } 506 507 @Test avrcpFolderItem_toMediaMetadata()508 public void avrcpFolderItem_toMediaMetadata() { 509 String title = "Bluetooth Playlist"; 510 String artist = "Many"; 511 long totalTracks = 12; 512 String genre = "Viking Metal"; 513 long playingTime = 301; 514 String artHandle = "0000001"; 515 Uri uri = Uri.parse("content://somewhere"); 516 int type = AvrcpItem.FOLDER_TITLES; 517 518 AvrcpItem.Builder builder = new AvrcpItem.Builder(); 519 builder.setItemType(AvrcpItem.TYPE_FOLDER); 520 builder.setType(type); 521 builder.setDevice(mDevice); 522 builder.setUuid(UUID); 523 builder.setDisplayableName(title); 524 builder.setTitle(title); 525 builder.setArtistName(artist); 526 builder.setTotalNumberOfTracks(totalTracks); 527 builder.setGenre(genre); 528 builder.setPlayingTime(playingTime); 529 builder.setCoverArtHandle(artHandle); 530 builder.setCoverArtLocation(uri); 531 532 AvrcpItem item = builder.build(); 533 MediaMetadataCompat metadata = item.toMediaMetadata(); 534 535 Assert.assertEquals(UUID, metadata.getString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID)); 536 Assert.assertEquals(title, 537 metadata.getString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE)); 538 Assert.assertEquals(title, metadata.getString(MediaMetadataCompat.METADATA_KEY_TITLE)); 539 Assert.assertEquals(artist, metadata.getString(MediaMetadataCompat.METADATA_KEY_ARTIST)); 540 Assert.assertEquals(null, metadata.getString(MediaMetadataCompat.METADATA_KEY_ALBUM)); 541 Assert.assertEquals(totalTracks, 542 metadata.getLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS)); 543 Assert.assertEquals(genre, metadata.getString(MediaMetadataCompat.METADATA_KEY_GENRE)); 544 Assert.assertEquals(playingTime, 545 metadata.getLong(MediaMetadataCompat.METADATA_KEY_DURATION)); 546 Assert.assertEquals(uri, 547 Uri.parse(metadata.getString(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON_URI))); 548 Assert.assertEquals(uri, 549 Uri.parse(metadata.getString(MediaMetadataCompat.METADATA_KEY_ART_URI))); 550 Assert.assertEquals(uri, 551 Uri.parse(metadata.getString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI))); 552 Assert.assertEquals(null, 553 metadata.getBitmap(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON)); 554 Assert.assertEquals(null, metadata.getBitmap(MediaMetadataCompat.METADATA_KEY_ART)); 555 Assert.assertEquals(null, metadata.getBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART)); 556 Assert.assertEquals(type, 557 metadata.getLong(MediaMetadataCompat.METADATA_KEY_BT_FOLDER_TYPE)); 558 } 559 560 @Test avrcpItemNoDisplayName_toMediaItem()561 public void avrcpItemNoDisplayName_toMediaItem() { 562 String title = "Aaaaargh"; 563 Uri uri = Uri.parse("content://somewhere"); 564 565 AvrcpItem.Builder builder = new AvrcpItem.Builder(); 566 builder.setPlayable(true); 567 builder.setUuid(UUID); 568 builder.setTitle(title); 569 builder.setCoverArtLocation(uri); 570 571 AvrcpItem item = builder.build(); 572 MediaItem mediaItem = item.toMediaItem(); 573 MediaDescriptionCompat desc = mediaItem.getDescription(); 574 575 Assert.assertTrue(mediaItem.isPlayable()); 576 Assert.assertFalse(mediaItem.isBrowsable()); 577 Assert.assertEquals(UUID, mediaItem.getMediaId()); 578 579 Assert.assertEquals(UUID, desc.getMediaId()); 580 Assert.assertEquals(null, desc.getMediaUri()); 581 Assert.assertEquals(title, desc.getTitle().toString()); 582 Assert.assertEquals(desc.getSubtitle(), null); 583 Assert.assertEquals(uri, desc.getIconUri()); 584 Assert.assertEquals(null, desc.getIconBitmap()); 585 } 586 587 @Test avrcpItemWithDisplayName_toMediaItem()588 public void avrcpItemWithDisplayName_toMediaItem() { 589 String title = "Aaaaargh"; 590 String displayName = "A Different Type of Aaaaargh"; 591 Uri uri = Uri.parse("content://somewhere"); 592 593 AvrcpItem.Builder builder = new AvrcpItem.Builder(); 594 builder.setPlayable(true); 595 builder.setUuid(UUID); 596 builder.setDisplayableName(displayName); 597 builder.setTitle(title); 598 builder.setCoverArtLocation(uri); 599 600 AvrcpItem item = builder.build(); 601 MediaItem mediaItem = item.toMediaItem(); 602 MediaDescriptionCompat desc = mediaItem.getDescription(); 603 604 Assert.assertTrue(mediaItem.isPlayable()); 605 Assert.assertFalse(mediaItem.isBrowsable()); 606 Assert.assertEquals(UUID, mediaItem.getMediaId()); 607 608 Assert.assertEquals(UUID, desc.getMediaId()); 609 Assert.assertEquals(null, desc.getMediaUri()); 610 Assert.assertEquals(displayName, desc.getTitle().toString()); 611 Assert.assertEquals(desc.getSubtitle(), null); 612 Assert.assertEquals(uri, desc.getIconUri()); 613 Assert.assertEquals(null, desc.getIconBitmap()); 614 } 615 616 @Test avrcpItemBrowsable_toMediaItem()617 public void avrcpItemBrowsable_toMediaItem() { 618 String title = "Aaaaargh"; 619 Uri uri = Uri.parse("content://somewhere"); 620 621 AvrcpItem.Builder builder = new AvrcpItem.Builder(); 622 builder.setBrowsable(true); 623 builder.setUuid(UUID); 624 builder.setTitle(title); 625 builder.setCoverArtLocation(uri); 626 627 AvrcpItem item = builder.build(); 628 MediaItem mediaItem = item.toMediaItem(); 629 MediaDescriptionCompat desc = mediaItem.getDescription(); 630 631 Assert.assertFalse(mediaItem.isPlayable()); 632 Assert.assertTrue(mediaItem.isBrowsable()); 633 Assert.assertEquals(UUID, mediaItem.getMediaId()); 634 635 Assert.assertEquals(UUID, desc.getMediaId()); 636 Assert.assertEquals(null, desc.getMediaUri()); 637 Assert.assertEquals(title, desc.getTitle().toString()); 638 Assert.assertEquals(desc.getSubtitle(), null); 639 Assert.assertEquals(uri, desc.getIconUri()); 640 Assert.assertEquals(null, desc.getIconBitmap()); 641 } 642 } 643