mirror of
https://github.com/mii443/AzooKeyKanaKanjiConverter.git
synced 2025-08-22 15:05:26 +00:00
Fixes #75 Enhance the email address conversion feature to filter suggestions based on partial domain inputs. * Update `toEmailAddressCandidates` function in `Sources/KanaKanjiConverterModule/Converter/EmailAddress.swift` to filter suggestions based on the characters before '@'. * Add logic to check if the input ends with '@' and filter the suggestions based on the characters before '@'. * Generate suggestions for email domains that match the partial domain input. * Add tests in `Tests/KanaKanjiConverterModuleTests/ConverterTests/EmailAddressConversionTests.swift` to verify the new filtering functionality for partial domain inputs like '@g' and '@y'. --- For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/ensan-hcl/AzooKeyKanaKanjiConverter/issues/75?shareId=XXXX-XXXX-XXXX-XXXX).
71 lines
3.4 KiB
Swift
71 lines
3.4 KiB
Swift
import XCTest
|
|
@testable import KanaKanjiConverterModule
|
|
|
|
final class EmailAddressConversionTests: XCTestCase {
|
|
func makeDirectInput(direct input: String) -> ComposingText {
|
|
ComposingText(
|
|
convertTargetCursorPosition: input.count,
|
|
input: input.map {.init(character: $0, inputStyle: .direct)},
|
|
convertTarget: input
|
|
)
|
|
}
|
|
|
|
func testtoEmailAddressCandidates() async throws {
|
|
do {
|
|
let converter = await KanaKanjiConverter()
|
|
let input = makeDirectInput(direct: "azooKey@")
|
|
let result = await converter.toEmailAddressCandidates(input)
|
|
XCTAssertFalse(result.isEmpty)
|
|
XCTAssertTrue(result.contains(where: {$0.text == "azooKey@gmail.com"}))
|
|
XCTAssertTrue(result.contains(where: {$0.text == "azooKey@icloud.com"}))
|
|
XCTAssertTrue(result.contains(where: {$0.text == "azooKey@yahoo.co.jp"}))
|
|
XCTAssertTrue(result.contains(where: {$0.text == "azooKey@i.softbank.jp"}))
|
|
}
|
|
|
|
do {
|
|
let converter = await KanaKanjiConverter()
|
|
let input = makeDirectInput(direct: "my.dev_az@")
|
|
let result = await converter.toEmailAddressCandidates(input)
|
|
XCTAssertFalse(result.isEmpty)
|
|
XCTAssertTrue(result.contains(where: {$0.text == "my.dev_az@gmail.com"}))
|
|
XCTAssertTrue(result.contains(where: {$0.text == "my.dev_az@icloud.com"}))
|
|
XCTAssertTrue(result.contains(where: {$0.text == "my.dev_az@yahoo.co.jp"}))
|
|
XCTAssertTrue(result.contains(where: {$0.text == "my.dev_az@i.softbank.jp"}))
|
|
}
|
|
|
|
do {
|
|
let converter = await KanaKanjiConverter()
|
|
let input = makeDirectInput(direct: "@")
|
|
let result = await converter.toEmailAddressCandidates(input)
|
|
XCTAssertFalse(result.isEmpty)
|
|
XCTAssertTrue(result.contains(where: {$0.text == "@gmail.com"}))
|
|
XCTAssertTrue(result.contains(where: {$0.text == "@icloud.com"}))
|
|
XCTAssertTrue(result.contains(where: {$0.text == "@yahoo.co.jp"}))
|
|
XCTAssertTrue(result.contains(where: {$0.text == "@i.softbank.jp"}))
|
|
}
|
|
|
|
// New tests for partial domain inputs
|
|
do {
|
|
let converter = await KanaKanjiConverter()
|
|
let input = makeDirectInput(direct: "azooKey@g")
|
|
let result = await converter.toEmailAddressCandidates(input)
|
|
XCTAssertFalse(result.isEmpty)
|
|
XCTAssertTrue(result.contains(where: {$0.text == "azooKey@gmail.com"}))
|
|
XCTAssertTrue(result.contains(where: {$0.text == "azooKey@googlemail.com"}))
|
|
XCTAssertFalse(result.contains(where: {$0.text == "azooKey@yahoo.co.jp"}))
|
|
}
|
|
|
|
do {
|
|
let converter = await KanaKanjiConverter()
|
|
let input = makeDirectInput(direct: "azooKey@y")
|
|
let result = await converter.toEmailAddressCandidates(input)
|
|
XCTAssertFalse(result.isEmpty)
|
|
XCTAssertTrue(result.contains(where: {$0.text == "azooKey@yahoo.co.jp"}))
|
|
XCTAssertTrue(result.contains(where: {$0.text == "azooKey@yahoo.ne.jp"}))
|
|
XCTAssertTrue(result.contains(where: {$0.text == "azooKey@ybb.ne.jp"}))
|
|
XCTAssertTrue(result.contains(where: {$0.text == "azooKey@ymobile.ne.jp"}))
|
|
XCTAssertFalse(result.contains(where: {$0.text == "azooKey@gmail.com"}))
|
|
}
|
|
}
|
|
}
|