diff --git a/Tests/KanaKanjiConverterModuleTests/ConverterTests/TimeExpressionTests.swift b/Tests/KanaKanjiConverterModuleTests/ConverterTests/TimeExpressionTests.swift index 64b8278..18c9092 100644 --- a/Tests/KanaKanjiConverterModuleTests/ConverterTests/TimeExpressionTests.swift +++ b/Tests/KanaKanjiConverterModuleTests/ConverterTests/TimeExpressionTests.swift @@ -2,71 +2,28 @@ import XCTest @testable import KanaKanjiConverterModule final class TimeExpressionTests: XCTestCase { + func makeDirectInput(direct input: String) -> ComposingText { + ComposingText( + convertTargetCursorPosition: input.count, + input: input.map {.init(character: $0, inputStyle: .direct)}, + convertTarget: input + ) + } + func testConvertToTimeExpression() async throws { let converter = await KanaKanjiConverter() // Test 3-digit numbers - XCTAssertEqual(converter.convertToTimeExpression(123).first?.text, "1:23") - XCTAssertEqual(converter.convertToTimeExpression(945).first?.text, "9:45") - XCTAssertEqual(converter.convertToTimeExpression(760).first?.text, "7:60") - XCTAssertTrue(converter.convertToTimeExpression(761).isEmpty) // Invalid minute + XCTAssertEqual(converter.convertToTimeExpression(makeDirectInput(direct: "123")).first?.text, "1:23") + XCTAssertEqual(converter.convertToTimeExpression(makeDirectInput(direct: "945")).first?.text, "9:45") + XCTAssertEqual(converter.convertToTimeExpression(makeDirectInput(direct: "760")).first?.text, "7:60") + XCTAssertTrue(converter.convertToTimeExpression(makeDirectInput(direct: "761")).isEmpty) // Invalid minute // Test 4-digit numbers - XCTAssertEqual(converter.convertToTimeExpression(1234).first?.text, "12:34") - XCTAssertEqual(converter.convertToTimeExpression(9450).first?.text, "09:45") - XCTAssertEqual(converter.convertToTimeExpression(7600).first?.text, "07:60") - XCTAssertTrue(converter.convertToTimeExpression(1360).isEmpty) // Invalid hour - XCTAssertTrue(converter.convertToTimeExpression(1261).isEmpty) // Invalid minute - } - - func testToTimeExpressionCandidates() async throws { - let converter = await KanaKanjiConverter() - var c = ComposingText() - - // Test 3-digit numbers - c.insertAtCursorPosition("123", inputStyle: .direct) - var results = await converter.requestCandidates(c, options: ConvertRequestOptions()) - XCTAssertTrue(results.mainResults.contains(where: {$0.text == "1:23"})) - - c = ComposingText() - c.insertAtCursorPosition("945", inputStyle: .direct) - results = await converter.requestCandidates(c, options: ConvertRequestOptions()) - XCTAssertTrue(results.mainResults.contains(where: {$0.text == "9:45"})) - - c = ComposingText() - c.insertAtCursorPosition("760", inputStyle: .direct) - results = await converter.requestCandidates(c, options: ConvertRequestOptions()) - XCTAssertTrue(results.mainResults.contains(where: {$0.text == "7:60"})) - - c = ComposingText() - c.insertAtCursorPosition("761", inputStyle: .direct) - results = await converter.requestCandidates(c, options: ConvertRequestOptions()) - XCTAssertFalse(results.mainResults.contains(where: {$0.text == "7:61"})) // Invalid minute - - // Test 4-digit numbers - c = ComposingText() - c.insertAtCursorPosition("1234", inputStyle: .direct) - results = await converter.requestCandidates(c, options: ConvertRequestOptions()) - XCTAssertTrue(results.mainResults.contains(where: {$0.text == "12:34"})) - - c = ComposingText() - c.insertAtCursorPosition("9450", inputStyle: .direct) - results = await converter.requestCandidates(c, options: ConvertRequestOptions()) - XCTAssertTrue(results.mainResults.contains(where: {$0.text == "09:45"})) - - c = ComposingText() - c.insertAtCursorPosition("7600", inputStyle: .direct) - results = await converter.requestCandidates(c, options: ConvertRequestOptions()) - XCTAssertTrue(results.mainResults.contains(where: {$0.text == "07:60"})) - - c = ComposingText() - c.insertAtCursorPosition("1360", inputStyle: .direct) - results = await converter.requestCandidates(c, options: ConvertRequestOptions()) - XCTAssertFalse(results.mainResults.contains(where: {$0.text == "13:60"})) // Invalid hour - - c = ComposingText() - c.insertAtCursorPosition("1261", inputStyle: .direct) - results = await converter.requestCandidates(c, options: ConvertRequestOptions()) - XCTAssertFalse(results.mainResults.contains(where: {$0.text == "12:61"})) // Invalid minute + XCTAssertEqual(converter.convertToTimeExpression(makeDirectInput(direct: "1234")).first?.text, "12:34") + XCTAssertEqual(converter.convertToTimeExpression(makeDirectInput(direct: "9450")).first?.text, "09:45") + XCTAssertEqual(converter.convertToTimeExpression(makeDirectInput(direct: "7600")).first?.text, "07:60") + XCTAssertTrue(converter.convertToTimeExpression(makeDirectInput(direct: "1360")).isEmpty) // Invalid hour + XCTAssertTrue(converter.convertToTimeExpression(makeDirectInput(direct: "1261")).isEmpty) // Invalid minute } }