File tree 3 files changed +31
-5
lines changed
main/kotlin/dev/schlaubi/mikmusic/player
3 files changed +31
-5
lines changed Original file line number Diff line number Diff line change 1
1
subprojects {
2
- version = " 3.5.17 -SNAPSHOT"
2
+ version = " 3.5.18 -SNAPSHOT"
3
3
}
Original file line number Diff line number Diff line change @@ -11,12 +11,14 @@ class Queue(private var tracksList: MutableList<QueuedTrack> = mutableListOf())
11
11
nextIndex = 0
12
12
order = LinkedList (order.shuffled())
13
13
} else {
14
- val queue = order.subList(0 , nextIndex)
15
- val shuffled = order.subList(nextIndex.coerceAtMost(order.lastIndex), order.size)
16
- val unShuffled = queue + shuffled.sorted()
14
+ if (order.isNotEmpty()) {
15
+ val queue = order.subList(0 , nextIndex)
16
+ val shuffled = order.subList(nextIndex.coerceAtMost(order.lastIndex), order.size)
17
+ val unShuffled = queue + shuffled.sorted()
17
18
19
+ order = LinkedList (unShuffled)
20
+ }
18
21
nextIndex = tracksList.size
19
- order = LinkedList (unShuffled)
20
22
}
21
23
field = value
22
24
}
@@ -43,13 +45,17 @@ class Queue(private var tracksList: MutableList<QueuedTrack> = mutableListOf())
43
45
fun poll (): QueuedTrack {
44
46
val queuedTrack = tracksList[order.poll()]
45
47
nextIndex = nextIndex.coerceAtMost(order.size)
48
+ if (order.size == 0 ) {
49
+ shuffle = false
50
+ }
46
51
return queuedTrack
47
52
}
48
53
49
54
fun clear () {
50
55
nextIndex = 0
51
56
tracksList.clear()
52
57
order.clear()
58
+ shuffle = false
53
59
}
54
60
55
61
fun isEmpty () = order.isEmpty()
Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ import dev.schlaubi.mikmusic.player.SimpleQueuedTrack
6
6
import dev.schlaubi.stdx.serialization.emptyJsonObject
7
7
import kotlin.test.Test
8
8
import kotlin.test.assertEquals
9
+ import kotlin.test.assertFalse
9
10
import kotlin.test.assertNotEquals
10
11
11
12
class QueueTest {
@@ -165,6 +166,25 @@ class QueueTest {
165
166
166
167
assertEquals(track, queue.poll())
167
168
}
169
+
170
+ @Test
171
+ fun `test shuffle is over after shuffle is over` () {
172
+ val queue = makeMockQueue()
173
+ queue.shuffle = true
174
+ repeat(queue.tracks.size) { queue.poll() }
175
+
176
+ assertFalse(queue.shuffle)
177
+ }
178
+
179
+ @Test
180
+ fun `test shuffle is over after shuffle is over, when adding unshuffled tracks` () {
181
+ val queue = makeMockQueue()
182
+ queue.addTracks(mockTrack(23 ))
183
+ queue.shuffle = true
184
+ repeat(queue.tracks.size) { queue.poll() }
185
+
186
+ assertFalse(queue.shuffle)
187
+ }
168
188
}
169
189
170
190
private fun makeMockQueue () = Queue (MutableList (10 , ::mockTrack))
You can’t perform that action at this time.
0 commit comments