music: move other metadata into model

This commit is contained in:
Alexander Capehart 2024-11-30 17:24:17 -07:00
parent 523d3cdd30
commit dfff01bd28
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
38 changed files with 108 additions and 105 deletions

View file

@ -32,8 +32,8 @@ import org.oxycblt.auxio.music.MusicRepository
import org.oxycblt.auxio.music.MusicType
import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.info.Disc
import org.oxycblt.auxio.music.info.ReleaseType
import org.oxycblt.auxio.musikr.model.Disc
import org.oxycblt.auxio.musikr.model.ReleaseType
import timber.log.Timber as L
interface DetailGenerator {

View file

@ -34,7 +34,7 @@ import org.oxycblt.auxio.detail.list.SongPropertyAdapter
import org.oxycblt.auxio.list.adapter.UpdateInstructions
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.musikr.model.Name
import org.oxycblt.auxio.music.metadata.AudioProperties
import org.oxycblt.auxio.music.resolveNames
import org.oxycblt.auxio.playback.formatDurationMs

View file

@ -37,8 +37,8 @@ import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter
import org.oxycblt.auxio.list.adapter.SimpleDiffCallback
import org.oxycblt.auxio.music.Album
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.info.Disc
import org.oxycblt.auxio.music.info.resolveNumber
import org.oxycblt.auxio.musikr.model.Disc
import org.oxycblt.auxio.musikr.model.resolveNumber
import org.oxycblt.auxio.playback.formatDurationMs
import org.oxycblt.auxio.util.context
import org.oxycblt.auxio.util.getAttrColorCompat

View file

@ -29,10 +29,10 @@ import kotlinx.parcelize.IgnoredOnParcel
import kotlinx.parcelize.Parcelize
import org.oxycblt.auxio.image.Cover
import org.oxycblt.auxio.list.Item
import org.oxycblt.auxio.music.info.Date
import org.oxycblt.auxio.music.info.Disc
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.music.info.ReleaseType
import org.oxycblt.auxio.musikr.model.Date
import org.oxycblt.auxio.musikr.model.Disc
import org.oxycblt.auxio.musikr.model.Name
import org.oxycblt.auxio.musikr.model.ReleaseType
import org.oxycblt.auxio.musikr.fs.MimeType
import org.oxycblt.auxio.musikr.fs.Path
import org.oxycblt.auxio.playback.replaygain.ReplayGainAdjustment

View file

@ -25,12 +25,12 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.withContext
import kotlinx.coroutines.yield
import org.oxycblt.auxio.music.MusicRepository.IndexingWorker
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.musikr.model.Name
import org.oxycblt.auxio.music.metadata.Separators
import org.oxycblt.auxio.musikr.Indexer
import org.oxycblt.auxio.musikr.IndexingProgress
import org.oxycblt.auxio.musikr.model.Interpretation
import org.oxycblt.auxio.musikr.model.impl.MutableLibrary
import org.oxycblt.auxio.musikr.interpret.Interpretation
import org.oxycblt.auxio.musikr.model.MutableLibrary
import timber.log.Timber as L
/**

View file

@ -35,7 +35,7 @@ import org.oxycblt.auxio.music.MusicRepository
import org.oxycblt.auxio.music.MusicType
import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.info.resolveNumber
import org.oxycblt.auxio.musikr.model.resolveNumber
import org.oxycblt.auxio.search.SearchEngine
class MusicBrowser

View file

@ -28,9 +28,9 @@ import kotlinx.coroutines.flow.buffer
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOn
import org.oxycblt.auxio.musikr.explore.Explorer
import org.oxycblt.auxio.musikr.model.Interpretation
import org.oxycblt.auxio.musikr.model.Modeler
import org.oxycblt.auxio.musikr.model.impl.MutableLibrary
import org.oxycblt.auxio.musikr.interpret.Interpretation
import org.oxycblt.auxio.musikr.interpret.Modeler
import org.oxycblt.auxio.musikr.model.MutableLibrary
interface Indexer {
suspend fun run(

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2024 Auxio Project
* PrepareModule.kt is part of Auxio.
* Copyright (c) 2023 Auxio Project
* InterpretModule.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
@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model.interpret
package org.oxycblt.auxio.musikr.interpret
import dagger.Binds
import dagger.Module
@ -26,5 +26,5 @@ import dagger.hilt.components.SingletonComponent
@Module
@InstallIn(SingletonComponent::class)
interface InterpretModule {
@Binds fun prepare(factory: InterpreterImpl): Interpreter
@Binds fun interpreter(interpreter: ModelerImpl): Modeler
}

View file

@ -16,9 +16,9 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model
package org.oxycblt.auxio.musikr.interpret
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.musikr.model.Name
import org.oxycblt.auxio.music.metadata.Separators
data class Interpretation(val nameFactory: Name.Known.Factory, val separators: Separators)

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2024 Auxio Project
* Modeler.kt is part of Auxio.
* Interpreter.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
@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model
package org.oxycblt.auxio.musikr.interpret
import javax.inject.Inject
import kotlinx.coroutines.Dispatchers
@ -30,19 +30,19 @@ import kotlinx.coroutines.flow.toList
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.musikr.tag.AudioFile
import org.oxycblt.auxio.musikr.playlist.PlaylistFile
import org.oxycblt.auxio.musikr.model.link.AlbumLinker
import org.oxycblt.auxio.musikr.model.link.ArtistLinker
import org.oxycblt.auxio.musikr.model.link.GenreLinker
import org.oxycblt.auxio.musikr.model.link.Linked
import org.oxycblt.auxio.musikr.model.link.LinkedSong
import org.oxycblt.auxio.musikr.model.impl.AlbumImpl
import org.oxycblt.auxio.musikr.model.impl.ArtistImpl
import org.oxycblt.auxio.musikr.model.impl.GenreImpl
import org.oxycblt.auxio.musikr.model.impl.LibraryImpl
import org.oxycblt.auxio.musikr.model.impl.MutableLibrary
import org.oxycblt.auxio.musikr.model.impl.SongImpl
import org.oxycblt.auxio.musikr.model.interpret.PreSong
import org.oxycblt.auxio.musikr.model.interpret.Interpreter
import org.oxycblt.auxio.musikr.interpret.link.AlbumLinker
import org.oxycblt.auxio.musikr.interpret.link.ArtistLinker
import org.oxycblt.auxio.musikr.interpret.link.GenreLinker
import org.oxycblt.auxio.musikr.interpret.link.Linked
import org.oxycblt.auxio.musikr.interpret.link.LinkedSong
import org.oxycblt.auxio.musikr.model.AlbumImpl
import org.oxycblt.auxio.musikr.model.ArtistImpl
import org.oxycblt.auxio.musikr.model.GenreImpl
import org.oxycblt.auxio.musikr.model.LibraryImpl
import org.oxycblt.auxio.musikr.model.MutableLibrary
import org.oxycblt.auxio.musikr.model.SongImpl
import org.oxycblt.auxio.musikr.interpret.prepare.PreSong
import org.oxycblt.auxio.musikr.interpret.prepare.Preparer
import timber.log.Timber as L
interface Modeler {
@ -53,14 +53,14 @@ interface Modeler {
): MutableLibrary
}
class ModelerImpl @Inject constructor(private val interpreter: Interpreter) : Modeler {
class ModelerImpl @Inject constructor(private val preparer: Preparer) : Modeler {
override suspend fun model(
audioFiles: Flow<AudioFile>,
playlistFiles: Flow<PlaylistFile>,
interpretation: Interpretation
): MutableLibrary {
val preSongs =
interpreter
preparer
.interpret(audioFiles, interpretation)
.flowOn(Dispatchers.Main)
.buffer(Channel.UNLIMITED)

View file

@ -16,13 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model.link
package org.oxycblt.auxio.musikr.interpret.link
import java.util.UUID
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import org.oxycblt.auxio.musikr.model.impl.AlbumImpl
import org.oxycblt.auxio.musikr.model.impl.SongImpl
import org.oxycblt.auxio.musikr.model.AlbumImpl
import org.oxycblt.auxio.musikr.model.SongImpl
class AlbumLinker {
private val tree = mutableMapOf<String?, MutableMap<UUID?, AlbumLink>>()

View file

@ -16,17 +16,17 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model.link
package org.oxycblt.auxio.musikr.interpret.link
import java.util.UUID
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.musikr.model.impl.AlbumImpl
import org.oxycblt.auxio.musikr.model.impl.ArtistImpl
import org.oxycblt.auxio.musikr.model.impl.SongImpl
import org.oxycblt.auxio.musikr.model.interpret.PreAlbum
import org.oxycblt.auxio.musikr.model.interpret.PreArtist
import org.oxycblt.auxio.musikr.model.AlbumImpl
import org.oxycblt.auxio.musikr.model.ArtistImpl
import org.oxycblt.auxio.musikr.model.SongImpl
import org.oxycblt.auxio.musikr.interpret.prepare.PreAlbum
import org.oxycblt.auxio.musikr.interpret.prepare.PreArtist
class ArtistLinker {
private val tree = mutableMapOf<String?, MutableMap<UUID?, ArtistLink>>()

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model.link
package org.oxycblt.auxio.musikr.interpret.link
class Contribution<T> {
private val map = mutableMapOf<T, Int>()

View file

@ -16,14 +16,14 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model.link
package org.oxycblt.auxio.musikr.interpret.link
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import org.oxycblt.auxio.musikr.model.impl.GenreImpl
import org.oxycblt.auxio.musikr.model.impl.SongImpl
import org.oxycblt.auxio.musikr.model.interpret.PreGenre
import org.oxycblt.auxio.musikr.model.interpret.PreSong
import org.oxycblt.auxio.musikr.model.GenreImpl
import org.oxycblt.auxio.musikr.model.SongImpl
import org.oxycblt.auxio.musikr.interpret.prepare.PreGenre
import org.oxycblt.auxio.musikr.interpret.prepare.PreSong
class GenreLinker {
private val tree = mutableMapOf<String?, GenreLink>()

View file

@ -16,16 +16,16 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model.link
package org.oxycblt.auxio.musikr.interpret.link
import org.oxycblt.auxio.musikr.model.impl.AlbumImpl
import org.oxycblt.auxio.musikr.model.impl.ArtistImpl
import org.oxycblt.auxio.musikr.model.impl.GenreImpl
import org.oxycblt.auxio.musikr.model.impl.PlaylistImpl
import org.oxycblt.auxio.musikr.model.impl.SongImpl
import org.oxycblt.auxio.musikr.model.interpret.PreAlbum
import org.oxycblt.auxio.musikr.model.interpret.PrePlaylist
import org.oxycblt.auxio.musikr.model.interpret.PreSong
import org.oxycblt.auxio.musikr.model.AlbumImpl
import org.oxycblt.auxio.musikr.model.ArtistImpl
import org.oxycblt.auxio.musikr.model.GenreImpl
import org.oxycblt.auxio.musikr.model.PlaylistImpl
import org.oxycblt.auxio.musikr.model.SongImpl
import org.oxycblt.auxio.musikr.interpret.prepare.PreAlbum
import org.oxycblt.auxio.musikr.interpret.prepare.PrePlaylist
import org.oxycblt.auxio.musikr.interpret.prepare.PreSong
interface LinkedSong {
val preSong: PreSong

View file

@ -16,12 +16,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model.link
package org.oxycblt.auxio.musikr.interpret.link
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.emptyFlow
import org.oxycblt.auxio.musikr.playlist.PlaylistFile
import org.oxycblt.auxio.musikr.model.impl.PlaylistImpl
import org.oxycblt.auxio.musikr.model.PlaylistImpl
class PlaylistLinker {
fun register(

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model.interpret
package org.oxycblt.auxio.musikr.interpret.prepare
/// --- ID3v2 PARSING ---

View file

@ -16,16 +16,16 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model.interpret
package org.oxycblt.auxio.musikr.interpret.prepare
import android.net.Uri
import java.util.UUID
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.MusicType
import org.oxycblt.auxio.music.info.Date
import org.oxycblt.auxio.music.info.Disc
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.music.info.ReleaseType
import org.oxycblt.auxio.musikr.model.Date
import org.oxycblt.auxio.musikr.model.Disc
import org.oxycblt.auxio.musikr.model.Name
import org.oxycblt.auxio.musikr.model.ReleaseType
import org.oxycblt.auxio.musikr.playlist.PlaylistHandle
import org.oxycblt.auxio.musikr.fs.MimeType
import org.oxycblt.auxio.musikr.fs.Path

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2023 Auxio Project
* InterpretModule.kt is part of Auxio.
* Copyright (c) 2024 Auxio Project
* PrepareModule.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
@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model
package org.oxycblt.auxio.musikr.interpret.prepare
import dagger.Binds
import dagger.Module
@ -25,6 +25,6 @@ import dagger.hilt.components.SingletonComponent
@Module
@InstallIn(SingletonComponent::class)
interface ModelModule {
@Binds fun interpreter(interpreter: ModelerImpl): Modeler
interface PrepareModule {
@Binds fun prepare(factory: PreparerImpl): Preparer
}

View file

@ -16,26 +16,26 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model.interpret
package org.oxycblt.auxio.musikr.interpret.prepare
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import org.oxycblt.auxio.R
import org.oxycblt.auxio.music.info.Disc
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.music.info.ReleaseType
import org.oxycblt.auxio.musikr.model.Disc
import org.oxycblt.auxio.musikr.model.Name
import org.oxycblt.auxio.musikr.model.ReleaseType
import org.oxycblt.auxio.musikr.tag.AudioFile
import org.oxycblt.auxio.musikr.fs.MimeType
import org.oxycblt.auxio.musikr.model.Interpretation
import org.oxycblt.auxio.musikr.interpret.Interpretation
import org.oxycblt.auxio.playback.replaygain.ReplayGainAdjustment
import org.oxycblt.auxio.util.toUuidOrNull
interface Interpreter {
interface Preparer {
fun interpret(audioFiles: Flow<AudioFile>, interpretation: Interpretation): Flow<PreSong>
}
class InterpreterImpl @Inject constructor() : Interpreter {
class PreparerImpl @Inject constructor() : Preparer {
override fun interpret(audioFiles: Flow<AudioFile>, interpretation: Interpretation) =
audioFiles.map { audioFile ->
val individualPreArtists =

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.info
package org.oxycblt.auxio.musikr.model
import android.content.Context
import java.text.ParseException

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model.impl
package org.oxycblt.auxio.musikr.model
import kotlin.math.min
import org.oxycblt.auxio.image.Cover
@ -27,11 +27,10 @@ import org.oxycblt.auxio.music.Genre
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.MusicType
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.info.Date
import org.oxycblt.auxio.musikr.model.link.LinkedAlbum
import org.oxycblt.auxio.musikr.model.link.LinkedSong
import org.oxycblt.auxio.musikr.model.interpret.PreArtist
import org.oxycblt.auxio.musikr.model.interpret.PreGenre
import org.oxycblt.auxio.musikr.interpret.link.LinkedAlbum
import org.oxycblt.auxio.musikr.interpret.link.LinkedSong
import org.oxycblt.auxio.musikr.interpret.prepare.PreArtist
import org.oxycblt.auxio.musikr.interpret.prepare.PreGenre
import org.oxycblt.auxio.util.update
/**

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.info
package org.oxycblt.auxio.musikr.model
import android.content.Context
import org.oxycblt.auxio.R

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model.impl
package org.oxycblt.auxio.musikr.model
import org.oxycblt.auxio.music.Library
import org.oxycblt.auxio.music.Music

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.info
package org.oxycblt.auxio.musikr.model
import android.content.Context
import androidx.annotation.StringRes

View file

@ -16,12 +16,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.musikr.model.impl
package org.oxycblt.auxio.musikr.model
import org.oxycblt.auxio.image.Cover
import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.musikr.model.link.LinkedPlaylist
import org.oxycblt.auxio.musikr.interpret.link.LinkedPlaylist
class PlaylistImpl(linkedPlaylist: LinkedPlaylist) : Playlist {
private val prePlaylist = linkedPlaylist.prePlaylist

View file

@ -16,10 +16,10 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.info
package org.oxycblt.auxio.musikr.model
import org.oxycblt.auxio.R
import org.oxycblt.auxio.music.info.ReleaseType.Album
import org.oxycblt.auxio.musikr.model.ReleaseType.Album
/**
* The type of release an [Album] is considered. This includes EPs, Singles, Compilations, etc.

View file

@ -1,6 +1,6 @@
package org.oxycblt.auxio.musikr.tag
import org.oxycblt.auxio.music.info.Date
import org.oxycblt.auxio.musikr.model.Date
import org.oxycblt.auxio.musikr.fs.DeviceFile
data class AudioFile(

View file

@ -28,7 +28,7 @@ import androidx.room.Query
import androidx.room.RoomDatabase
import androidx.room.TypeConverter
import androidx.room.TypeConverters
import org.oxycblt.auxio.music.info.Date
import org.oxycblt.auxio.musikr.model.Date
import org.oxycblt.auxio.musikr.tag.AudioFile
import org.oxycblt.auxio.musikr.fs.DeviceFile
import org.oxycblt.auxio.musikr.tag.extractor.correctWhitespace

View file

@ -19,7 +19,7 @@
package org.oxycblt.auxio.musikr.tag.extractor
import androidx.core.text.isDigitsOnly
import org.oxycblt.auxio.music.info.Date
import org.oxycblt.auxio.musikr.model.Date
import org.oxycblt.auxio.util.nonZeroOrNull
// Song

View file

@ -38,7 +38,7 @@ import org.oxycblt.auxio.music.MusicParent
import org.oxycblt.auxio.music.MusicRepository
import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.musikr.model.Name
import org.oxycblt.auxio.music.service.MediaSessionUID
import org.oxycblt.auxio.music.service.MusicBrowser
import org.oxycblt.auxio.playback.state.PlaybackCommand

View file

@ -28,7 +28,7 @@ import org.oxycblt.auxio.music.Genre
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.musikr.model.Name
import timber.log.Timber as L
/**

View file

@ -22,7 +22,7 @@ import java.security.MessageDigest
import java.util.UUID
import kotlin.reflect.KClass
import org.oxycblt.auxio.BuildConfig
import org.oxycblt.auxio.music.info.Date
import org.oxycblt.auxio.musikr.model.Date
/**
* Sanitizes a value that is unlikely to be null. On debug builds, this aliases to [requireNotNull],

View file

@ -21,6 +21,7 @@ package org.oxycblt.auxio.music.info
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Test
import org.oxycblt.auxio.musikr.model.Date
class DateTest {
@Test

View file

@ -20,6 +20,7 @@ package org.oxycblt.auxio.music.info
import org.junit.Assert.assertEquals
import org.junit.Test
import org.oxycblt.auxio.musikr.model.Disc
class DiscTest {
@Test

View file

@ -21,6 +21,8 @@ package org.oxycblt.auxio.music.info
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotEquals
import org.junit.Test
import org.oxycblt.auxio.musikr.model.Name
import org.oxycblt.auxio.musikr.model.SortToken
class NameTest {
@Test

View file

@ -20,6 +20,7 @@ package org.oxycblt.auxio.music.info
import org.junit.Assert.assertEquals
import org.junit.Test
import org.oxycblt.auxio.musikr.model.ReleaseType
class ReleaseTypeTest {
@Test

View file

@ -24,7 +24,7 @@ import org.oxycblt.auxio.musikr.tag.extractor.correctWhitespace
import org.oxycblt.auxio.musikr.tag.extractor.parseId3v2PositionField
import org.oxycblt.auxio.musikr.tag.extractor.parseVorbisPositionField
import org.oxycblt.auxio.musikr.tag.extractor.splitEscaped
import org.oxycblt.auxio.musikr.model.interpret.parseId3GenreNames
import org.oxycblt.auxio.musikr.interpret.prepare.parseId3GenreNames
class TagUtilTest {
@Test