update to the playlists. testing
CI / check (push) Successful in 1m15s
CI / docker (push) Successful in 2m11s

This commit is contained in:
Connor Johnstone
2026-04-01 22:12:58 -04:00
parent f77cea47b1
commit b2f030b52d
8 changed files with 224 additions and 32 deletions
+11 -11
View File
@@ -83,7 +83,7 @@ fn test_score_tracks_basic() {
let mut top_map = HashMap::new();
top_map.insert("artist-1".to_string(), top_tracks);
let scored = score_tracks(&artists, &tracks_map, &top_map, 5);
let scored = score_tracks(&artists, &tracks_map, &top_map, 5, 0, None);
// Should have 3 tracks (only ones matching top tracks)
assert_eq!(scored.len(), 3);
@@ -107,7 +107,7 @@ fn test_score_tracks_no_top_tracks_uses_uniform() {
let top_map = HashMap::new(); // No top tracks
let scored = score_tracks(&artists, &tracks_map, &top_map, 5);
let scored = score_tracks(&artists, &tracks_map, &top_map, 5, 0, None);
// All 3 tracks should be included with uniform scoring
assert_eq!(scored.len(), 3);
@@ -141,11 +141,11 @@ fn test_score_tracks_per_artist_cap() {
top_map.insert("artist-1".to_string(), top_tracks);
// bias 10 → cap = 10
let scored = score_tracks(&artists, &tracks_map, &top_map, 10);
let scored = score_tracks(&artists, &tracks_map, &top_map, 10, 0, None);
assert!(scored.len() <= 10);
// bias 0 → no cap
let scored_no_cap = score_tracks(&artists, &tracks_map, &top_map, 0);
let scored_no_cap = score_tracks(&artists, &tracks_map, &top_map, 0, 0, None);
assert_eq!(scored_no_cap.len(), 50);
}
@@ -164,7 +164,7 @@ fn test_similarity_transform() {
tracks_map.insert("high".to_string(), vec![track_high]);
tracks_map.insert("low".to_string(), vec![track_low]);
let scored = score_tracks(&artists, &tracks_map, &HashMap::new(), 5);
let scored = score_tracks(&artists, &tracks_map, &HashMap::new(), 5, 0, None);
assert_eq!(scored.len(), 2);
let high_score = scored
@@ -189,7 +189,7 @@ fn test_generate_playlist_basic() {
.collect();
let seeds = HashSet::new();
let result = generate_playlist(&candidates, 10, &seeds);
let result = generate_playlist(&candidates, 10, &seeds, None, false);
assert_eq!(result.len(), 10);
}
@@ -199,7 +199,7 @@ fn test_generate_playlist_respects_count() {
let candidates: Vec<Candidate> = (1..=5).map(|i| make_candidate(i, "Artist", 1.0)).collect();
let seeds = HashSet::new();
let result = generate_playlist(&candidates, 3, &seeds);
let result = generate_playlist(&candidates, 3, &seeds, None, false);
assert_eq!(result.len(), 3);
}
@@ -208,7 +208,7 @@ fn test_generate_playlist_not_more_than_available() {
let candidates: Vec<Candidate> = (1..=3).map(|i| make_candidate(i, "Artist", 1.0)).collect();
let seeds = HashSet::new();
let result = generate_playlist(&candidates, 100, &seeds);
let result = generate_playlist(&candidates, 100, &seeds, None, false);
assert_eq!(result.len(), 3);
}
@@ -216,7 +216,7 @@ fn test_generate_playlist_not_more_than_available() {
fn test_generate_playlist_empty_candidates() {
let candidates: Vec<Candidate> = vec![];
let seeds = HashSet::new();
let result = generate_playlist(&candidates, 10, &seeds);
let result = generate_playlist(&candidates, 10, &seeds, None, false);
assert!(result.is_empty());
}
@@ -229,7 +229,7 @@ fn test_generate_playlist_per_artist_cap() {
candidates.extend((21..=25).map(|i| make_candidate(i, "Minor", 1.0)));
let seeds = HashSet::new();
let result = generate_playlist(&candidates, 15, &seeds);
let result = generate_playlist(&candidates, 15, &seeds, None, false);
let prolific_count = result.iter().filter(|c| c.artist == "Prolific").count();
let minor_count = result.iter().filter(|c| c.artist == "Minor").count();
@@ -259,7 +259,7 @@ fn test_generate_playlist_seed_enforcement() {
let mut seeds = HashSet::new();
seeds.insert("Seed".to_string());
let result = generate_playlist(&candidates, 10, &seeds);
let result = generate_playlist(&candidates, 10, &seeds, None, false);
let seed_count = result.iter().filter(|c| c.artist == "Seed").count();
// seed_min = (10/10).max(1) = 1, so at least 1 seed track