Model language and pronunciation settings
This commit is contained in:
@@ -235,4 +235,48 @@ final class SongProjectModelTests: XCTestCase {
|
||||
|
||||
XCTAssertNil(project.vocalist(for: "harmony"))
|
||||
}
|
||||
|
||||
func testLanguagesDialectsAndArabicPronunciationSettingsAreModeled() {
|
||||
var project = SongProject(
|
||||
id: "project-7",
|
||||
title: "Multilingual Song",
|
||||
idea: "Arabic and English hook"
|
||||
)
|
||||
let arabic = LanguageSelection(id: "arabic", name: "Arabic")
|
||||
let english = LanguageSelection(id: "english", name: "English")
|
||||
let levantine = DialectSelection(id: "levantine", name: "Levantine", languageID: arabic.id)
|
||||
let gulf = DialectSelection(id: "gulf", name: "Gulf", languageID: arabic.id)
|
||||
|
||||
project.upsertLanguage(arabic)
|
||||
project.upsertLanguage(english)
|
||||
project.upsertLanguage(LanguageSelection(id: "english", name: "English"))
|
||||
project.upsertDialect(levantine)
|
||||
project.upsertDialect(gulf)
|
||||
project.arabicPronunciationSettings = ArabicPronunciationSettings(
|
||||
isEnabled: true,
|
||||
diacritizationPolicy: .pronunciationTargeted,
|
||||
tanweenPolicy: .preserveUserInput,
|
||||
userNotes: "Preserve dialect phrasing",
|
||||
preservedSpellings: ["ya habibi"]
|
||||
)
|
||||
|
||||
XCTAssertEqual(project.languageIDs, ["arabic", "english"])
|
||||
XCTAssertEqual(project.dialectIDs, ["levantine", "gulf"])
|
||||
XCTAssertEqual(project.language(for: arabic.id), arabic)
|
||||
XCTAssertEqual(project.dialects(forLanguageID: arabic.id), [levantine, gulf])
|
||||
XCTAssertTrue(project.arabicPronunciationSettings.isEnabled)
|
||||
XCTAssertEqual(project.arabicPronunciationSettings.diacritizationPolicy, .pronunciationTargeted)
|
||||
XCTAssertEqual(project.arabicPronunciationSettings.tanweenPolicy, .preserveUserInput)
|
||||
|
||||
project.removeDialect(id: gulf.id)
|
||||
|
||||
XCTAssertNil(project.dialect(for: gulf.id))
|
||||
XCTAssertEqual(project.dialects(forLanguageID: arabic.id), [levantine])
|
||||
|
||||
project.removeLanguage(id: arabic.id)
|
||||
|
||||
XCTAssertNil(project.language(for: arabic.id))
|
||||
XCTAssertEqual(project.dialects(forLanguageID: arabic.id), [])
|
||||
XCTAssertEqual(project.languageIDs, ["english"])
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user