Add worldwide genre style selector
This commit is contained in:
@@ -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"]
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user