Add worldwide genre style selector

This commit is contained in:
diyaa
2026-09-15 18:49:34 +02:00
parent 03bfd3ef75
commit 297b791a3e
10 changed files with 607 additions and 15 deletions
@@ -0,0 +1,46 @@
import MusicAssistantCore
import XCTest
final class LocalGenreStyleCatalogTests: XCTestCase {
func testWorldwideCatalogCoversMajorGenreAndStyleFamilies() {
let catalog = LocalGenreStyleCatalog()
let expectedFamilies: Set<String> = [
"Pop & Contemporary",
"Rock & Alternative",
"Electronic & Dance",
"Hip Hop, R&B & Soul",
"Jazz & Blues",
"Country, Folk & Roots",
"Latin & Caribbean",
"Middle East & North Africa",
"South Asian",
"East Asian",
"Southeast Asia & Oceania",
"African",
"Reggae & Caribbean",
"Classical & Cinematic"
]
XCTAssertGreaterThan(catalog.items.count, 180)
XCTAssertTrue(expectedFamilies.isSubset(of: Set(catalog.familyCategories)))
XCTAssertTrue(catalog.regionsOfOrigin.contains("Arab World"))
XCTAssertTrue(catalog.regionsOfOrigin.contains("West Africa"))
XCTAssertTrue(catalog.regionsOfOrigin.contains("South Asia"))
XCTAssertTrue(catalog.regionsOfOrigin.contains("Latin America"))
}
func testCatalogSearchesAliasesArabicTermsAndCategoryRegionFilters() {
let catalog = LocalGenreStyleCatalog()
XCTAssertEqual(catalog.styles(matching: "dnb").map(\.id), ["drum-and-bass"])
XCTAssertEqual(catalog.styles(matching: "بوب عربي").map(\.id), ["arabic-pop"])
XCTAssertEqual(
catalog.styles(
matching: "",
familyCategory: "Latin & Caribbean",
regionOrigin: "Brazil"
).map(\.id),
["baile-funk", "bossa-nova", "samba"]
)
}
}