Import minamp 1.0 source

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xockoandClaude Opus 5.5 committed 2026-10-14 19:38:37 +02:00
commit 0df8124629
194 files changed
+7319

No files matched your search

+71
View File
@@ -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);
}
}