VCardSerializerTest.swift 41 lignes · 1381 octets
import XCTest
@testable import Card2vcf

final class VCardSerializerTest: XCTestCase {
    func testVcardMinimal() {
        let vcf = VCardSerializer.toVCard3(ContactCard(fullName: "Jean Dupont"))
        XCTAssertTrue(vcf.contains("BEGIN:VCARD"))
        XCTAssertTrue(vcf.contains("FN:Jean Dupont"))
        XCTAssertTrue(vcf.contains("END:VCARD"))
    }

    func testAccentsEtEchappement() {
        let vcf = VCardSerializer.toVCard3(
            ContactCard(
                fullName: "Élodie Martin",
                company: "Société; Générale",
                note: "Ligne1\nLigne2"
            )
        )
        XCTAssertTrue(vcf.contains("FN:Élodie Martin"))
        XCTAssertTrue(vcf.contains("NOTE:Ligne1\\nLigne2"))
        XCTAssertTrue(vcf.contains("ORG:Société\\; Générale"))
    }

    func testMultiTelEtEmail() {
        let vcf = VCardSerializer.toVCard3(
            ContactCard(
                fullName: "Test",
                phones: ["0612345678", "0145678901"],
                emails: ["a@b.fr", "c@d.fr"]
            )
        )
        let lines = vcf.components(separatedBy: "\n")
        XCTAssertEqual(2, lines.filter { $0.hasPrefix("TEL;") }.count)
        XCTAssertEqual(2, lines.filter { $0.hasPrefix("EMAIL;") }.count)
    }

    func testEscapeUnitaire() {
        XCTAssertEqual("a\\;b", VCardSerializer.escape("a;b"))
    }
}