music: add basic devicelibrary tests
Add basic devicelibrary initialization/glue tests. This does not actually test the grouping process, as that is more involved.
This commit is contained in:
parent
b3ef43b37e
commit
a4e8c250a3
1 changed files with 180 additions and 0 deletions
|
@ -0,0 +1,180 @@
|
|||
/*
|
||||
* Copyright (c) 2023 Auxio Project
|
||||
* DeviceLibraryTest.kt is part of Auxio.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.oxycblt.auxio.music.user
|
||||
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertNotEquals
|
||||
import org.junit.Test
|
||||
import org.oxycblt.auxio.music.Music
|
||||
import org.oxycblt.auxio.music.MusicType
|
||||
import org.oxycblt.auxio.music.device.AlbumImpl
|
||||
import org.oxycblt.auxio.music.device.ArtistImpl
|
||||
import org.oxycblt.auxio.music.device.DeviceLibraryImpl
|
||||
import org.oxycblt.auxio.music.device.GenreImpl
|
||||
import org.oxycblt.auxio.music.device.SongImpl
|
||||
|
||||
class DeviceLibraryTest {
|
||||
|
||||
@Test
|
||||
fun deviceLibrary_withSongs() {
|
||||
val songUidA = Music.UID.auxio(MusicType.SONGS)
|
||||
val songUidB = Music.UID.auxio(MusicType.SONGS)
|
||||
val songA =
|
||||
mockk<SongImpl> {
|
||||
every { uid } returns songUidA
|
||||
every { durationMs } returns 0
|
||||
every { finalize() } returns this
|
||||
}
|
||||
val songB =
|
||||
mockk<SongImpl> {
|
||||
every { uid } returns songUidB
|
||||
every { durationMs } returns 1
|
||||
every { finalize() } returns this
|
||||
}
|
||||
val deviceLibrary = DeviceLibraryImpl(listOf(songA, songB), listOf(), listOf(), listOf())
|
||||
verify {
|
||||
songA.finalize()
|
||||
songB.finalize()
|
||||
}
|
||||
val foundSongA = deviceLibrary.findSong(songUidA)!!
|
||||
assertEquals(songUidA, foundSongA.uid)
|
||||
assertEquals(0L, foundSongA.durationMs)
|
||||
val foundSongB = deviceLibrary.findSong(songUidB)!!
|
||||
assertEquals(songUidB, foundSongB.uid)
|
||||
assertEquals(1L, foundSongB.durationMs)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun deviceLibrary_withAlbums() {
|
||||
val albumUidA = Music.UID.auxio(MusicType.ALBUMS)
|
||||
val albumUidB = Music.UID.auxio(MusicType.ALBUMS)
|
||||
val albumA =
|
||||
mockk<AlbumImpl> {
|
||||
every { uid } returns albumUidA
|
||||
every { durationMs } returns 0
|
||||
every { finalize() } returns this
|
||||
}
|
||||
val albumB =
|
||||
mockk<AlbumImpl> {
|
||||
every { uid } returns albumUidB
|
||||
every { durationMs } returns 1
|
||||
every { finalize() } returns this
|
||||
}
|
||||
val deviceLibrary = DeviceLibraryImpl(listOf(), listOf(albumA, albumB), listOf(), listOf())
|
||||
verify {
|
||||
albumA.finalize()
|
||||
albumB.finalize()
|
||||
}
|
||||
val foundAlbumA = deviceLibrary.findAlbum(albumUidA)!!
|
||||
assertEquals(albumUidA, foundAlbumA.uid)
|
||||
assertEquals(0L, foundAlbumA.durationMs)
|
||||
val foundAlbumB = deviceLibrary.findAlbum(albumUidB)!!
|
||||
assertEquals(albumUidB, foundAlbumB.uid)
|
||||
assertEquals(1L, foundAlbumB.durationMs)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun deviceLibrary_withArtists() {
|
||||
val artistUidA = Music.UID.auxio(MusicType.ARTISTS)
|
||||
val artistUidB = Music.UID.auxio(MusicType.ARTISTS)
|
||||
val artistA =
|
||||
mockk<ArtistImpl> {
|
||||
every { uid } returns artistUidA
|
||||
every { durationMs } returns 0
|
||||
every { finalize() } returns this
|
||||
}
|
||||
val artistB =
|
||||
mockk<ArtistImpl> {
|
||||
every { uid } returns artistUidB
|
||||
every { durationMs } returns 1
|
||||
every { finalize() } returns this
|
||||
}
|
||||
val deviceLibrary =
|
||||
DeviceLibraryImpl(listOf(), listOf(), listOf(artistA, artistB), listOf())
|
||||
verify {
|
||||
artistA.finalize()
|
||||
artistB.finalize()
|
||||
}
|
||||
val foundArtistA = deviceLibrary.findArtist(artistUidA)!!
|
||||
assertEquals(artistUidA, foundArtistA.uid)
|
||||
assertEquals(0L, foundArtistA.durationMs)
|
||||
val foundArtistB = deviceLibrary.findArtist(artistUidB)!!
|
||||
assertEquals(artistUidB, foundArtistB.uid)
|
||||
assertEquals(1L, foundArtistB.durationMs)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun deviceLibrary_withGenres() {
|
||||
val genreUidA = Music.UID.auxio(MusicType.GENRES)
|
||||
val genreUidB = Music.UID.auxio(MusicType.GENRES)
|
||||
val genreA =
|
||||
mockk<GenreImpl> {
|
||||
every { uid } returns genreUidA
|
||||
every { durationMs } returns 0
|
||||
every { finalize() } returns this
|
||||
}
|
||||
val genreB =
|
||||
mockk<GenreImpl> {
|
||||
every { uid } returns genreUidB
|
||||
every { durationMs } returns 1
|
||||
every { finalize() } returns this
|
||||
}
|
||||
val deviceLibrary = DeviceLibraryImpl(listOf(), listOf(), listOf(), listOf(genreA, genreB))
|
||||
verify {
|
||||
genreA.finalize()
|
||||
genreB.finalize()
|
||||
}
|
||||
val foundGenreA = deviceLibrary.findGenre(genreUidA)!!
|
||||
assertEquals(genreUidA, foundGenreA.uid)
|
||||
assertEquals(0L, foundGenreA.durationMs)
|
||||
val foundGenreB = deviceLibrary.findGenre(genreUidB)!!
|
||||
assertEquals(genreUidB, foundGenreB.uid)
|
||||
assertEquals(1L, foundGenreB.durationMs)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun deviceLibrary_equals() {
|
||||
val songA =
|
||||
mockk<SongImpl> {
|
||||
every { uid } returns Music.UID.auxio(MusicType.SONGS)
|
||||
every { finalize() } returns this
|
||||
}
|
||||
val songB =
|
||||
mockk<SongImpl> {
|
||||
every { uid } returns Music.UID.auxio(MusicType.SONGS)
|
||||
every { finalize() } returns this
|
||||
}
|
||||
val album =
|
||||
mockk<AlbumImpl> {
|
||||
every { uid } returns mockk()
|
||||
every { finalize() } returns this
|
||||
}
|
||||
|
||||
val deviceLibraryA = DeviceLibraryImpl(listOf(songA), listOf(album), listOf(), listOf())
|
||||
val deviceLibraryB = DeviceLibraryImpl(listOf(songA), listOf(), listOf(), listOf())
|
||||
val deviceLibraryC = DeviceLibraryImpl(listOf(songB), listOf(album), listOf(), listOf())
|
||||
assertEquals(deviceLibraryA, deviceLibraryB)
|
||||
assertEquals(deviceLibraryA.hashCode(), deviceLibraryA.hashCode())
|
||||
assertNotEquals(deviceLibraryA, deviceLibraryC)
|
||||
assertNotEquals(deviceLibraryA.hashCode(), deviceLibraryC.hashCode())
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue