ContactHeuristicParserTest.swift
66 lignes · 2559 octets
import XCTest @testable import Card2vcf final class ContactHeuristicParserTest: XCTestCase { func testParseCarteDimoBruitee() { let text = """ dimo SOFTWARE &— Jean Pau! GENOUX Directeur Général/CEO jpgenoux@dimosoftware.com Mobile : +33 (0)6 74 64 05 44 / Tél. : +33 (0)4 72 86 O1 92 Siège Social 561, alée des Noisetiers - 69 760 Limonest - France Lyon - Paris - Nantes - Biarritz - Madrid — Toronto www.dimosoftware.fr """ let ocr = OcrPostProcessor.process(text) let card = ContactHeuristicParser.parse(ocr) XCTAssertEqual("Jean Paul Genoux", card.fullName) XCTAssertEqual("Jean Paul", card.firstName) XCTAssertEqual("Genoux", card.lastName) XCTAssertTrue(card.jobTitle!.range(of: "Directeur", options: .caseInsensitive) != nil) XCTAssertTrue( card.company!.range(of: "Software", options: .caseInsensitive) != nil || card.company!.range(of: "dimo", options: .caseInsensitive) != nil ) XCTAssertTrue(card.emails.contains("jpgenoux@dimosoftware.com")) XCTAssertTrue(card.phones.contains { $0.hasSuffix("674640544") }) XCTAssertTrue(card.phones.contains { $0.contains("472860192") }) XCTAssertTrue(card.website!.contains("dimosoftware.fr")) XCTAssertNotNil(card.address) XCTAssertTrue(card.address!.contains("Noisetiers") || card.address!.contains("Limonest")) } func testSplitNomAvecNomFamilleMajuscules() { let (first, last, full) = ContactHeuristicParser.splitPersonName("Marie CURIE") XCTAssertEqual("Marie", first) XCTAssertEqual("Curie", last) XCTAssertEqual("Marie Curie", full) } func testSocieteDepuisEmail() { XCTAssertEqual("Dimo Software", ContactHeuristicParser.companyFromEmailDomain("jp@dimosoftware.com")) } func testMergeSansLlmRemplitQuandMemeLesChamps() { let ocr = OcrPostProcessor.process( """ Acme SAS Alice Martin CEO alice@acme.fr 01 23 45 67 89 10 rue de Paris 75001 Paris """ ) let merged = ContactDraftMerge.merge(llm: nil, ocr: ocr) XCTAssertEqual("Alice Martin", merged.fullName) XCTAssertTrue(merged.emails.contains("alice@acme.fr")) XCTAssertTrue(merged.jobTitle!.range(of: "CEO", options: .caseInsensitive) != nil) XCTAssertNotNil(merged.company) } }
GitRust