PlayQueueHelper.test.ets 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { describe, it, expect } from '@ohos/hypium'
  2. import { VideoItem } from '../../../main/ets/viewmodel/VideoItem'
  3. import { insertSongToNextPlayQueue, QueueInsertStatus } from '../../../main/ets/common/util/PlayQueueHelper'
  4. function createSong(name: string, filePath: string): VideoItem {
  5. const song = new VideoItem(name, filePath, filePath, 0, 0, '2026-03-01 00:00:00')
  6. song.fileName = `${name}.flac`
  7. return song
  8. }
  9. export default function playQueueHelperTest() {
  10. describe('PlayQueueHelperTest', () => {
  11. it('startPlaybackWhenQueueEmpty', 0, () => {
  12. const nextSong = createSong('Next', '/music/next.flac')
  13. const result = insertSongToNextPlayQueue([], '', -1, nextSong)
  14. expect(result.status).assertEqual(QueueInsertStatus.START_PLAY)
  15. expect(result.queue.map(item => item.filePath).join(',')).assertEqual('/music/next.flac')
  16. expect(result.currentIndex).assertEqual(0)
  17. expect(result.insertedIndex).assertEqual(0)
  18. })
  19. it('moveExistingSongBehindCurrentSong', 0, () => {
  20. const queue = [
  21. createSong('A', '/music/a.flac'),
  22. createSong('B', '/music/b.flac'),
  23. createSong('C', '/music/c.flac'),
  24. createSong('D', '/music/d.flac')
  25. ]
  26. const result = insertSongToNextPlayQueue(queue, '/music/c.flac', 2, queue[0])
  27. expect(result.status).assertEqual(QueueInsertStatus.INSERTED)
  28. expect(result.queue.map(item => item.filePath).join(',')).assertEqual('/music/b.flac,/music/c.flac,/music/a.flac,/music/d.flac')
  29. expect(result.currentIndex).assertEqual(1)
  30. expect(result.insertedIndex).assertEqual(2)
  31. })
  32. it('keepQueueUnchangedWhenSongAlreadyPlaying', 0, () => {
  33. const queue = [
  34. createSong('A', '/music/a.flac'),
  35. createSong('B', '/music/b.flac')
  36. ]
  37. const result = insertSongToNextPlayQueue(queue, '/music/b.flac', 1, queue[1])
  38. expect(result.status).assertEqual(QueueInsertStatus.ALREADY_PLAYING)
  39. expect(result.queue.map(item => item.filePath).join(',')).assertEqual('/music/a.flac,/music/b.flac')
  40. expect(result.currentIndex).assertEqual(1)
  41. expect(result.insertedIndex).assertEqual(1)
  42. })
  43. })
  44. }