Private
Public Access
Import minamp 1.0 source
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
commit
0df8124629
194 files changed
+7319
No files matched your search
@@ -0,0 +1,71 @@
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.minamp.PlayQueue;
|
||||
import com.minamp.plex.Item;
|
||||
|
||||
/** Queue semantics: shuffle keeps the current track first and restores order; repeat; edits. */
|
||||
public class QueueTest {
|
||||
static int fails;
|
||||
|
||||
static void check(boolean ok, String what) {
|
||||
System.out.println((ok ? "PASS " : "FAIL ") + what);
|
||||
if (!ok) fails++;
|
||||
}
|
||||
|
||||
static List<Item> tracks(int n) {
|
||||
List<Item> l = new ArrayList<Item>();
|
||||
for (int i = 0; i < n; i++) { Item t = new Item(); t.type = Item.TRACK; t.title = "T" + i; t.ratingKey = "" + i; l.add(t); }
|
||||
return l;
|
||||
}
|
||||
|
||||
static String order(PlayQueue q) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < q.size(); i++) sb.append(q.at(i).title).append(i == q.index() ? "*" : "").append(' ');
|
||||
return sb.toString().trim();
|
||||
}
|
||||
|
||||
public static void main(String[] a) {
|
||||
PlayQueue q = PlayQueue.get();
|
||||
q.set(tracks(5), 2, false, "Album");
|
||||
check(order(q).equals("T0 T1 T2* T3 T4"), "set from index 2: " + order(q));
|
||||
q.setShuffle(true);
|
||||
check(q.index() == 0 && q.current().title.equals("T2") && q.size() == 5, "shuffle keeps current first: " + order(q));
|
||||
q.setShuffle(false);
|
||||
check(order(q).equals("T0 T1 T2* T3 T4"), "unshuffle restores order: " + order(q));
|
||||
|
||||
check(q.advance(false) && q.current().title.equals("T3"), "advance");
|
||||
q.advance(false);
|
||||
check(!q.advance(false) && q.current().title.equals("T4"), "end of queue stops (repeat off)");
|
||||
q.cycleRepeat(); // all
|
||||
check(q.advance(false) && q.current().title.equals("T0"), "repeat all wraps");
|
||||
q.cycleRepeat(); // one
|
||||
check(q.advance(false) && q.current().title.equals("T0"), "repeat one replays on completion");
|
||||
check(q.advance(true) && q.current().title.equals("T1"), "manual skip leaves repeat-one track");
|
||||
q.cycleRepeat(); // off
|
||||
check(q.back() && q.current().title.equals("T0"), "back");
|
||||
check(q.back() && q.current().title.equals("T0"), "back at start stays");
|
||||
|
||||
List<Item> extra = tracks(2);
|
||||
extra.get(0).title = "X0"; extra.get(1).title = "X1";
|
||||
q.playNext(extra);
|
||||
check(order(q).equals("T0* X0 X1 T1 T2 T3 T4"), "play next inserts after current: " + order(q));
|
||||
q.remove(1);
|
||||
check(order(q).equals("T0* X1 T1 T2 T3 T4"), "remove: " + order(q));
|
||||
q.jump(3);
|
||||
q.moveNext(0);
|
||||
check(order(q).equals("X1 T1 T2* T0 T3 T4"), "move earlier item to play next: " + order(q));
|
||||
q.setShuffle(true);
|
||||
q.append(tracks(1));
|
||||
q.setShuffle(false);
|
||||
check(q.size() == 7 && q.current().title.equals("T2"), "items appended while shuffled survive unshuffle: " + order(q));
|
||||
q.clearUpcoming();
|
||||
check(q.size() == q.index() + 1 && q.current().title.equals("T2"), "clear upcoming: " + order(q));
|
||||
q.set(tracks(10), -1, true, "Radio");
|
||||
check(q.size() == 10 && q.index() == 0 && q.shuffle(), "shuffle play from random start");
|
||||
q.clear();
|
||||
check(q.current() == null && q.size() == 0, "clear");
|
||||
System.out.println(fails == 0 ? "ALL PASSED" : fails + " FAILED");
|
||||
System.exit(fails == 0 ? 0 : 1);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user