55 lines
1.9 KiB
Swift
55 lines
1.9 KiB
Swift
import Foundation
|
|
import XCTest
|
|
@testable import TranslatorPlugin
|
|
|
|
final class AutomaticLanguageSelectorTests: XCTestCase {
|
|
func testEnglishSourceTargetsFirstPreferredChinese() {
|
|
let selector = AutomaticLanguageSelector(
|
|
detector: StubLanguageDetector(language: .english),
|
|
preferredPair: TranslatorLanguagePair(first: .simplifiedChinese, second: .english)
|
|
)
|
|
|
|
let selection = selector.select(text: "Hello")
|
|
|
|
XCTAssertEqual(selection.source, .english)
|
|
XCTAssertEqual(selection.target, .simplifiedChinese)
|
|
XCTAssertFalse(selection.sourceIsAutomatic)
|
|
XCTAssertEqual(selection.sourceDisplayName, "英语")
|
|
}
|
|
|
|
func testFirstPreferredSourceTargetsSecondPreferredEnglish() {
|
|
let selector = AutomaticLanguageSelector(
|
|
detector: StubLanguageDetector(language: .simplifiedChinese),
|
|
preferredPair: TranslatorLanguagePair(first: .simplifiedChinese, second: .english)
|
|
)
|
|
|
|
let selection = selector.select(text: "你好")
|
|
|
|
XCTAssertEqual(selection.source, .simplifiedChinese)
|
|
XCTAssertEqual(selection.target, .english)
|
|
XCTAssertFalse(selection.sourceIsAutomatic)
|
|
}
|
|
|
|
func testUnknownSourceUsesAutomaticSourceAndFirstPreferredTarget() {
|
|
let selector = AutomaticLanguageSelector(
|
|
detector: StubLanguageDetector(language: nil),
|
|
preferredPair: TranslatorLanguagePair(first: .simplifiedChinese, second: .english)
|
|
)
|
|
|
|
let selection = selector.select(text: "123")
|
|
|
|
XCTAssertNil(selection.source)
|
|
XCTAssertEqual(selection.target, .simplifiedChinese)
|
|
XCTAssertTrue(selection.sourceIsAutomatic)
|
|
XCTAssertEqual(selection.sourceDisplayName, "自动检测")
|
|
}
|
|
}
|
|
|
|
private struct StubLanguageDetector: LanguageDetecting {
|
|
let language: TranslatorLanguage?
|
|
|
|
func detect(_ text: String) -> TranslatorLanguage? {
|
|
language
|
|
}
|
|
}
|