music: add tests for album types
Add tests for Album.Type. Other tests for the music library will be done separately.
This commit is contained in:
parent
dc73f96ba8
commit
a2b51825e8
26 changed files with 147 additions and 101 deletions
|
@ -36,7 +36,7 @@ import org.oxycblt.auxio.music.Music
|
|||
import org.oxycblt.auxio.music.MusicMode
|
||||
import org.oxycblt.auxio.music.MusicParent
|
||||
import org.oxycblt.auxio.music.Song
|
||||
import org.oxycblt.auxio.music.Sort
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.util.*
|
||||
|
||||
/**
|
||||
|
|
|
@ -35,7 +35,7 @@ import org.oxycblt.auxio.music.Artist
|
|||
import org.oxycblt.auxio.music.Music
|
||||
import org.oxycblt.auxio.music.MusicParent
|
||||
import org.oxycblt.auxio.music.Song
|
||||
import org.oxycblt.auxio.music.Sort
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.util.collect
|
||||
import org.oxycblt.auxio.util.collectImmediately
|
||||
import org.oxycblt.auxio.util.logD
|
||||
|
|
|
@ -33,9 +33,9 @@ import org.oxycblt.auxio.R
|
|||
import org.oxycblt.auxio.list.Header
|
||||
import org.oxycblt.auxio.list.Item
|
||||
import org.oxycblt.auxio.music.*
|
||||
import org.oxycblt.auxio.music.Library
|
||||
import org.oxycblt.auxio.music.MusicStore
|
||||
import org.oxycblt.auxio.music.Sort
|
||||
import org.oxycblt.auxio.music.library.Library
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.music.storage.MimeType
|
||||
import org.oxycblt.auxio.playback.PlaybackSettings
|
||||
import org.oxycblt.auxio.util.*
|
||||
|
|
|
@ -36,7 +36,7 @@ import org.oxycblt.auxio.music.Genre
|
|||
import org.oxycblt.auxio.music.Music
|
||||
import org.oxycblt.auxio.music.MusicParent
|
||||
import org.oxycblt.auxio.music.Song
|
||||
import org.oxycblt.auxio.music.Sort
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.util.collect
|
||||
import org.oxycblt.auxio.util.collectImmediately
|
||||
import org.oxycblt.auxio.util.logD
|
||||
|
|
|
@ -50,8 +50,8 @@ import org.oxycblt.auxio.home.list.SongListFragment
|
|||
import org.oxycblt.auxio.home.tabs.AdaptiveTabStrategy
|
||||
import org.oxycblt.auxio.list.selection.SelectionFragment
|
||||
import org.oxycblt.auxio.music.*
|
||||
import org.oxycblt.auxio.music.Library
|
||||
import org.oxycblt.auxio.music.Sort
|
||||
import org.oxycblt.auxio.music.library.Library
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.music.system.Indexer
|
||||
import org.oxycblt.auxio.ui.MainNavigationAction
|
||||
import org.oxycblt.auxio.ui.NavigationViewModel
|
||||
|
|
|
@ -23,9 +23,9 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.StateFlow
|
||||
import org.oxycblt.auxio.home.tabs.Tab
|
||||
import org.oxycblt.auxio.music.*
|
||||
import org.oxycblt.auxio.music.Library
|
||||
import org.oxycblt.auxio.music.MusicStore
|
||||
import org.oxycblt.auxio.music.Sort
|
||||
import org.oxycblt.auxio.music.library.Library
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.playback.PlaybackSettings
|
||||
import org.oxycblt.auxio.util.logD
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ import org.oxycblt.auxio.list.recycler.AlbumViewHolder
|
|||
import org.oxycblt.auxio.list.recycler.SelectionIndicatorAdapter
|
||||
import org.oxycblt.auxio.list.recycler.SyncListDiffer
|
||||
import org.oxycblt.auxio.music.*
|
||||
import org.oxycblt.auxio.music.Sort
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.playback.formatDurationMs
|
||||
import org.oxycblt.auxio.playback.secsToMs
|
||||
import org.oxycblt.auxio.util.collectImmediately
|
||||
|
|
|
@ -34,7 +34,7 @@ import org.oxycblt.auxio.list.recycler.SyncListDiffer
|
|||
import org.oxycblt.auxio.music.Artist
|
||||
import org.oxycblt.auxio.music.MusicMode
|
||||
import org.oxycblt.auxio.music.MusicParent
|
||||
import org.oxycblt.auxio.music.Sort
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.playback.formatDurationMs
|
||||
import org.oxycblt.auxio.util.collectImmediately
|
||||
import org.oxycblt.auxio.util.nonZeroOrNull
|
||||
|
|
|
@ -34,7 +34,7 @@ import org.oxycblt.auxio.list.recycler.SyncListDiffer
|
|||
import org.oxycblt.auxio.music.Genre
|
||||
import org.oxycblt.auxio.music.MusicMode
|
||||
import org.oxycblt.auxio.music.MusicParent
|
||||
import org.oxycblt.auxio.music.Sort
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.playback.formatDurationMs
|
||||
import org.oxycblt.auxio.util.collectImmediately
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ import org.oxycblt.auxio.list.recycler.SyncListDiffer
|
|||
import org.oxycblt.auxio.music.MusicMode
|
||||
import org.oxycblt.auxio.music.MusicParent
|
||||
import org.oxycblt.auxio.music.Song
|
||||
import org.oxycblt.auxio.music.Sort
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.playback.formatDurationMs
|
||||
import org.oxycblt.auxio.playback.secsToMs
|
||||
import org.oxycblt.auxio.util.collectImmediately
|
||||
|
|
|
@ -35,7 +35,7 @@ import org.oxycblt.auxio.music.Artist
|
|||
import org.oxycblt.auxio.music.Genre
|
||||
import org.oxycblt.auxio.music.Music
|
||||
import org.oxycblt.auxio.music.Song
|
||||
import org.oxycblt.auxio.music.Sort
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
|
||||
/**
|
||||
* A [Keyer] implementation for [Music] data.
|
||||
|
|
|
@ -21,8 +21,8 @@ import androidx.lifecycle.ViewModel
|
|||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import org.oxycblt.auxio.music.*
|
||||
import org.oxycblt.auxio.music.Library
|
||||
import org.oxycblt.auxio.music.MusicStore
|
||||
import org.oxycblt.auxio.music.library.Library
|
||||
|
||||
/**
|
||||
* A [ViewModel] that manages the current selection.
|
||||
|
|
|
@ -30,6 +30,7 @@ import kotlinx.parcelize.IgnoredOnParcel
|
|||
import kotlinx.parcelize.Parcelize
|
||||
import org.oxycblt.auxio.R
|
||||
import org.oxycblt.auxio.list.Item
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.music.parsing.parseId3GenreNames
|
||||
import org.oxycblt.auxio.music.parsing.parseMultiValue
|
||||
import org.oxycblt.auxio.music.storage.*
|
||||
|
|
|
@ -21,6 +21,7 @@ import android.content.Context
|
|||
import android.os.storage.StorageManager
|
||||
import androidx.core.content.edit
|
||||
import org.oxycblt.auxio.R
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.music.storage.Directory
|
||||
import org.oxycblt.auxio.music.storage.MusicDirectories
|
||||
import org.oxycblt.auxio.settings.Settings
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
|
||||
package org.oxycblt.auxio.music
|
||||
|
||||
import org.oxycblt.auxio.music.library.Library
|
||||
|
||||
/**
|
||||
* A repository granting access to the music library.
|
||||
*
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.oxycblt.auxio.music
|
||||
package org.oxycblt.auxio.music.library
|
||||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
|
@ -43,10 +43,10 @@ class Library(rawSongs: List<Song.Raw>, settings: MusicSettings) {
|
|||
/** All [Genre]s found on the device. */
|
||||
val genres = buildGenres(songs)
|
||||
|
||||
// Use a mapping to make finding information based on it's UID much faster.
|
||||
private val uidMap = buildMap {
|
||||
// We need to finalize the newly-created music and also add it to a mapping to make
|
||||
// de-serializing music from UIDs much faster. Do these in the same loop for efficiency.
|
||||
for (music in (songs + albums + artists + genres)) {
|
||||
// Finalize all music in the same mapping creation loop for efficiency.
|
||||
music._finalize()
|
||||
this[music.uid] = music
|
||||
}
|
|
@ -15,13 +15,14 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.oxycblt.auxio.music
|
||||
package org.oxycblt.auxio.music.library
|
||||
|
||||
import androidx.annotation.IdRes
|
||||
import kotlin.math.max
|
||||
import org.oxycblt.auxio.IntegerTable
|
||||
import org.oxycblt.auxio.R
|
||||
import org.oxycblt.auxio.music.Sort.Mode
|
||||
import org.oxycblt.auxio.music.*
|
||||
import org.oxycblt.auxio.music.library.Sort.Mode
|
||||
|
||||
/**
|
||||
* A sorting method.
|
|
@ -21,8 +21,8 @@ import androidx.lifecycle.ViewModel
|
|||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import org.oxycblt.auxio.music.*
|
||||
import org.oxycblt.auxio.music.Library
|
||||
import org.oxycblt.auxio.music.MusicStore
|
||||
import org.oxycblt.auxio.music.library.Library
|
||||
import org.oxycblt.auxio.util.unlikelyToBeNull
|
||||
|
||||
/**
|
||||
|
|
|
@ -28,8 +28,8 @@ import kotlinx.coroutines.withContext
|
|||
import kotlinx.coroutines.yield
|
||||
import org.oxycblt.auxio.BuildConfig
|
||||
import org.oxycblt.auxio.music.*
|
||||
import org.oxycblt.auxio.music.Library
|
||||
import org.oxycblt.auxio.music.extractor.*
|
||||
import org.oxycblt.auxio.music.library.Library
|
||||
import org.oxycblt.auxio.util.logD
|
||||
import org.oxycblt.auxio.util.logE
|
||||
import org.oxycblt.auxio.util.logW
|
||||
|
|
|
@ -24,7 +24,7 @@ import android.database.sqlite.SQLiteOpenHelper
|
|||
import android.provider.BaseColumns
|
||||
import androidx.core.database.sqlite.transaction
|
||||
import org.oxycblt.auxio.music.*
|
||||
import org.oxycblt.auxio.music.Library
|
||||
import org.oxycblt.auxio.music.library.Library
|
||||
import org.oxycblt.auxio.util.*
|
||||
|
||||
/**
|
||||
|
|
|
@ -21,9 +21,9 @@ import kotlinx.coroutines.Dispatchers
|
|||
import kotlinx.coroutines.withContext
|
||||
import org.oxycblt.auxio.BuildConfig
|
||||
import org.oxycblt.auxio.music.*
|
||||
import org.oxycblt.auxio.music.Library
|
||||
import org.oxycblt.auxio.music.MusicStore
|
||||
import org.oxycblt.auxio.music.Sort
|
||||
import org.oxycblt.auxio.music.library.Library
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.playback.state.PlaybackStateManager.Listener
|
||||
import org.oxycblt.auxio.util.logD
|
||||
import org.oxycblt.auxio.util.logE
|
||||
|
|
|
@ -43,10 +43,10 @@ import kotlinx.coroutines.Dispatchers
|
|||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.launch
|
||||
import org.oxycblt.auxio.BuildConfig
|
||||
import org.oxycblt.auxio.music.Library
|
||||
import org.oxycblt.auxio.music.MusicSettings
|
||||
import org.oxycblt.auxio.music.MusicStore
|
||||
import org.oxycblt.auxio.music.Song
|
||||
import org.oxycblt.auxio.music.library.Library
|
||||
import org.oxycblt.auxio.playback.PlaybackSettings
|
||||
import org.oxycblt.auxio.playback.replaygain.ReplayGainAudioProcessor
|
||||
import org.oxycblt.auxio.playback.state.InternalPlayer
|
||||
|
|
|
@ -31,9 +31,9 @@ import org.oxycblt.auxio.R
|
|||
import org.oxycblt.auxio.list.Header
|
||||
import org.oxycblt.auxio.list.Item
|
||||
import org.oxycblt.auxio.music.*
|
||||
import org.oxycblt.auxio.music.Library
|
||||
import org.oxycblt.auxio.music.MusicStore
|
||||
import org.oxycblt.auxio.music.Sort
|
||||
import org.oxycblt.auxio.music.library.Library
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.playback.PlaybackSettings
|
||||
import org.oxycblt.auxio.util.context
|
||||
import org.oxycblt.auxio.util.logD
|
||||
|
|
82
app/src/test/java/org/oxycblt/auxio/music/AlbumTypeTest.kt
Normal file
82
app/src/test/java/org/oxycblt/auxio/music/AlbumTypeTest.kt
Normal file
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* Copyright (c) 2023 Auxio Project
|
||||
*
|
||||
* 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
|
||||
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
|
||||
class AlbumTypeTest {
|
||||
@Test
|
||||
fun albumType_parse_primary() {
|
||||
assertEquals(Album.Type.Album(null), Album.Type.parse(listOf("album")))
|
||||
assertEquals(Album.Type.EP(null), Album.Type.parse(listOf("ep")))
|
||||
assertEquals(Album.Type.Single(null), Album.Type.parse(listOf("single")))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun albumType_parse_secondary() {
|
||||
assertEquals(Album.Type.Compilation(null), Album.Type.parse(listOf("album", "compilation")))
|
||||
assertEquals(Album.Type.Soundtrack, Album.Type.parse(listOf("album", "soundtrack")))
|
||||
assertEquals(Album.Type.Mix, Album.Type.parse(listOf("album", "dj-mix")))
|
||||
assertEquals(Album.Type.Mixtape, Album.Type.parse(listOf("album", "mixtape/street")))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun albumType_parse_modifiers() {
|
||||
assertEquals(
|
||||
Album.Type.Album(Album.Type.Refinement.LIVE), Album.Type.parse(listOf("album", "live")))
|
||||
assertEquals(
|
||||
Album.Type.Album(Album.Type.Refinement.REMIX),
|
||||
Album.Type.parse(listOf("album", "remix")))
|
||||
assertEquals(
|
||||
Album.Type.EP(Album.Type.Refinement.LIVE), Album.Type.parse(listOf("ep", "live")))
|
||||
assertEquals(
|
||||
Album.Type.EP(Album.Type.Refinement.REMIX), Album.Type.parse(listOf("ep", "remix")))
|
||||
assertEquals(
|
||||
Album.Type.Single(Album.Type.Refinement.LIVE),
|
||||
Album.Type.parse(listOf("single", "live")))
|
||||
assertEquals(
|
||||
Album.Type.Single(Album.Type.Refinement.REMIX),
|
||||
Album.Type.parse(listOf("single", "remix")))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun albumType_parse_secondaryModifiers() {
|
||||
assertEquals(
|
||||
Album.Type.Compilation(Album.Type.Refinement.LIVE),
|
||||
Album.Type.parse(listOf("album", "compilation", "live")))
|
||||
assertEquals(
|
||||
Album.Type.Compilation(Album.Type.Refinement.REMIX),
|
||||
Album.Type.parse(listOf("album", "compilation", "remix")))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun albumType_parse_orphanedSecondary() {
|
||||
assertEquals(Album.Type.Compilation(null), Album.Type.parse(listOf("compilation")))
|
||||
assertEquals(Album.Type.Soundtrack, Album.Type.parse(listOf("soundtrack")))
|
||||
assertEquals(Album.Type.Mix, Album.Type.parse(listOf("dj-mix")))
|
||||
assertEquals(Album.Type.Mixtape, Album.Type.parse(listOf("mixtape/street")))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun albumType_parse_orphanedModifier() {
|
||||
assertEquals(Album.Type.Album(Album.Type.Refinement.LIVE), Album.Type.parse(listOf("live")))
|
||||
assertEquals(
|
||||
Album.Type.Album(Album.Type.Refinement.REMIX), Album.Type.parse(listOf("remix")))
|
||||
}
|
||||
}
|
|
@ -23,35 +23,28 @@ import org.junit.Test
|
|||
|
||||
class DateTest {
|
||||
@Test
|
||||
fun date_equals() {
|
||||
assertTrue(
|
||||
requireNotNull(Date.from("2016-08-16T00:01:02")) ==
|
||||
requireNotNull(Date.from("2016-08-16T00:01:02")))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_precisionEquals() {
|
||||
fun date_equals_varyingPrecision() {
|
||||
assertTrue(
|
||||
requireNotNull(Date.from("2016-08-16T00:01:02")) !=
|
||||
requireNotNull(Date.from("2016-08-16")))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_compareDates() {
|
||||
fun date_compareTo_dates() {
|
||||
val a = requireNotNull(Date.from("2016-08-16T00:01:02"))
|
||||
val b = requireNotNull(Date.from("2016-09-16T00:01:02"))
|
||||
assertEquals(-1, a.compareTo(b))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_compareTimes() {
|
||||
fun date_compareTo_times() {
|
||||
val a = requireNotNull(Date.from("2016-08-16T00:02:02"))
|
||||
val b = requireNotNull(Date.from("2016-08-16T00:01:02"))
|
||||
assertEquals(1, a.compareTo(b))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_comparePrecision() {
|
||||
fun date_compareTo_varyingPrecision() {
|
||||
val a = requireNotNull(Date.from("2016-08-16T00:01:02"))
|
||||
val b = requireNotNull(Date.from("2016-08-16"))
|
||||
assertEquals(
|
||||
|
@ -61,77 +54,42 @@ class DateTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun date_fromYear() {
|
||||
fun date_from_values() {
|
||||
assertEquals("2016", Date.from(2016).toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_fromDate() {
|
||||
assertEquals("2016-08-16", Date.from(2016, 8, 16).toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_fromDatetime() {
|
||||
assertEquals("2016-08-16T00:01Z", Date.from(2016, 8, 16, 0, 1).toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_fromFormalTimestamp() {
|
||||
assertEquals("2016-08-16T00:01:02Z", Date.from("2016-08-16T00:01:02").toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_fromSpacedTimestamp() {
|
||||
assertEquals("2016-08-16T00:01:02Z", Date.from("2016-08-16 00:01:02").toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_fromDatestamp() {
|
||||
assertEquals(
|
||||
"2016-08-16",
|
||||
Date.from("2016-08-16").toString(),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_fromWeirdDateTimestamp() {
|
||||
assertEquals("2016-08-16T00:01Z", Date.from("2016-08-16T00:01").toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_fromWeirdDatestamp() {
|
||||
assertEquals("2016-08", Date.from("2016-08").toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_fromYearStamp() {
|
||||
assertEquals("2016", Date.from("2016").toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_fromWackTimestamp() {
|
||||
assertEquals("2016-11", Date.from("2016-11-32 25:43:01").toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_fromBustedTimestamp() {
|
||||
assertEquals(null, Date.from("2016-08-16:00:01:02"))
|
||||
assertEquals(null, Date.from(""))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_fromWackYear() {
|
||||
assertEquals(Date.from(0), null)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_fromYearDate() {
|
||||
fun date_from_yearDate() {
|
||||
assertEquals("2016-08-16", Date.from(20160816).toString())
|
||||
assertEquals("2016-08-16", Date.from("20160816").toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun dateRange_fromDates() {
|
||||
fun date_from_timestamp() {
|
||||
assertEquals("2016-08-16T00:01:02Z", Date.from("2016-08-16T00:01:02").toString())
|
||||
assertEquals("2016-08-16T00:01:02Z", Date.from("2016-08-16 00:01:02").toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_from_lesserPrecision() {
|
||||
assertEquals("2016", Date.from("2016").toString())
|
||||
assertEquals("2016-08", Date.from("2016-08").toString())
|
||||
assertEquals("2016-08-16", Date.from("2016-08-16").toString())
|
||||
assertEquals("2016-08-16T00:01Z", Date.from("2016-08-16T00:01").toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun date_from_wack() {
|
||||
assertEquals(null, Date.from(0))
|
||||
assertEquals(null, Date.from(""))
|
||||
assertEquals(null, Date.from("2016-08-16:00:01:02"))
|
||||
assertEquals("2016-11", Date.from("2016-11-32 25:43:01").toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun dateRange_from_correct() {
|
||||
val range =
|
||||
requireNotNull(
|
||||
Date.Range.from(
|
||||
|
@ -145,7 +103,7 @@ class DateTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun dateRange_fromSingle() {
|
||||
fun dateRange_from_one() {
|
||||
val range =
|
||||
requireNotNull(
|
||||
Date.Range.from(listOf(requireNotNull(Date.from("2016-08-16T00:01:02")))))
|
||||
|
@ -154,7 +112,7 @@ class DateTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun dateRange_empty() {
|
||||
fun dateRange_from_none() {
|
||||
assertEquals(null, Date.Range.from(listOf()))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
package org.oxycblt.auxio.music
|
||||
|
||||
import org.oxycblt.auxio.music.library.Sort
|
||||
import org.oxycblt.auxio.music.storage.MusicDirectories
|
||||
|
||||
interface FakeMusicSettings : MusicSettings {
|
||||
|
|
Loading…
Reference in a new issue