import { describe, it, expect } from '@ohos/hypium' import { VideoItem } from '../../../main/ets/viewmodel/VideoItem' import { insertSongToNextPlayQueue, QueueInsertStatus } from '../../../main/ets/common/util/PlayQueueHelper' function createSong(name: string, filePath: string): VideoItem { const song = new VideoItem(name, filePath, filePath, 0, 0, '2026-03-01 00:00:00') song.fileName = `${name}.flac` return song } export default function playQueueHelperTest() { describe('PlayQueueHelperTest', () => { it('startPlaybackWhenQueueEmpty', 0, () => { const nextSong = createSong('Next', '/music/next.flac') const result = insertSongToNextPlayQueue([], '', -1, nextSong) expect(result.status).assertEqual(QueueInsertStatus.START_PLAY) expect(result.queue.map(item => item.filePath).join(',')).assertEqual('/music/next.flac') expect(result.currentIndex).assertEqual(0) expect(result.insertedIndex).assertEqual(0) }) it('moveExistingSongBehindCurrentSong', 0, () => { const queue = [ createSong('A', '/music/a.flac'), createSong('B', '/music/b.flac'), createSong('C', '/music/c.flac'), createSong('D', '/music/d.flac') ] const result = insertSongToNextPlayQueue(queue, '/music/c.flac', 2, queue[0]) expect(result.status).assertEqual(QueueInsertStatus.INSERTED) expect(result.queue.map(item => item.filePath).join(',')).assertEqual('/music/b.flac,/music/c.flac,/music/a.flac,/music/d.flac') expect(result.currentIndex).assertEqual(1) expect(result.insertedIndex).assertEqual(2) }) it('keepQueueUnchangedWhenSongAlreadyPlaying', 0, () => { const queue = [ createSong('A', '/music/a.flac'), createSong('B', '/music/b.flac') ] const result = insertSongToNextPlayQueue(queue, '/music/b.flac', 1, queue[1]) expect(result.status).assertEqual(QueueInsertStatus.ALREADY_PLAYING) expect(result.queue.map(item => item.filePath).join(',')).assertEqual('/music/a.flac,/music/b.flac') expect(result.currentIndex).assertEqual(1) expect(result.insertedIndex).assertEqual(1) }) }) }