#!/usr/bin/env python3
"""Tests unitaires v4.8e — _firstname_conflicts()
8 cas de test couvrant homonymes, meme personne, noms composes,
prenoms absents, prenoms composes.
"""
import sys
import os

# Ajouter le repertoire racine au path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

from server import _firstname_conflicts, _strip_accents

PASSED = 0
FAILED = 0


def _test(name, result, expected):
    global PASSED, FAILED
    status = "✅" if result == expected else "❌"
    if result != expected:
        FAILED += 1
        print(f"  {status} {name}: got {result}, expected {expected}")
    else:
        PASSED += 1
        print(f"  {status} {name}")


print("=== Tests _firstname_conflicts() ===\n")

# Test 1 : Homonyme — prenom different (cas Adrien/Marguerite Chapon)
_test(
    "T1: Adrien Chapon vs 'marguerite chapon' → True",
    _firstname_conflicts("marguerite chapon", "Adrien Chapon"),
    True,
)

# Test 2 : Meme personne — pas de conflit
_test(
    "T2: Adrien Chapon vs 'adrien chapon' → False",
    _firstname_conflicts("adrien chapon", "Adrien Chapon"),
    False,
)

# Test 3 : Meme personne avec accents
_test(
    "T3: Étienne Klein vs 'etienne klein' → False",
    _firstname_conflicts("etienne klein", "Étienne Klein"),
    False,
)

# Test 4 : Nom compose — prenom different (Le Boiteux)
_test(
    "T4: Marie Le Boiteux vs 'gaston le boiteux' → True",
    _firstname_conflicts("gaston le boiteux", "Marie Le Boiteux"),
    True,
)

# Test 5 : Nom compose — prenom different, particule absente du titre
_test(
    "T5: Marie Le Boiteux vs 'gaston boiteux' → True",
    _firstname_conflicts("gaston boiteux", "Marie Le Boiteux"),
    True,
)

# Test 6 : Pas de prenom dans le titre → pas de conflit
_test(
    "T6: Gil Charpenet vs 'charpenet' → False",
    _firstname_conflicts("charpenet", "Gil Charpenet"),
    False,
)

# Test 7 : Prenom compose avec tiret — meme personne
_test(
    "T7: Jean-Pierre Dupont vs 'jean-pierre dupont' → False",
    _firstname_conflicts("jean-pierre dupont", "Jean-Pierre Dupont"),
    False,
)

# Test 8 : Prenom compose avec tiret — personne differente
_test(
    "T8: Jean-Pierre Dupont vs 'marie dupont' → True",
    _firstname_conflicts("marie dupont", "Jean-Pierre Dupont"),
    True,
)

print(f"\n=== Resultats: {PASSED}/{PASSED + FAILED} passes ===")
if FAILED:
    print(f"⚠️  {FAILED} test(s) en echec")
    sys.exit(1)
else:
    print("✅ Tous les tests passent")
    sys.exit(0)
