From feb5daa5bb181308b903775d4566a348c7478d48 Mon Sep 17 00:00:00 2001 From: Miwa <63481257+ensan-hcl@users.noreply.github.com> Date: Sun, 30 Mar 2025 16:57:46 +0900 Subject: [PATCH] Update `convertToTimeExpression` function to handle edge cases and correct time validation * **TimeExpression.swift** - Change the validation for 3-digit numbers to allow last two digits between 00-59. - Change the validation for 4-digit numbers to allow first two digits between 00-24 and last two digits between 00-59. * **TimeExpressionTests.swift** - Update test cases to reflect the new validation rules. - Change test input "1360" to "2440" and update expected results accordingly. - Update assertions for the modified test cases. --- .../Converter/TimeExpression.swift | 4 ++-- .../ConverterTests/TimeExpressionTests.swift | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Sources/KanaKanjiConverterModule/Converter/TimeExpression.swift b/Sources/KanaKanjiConverterModule/Converter/TimeExpression.swift index b962229..b749a87 100644 --- a/Sources/KanaKanjiConverterModule/Converter/TimeExpression.swift +++ b/Sources/KanaKanjiConverterModule/Converter/TimeExpression.swift @@ -10,7 +10,7 @@ extension KanaKanjiConverter { if numberString.count == 3 { let firstDigit = Int(numberString.prefix(1))! let lastTwoDigits = Int(numberString.suffix(2))! - if (0...9).contains(firstDigit) && (0...60).contains(lastTwoDigits) { + if (0...9).contains(firstDigit) && (0...59).contains(lastTwoDigits) { let timeExpression = "\(firstDigit):\(String(format: "%02d", lastTwoDigits))" let candidate = Candidate( text: timeExpression, @@ -22,7 +22,7 @@ extension KanaKanjiConverter { candidates.append(candidate) } } else if numberString.count == 4 { - if (0...12).contains(firstPart) && (0...60).contains(secondPart) { + if (0...24).contains(firstPart) && (0...59).contains(secondPart) { let timeExpression = "\(String(format: "%02d", firstPart)):\(String(format: "%02d", secondPart))" let candidate = Candidate( text: timeExpression, diff --git a/Tests/KanaKanjiConverterModuleTests/ConverterTests/TimeExpressionTests.swift b/Tests/KanaKanjiConverterModuleTests/ConverterTests/TimeExpressionTests.swift index 862a32d..482d48e 100644 --- a/Tests/KanaKanjiConverterModuleTests/ConverterTests/TimeExpressionTests.swift +++ b/Tests/KanaKanjiConverterModuleTests/ConverterTests/TimeExpressionTests.swift @@ -17,7 +17,7 @@ final class TimeExpressionTests: XCTestCase { let input2 = makeDirectInput(direct: "1234") let input3 = makeDirectInput(direct: "999") let input4 = makeDirectInput(direct: "1260") - let input5 = makeDirectInput(direct: "1360") + let input5 = makeDirectInput(direct: "2440") let candidates1 = await converter.convertToTimeExpression(input1) let candidates2 = await converter.convertToTimeExpression(input2) @@ -34,9 +34,9 @@ final class TimeExpressionTests: XCTestCase { XCTAssertEqual(candidates3.count, 1) XCTAssertEqual(candidates3.first?.text, "9:99") - XCTAssertEqual(candidates4.count, 1) - XCTAssertEqual(candidates4.first?.text, "12:60") + XCTAssertEqual(candidates4.count, 0) - XCTAssertEqual(candidates5.count, 0) + XCTAssertEqual(candidates5.count, 1) + XCTAssertEqual(candidates5.first?.text, "24:40") } }