OcrPostProcessingTest.swift 77 lignes · 2526 octets
import XCTest
@testable import Card2vcf

final class OcrPostProcessingTest: XCTestCase {
    func testExtraitEmailEtTelephone() {
        let text = """
        Jean Dupont
        Directeur
        06 12 34 56 78
        jean.dupont@acme.fr
        https://acme.fr
        """
        let r = OcrPostProcessor.process(text)
        XCTAssertTrue(r.emails.contains("jean.dupont@acme.fr"))
        XCTAssertTrue(r.phones.contains { $0.contains("0612345678") })
        XCTAssertTrue(r.urls.contains("https://acme.fr"))
    }

    func testMultiEmails() {
        let r = OcrPostProcessor.process("a@b.fr et c@d.fr")
        XCTAssertEqual(2, r.emails.count)
    }

    func testLignesNettoyees() {
        let r = OcrPostProcessor.process("  ligne1  \n\n  ligne2  ")
        XCTAssertEqual(["ligne1", "ligne2"], r.lines)
    }

    func testNeFusionnePasTelephoneEtCodePostalSurLignesVoisines() {
        let text = """
        Jean Dupont
        Tél. 04 75 35 12 34
        07200 Aubenas
        """
        let r = OcrPostProcessor.process(text)
        XCTAssertEqual(["0475351234"], r.phones)
    }

    func testNeFusionnePasNumeroDeRueEtTelephone() {
        let text = """
        245
        04 75 35 12 34
        """
        let r = OcrPostProcessor.process(text)
        XCTAssertEqual(["0475351234"], r.phones)
    }

    func testIgnoreCodePostalSeul() {
        let r = OcrPostProcessor.process("07200 Aubenas")
        XCTAssertEqual([], r.phones)
    }

    func testRejetteLongueursImplausiblesSansIndicatif() {
        // 9 chiffres, 11 chiffres, ou 10 chiffres sans 0 initial : pas des numéros FR
        let r = OcrPostProcessor.process("123 45 67 89\n0 12 34 56 78 90\n61 23 45 67 89")
        XCTAssertEqual([], r.phones)
    }

    func testExtraitCarteDimoCommeSurAppareil() {
        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
        www.dimosoftware.fr
        """
        let r = OcrPostProcessor.process(text)
        XCTAssertEqual(["jpgenoux@dimosoftware.com"], r.emails)
        XCTAssertTrue(r.phones.contains { $0 == "+33674640544" || $0.hasSuffix("674640544") })
        XCTAssertTrue(r.phones.contains { $0.contains("472860192") || $0.hasSuffix("472860192") })
        XCTAssertTrue(r.urls.contains { $0.contains("dimosoftware.fr") })
    }
}