CouleurEtiquetteTest.swift
42 lignes · 1684 octets
import XCTest @testable import Card2vcf /// Port du hachage d'étiquette de `Server/src/modeles.rs`, miroir de /// `CouleurEtiquetteTest.kt`. Le FNV-1a y a été écrit explicitement pour être /// reproductible : une même étiquette doit donner la même teinte sur le web, /// sur Android et sur iOS. final class CouleurEtiquetteTest: XCTestCase { func testMemeEtiquetteMemeTeinte() { let a = CouleurEtiquette.pour("câblage") XCTAssertEqual(a, CouleurEtiquette.pour("câblage")) XCTAssertTrue(CouleurEtiquette.palette.contains(a ?? "")) } func testSansEtiquettePasDeTeinte() { XCTAssertNil(CouleurEtiquette.pour(nil)) XCTAssertNil(CouleurEtiquette.pour(" ")) } /// Valeurs figées, à comparer avec les tests Rust et Kotlin homologues. func testTeintesDeReference() { XCTAssertEqual("#8B5CF6", CouleurEtiquette.pour("câblage")) XCTAssertEqual("#3FB985", CouleurEtiquette.pour("étude")) XCTAssertEqual("#0EA5E9", CouleurEtiquette.pour("chantier")) } func testLEspaceAutourNeChangePasLaTeinte() { XCTAssertEqual(CouleurEtiquette.pour("câblage"), CouleurEtiquette.pour(" câblage ")) } func testLaPaletteEstReellementRepartie() { let libelles = [ "câblage", "étude", "chantier", "livraison", "essais", "montage", "devis", "recette", "soudure", "peinture", "controle", "reprise", ] let distinctes = Set(libelles.compactMap { CouleurEtiquette.pour($0) }) XCTAssertGreaterThanOrEqual( distinctes.count, 5, "12 libellés ne donnent que \(distinctes.count) teintes" ) } }
GitRust