# -*- coding: utf-8 -*-
"""Pytest to validate all title lists using fixlabel()."""

from ArWikiCats.fix.fixtitle import fixlabel


def load_test_fixlab_data(data: dict) -> None:
    expected_list = []
    diff_list = []
    same = 0
    for title, expected in data.items():
        result = fixlabel(title)
        # result = result.replace("جرائم قتل", "جرائم قتل في")

        if result != expected:
            diff_list.append({"en": title, "ar": result})
            expected_list.append({"en": title, "ar": expected})
        else:
            assert result == expected
            same += 1

    print(f"<<green>> diff_list: {len(diff_list)}, {same=}.")

    assert diff_list == expected_list


def test_fixlab_group_1() -> None:
    data = {
        "1995 في الإمارات": "الإمارات في 1995",
        "2020 في جنوب إفريقيا": "جنوب إفريقيا في 2020",
        "2020 في مولدوفا": "مولدوفا في 2020",
        "2020 ق م في جنوب إفريقيا": "جنوب إفريقيا في 2020 ق م",
        "الألفية 1 في اليمن": "اليمن في الألفية 1",
        "القرن 20 في مصر": "مصر في القرن 20",
        "القرن 20 ق م في مصر": "مصر في القرن 20 ق م",
        "القرن 21 في الأردن": "الأردن في القرن 21",
        "القرن 21 في جنوب إفريقيا": "جنوب إفريقيا في القرن 21",
        "عقد 1980 ق م في العراق": "العراق في عقد 1980 ق م",
        "عقد 1990 في السعودية": "السعودية في عقد 1990",
        "عقد 2010 في جنوب إفريقيا": "جنوب إفريقيا في عقد 2010",
        "عقد 2010 ق م في جنوب إفريقيا": "جنوب إفريقيا في عقد 2010 ق م",
    }
    load_test_fixlab_data(data)


def test_fixlab_group_2() -> None:
    data = {
        "قضاة حسب الجنسية عقد 2010": "قضاة في عقد 2010 حسب الجنسية",
        "فنانون ذكور حسب الجنسية 2020": "فنانون ذكور في 2020 حسب الجنسية",
        "قضاة حسب الجنسية القرن 20": "قضاة في القرن 20 حسب الجنسية",
        "فنانون ذكور حسب الجنسية القرن 20": "فنانون ذكور في القرن 20 حسب الجنسية",
        "ملكيون حسب البلد القرن 20": "ملكيون في القرن 20 حسب البلد",
    }
    load_test_fixlab_data(data)


def test_fixlab_group_3() -> None:
    data = {
        "أشخاص حسب الجنسية والمجموعة العرقية القرن 20": "أشخاص في القرن 20 حسب الجنسية والمجموعة العرقية",
        "أشخاص حسب الجنسية والمهنة القرن 20": "أشخاص في القرن 20 حسب الجنسية والمهنة",
        "أشخاص حسب الجنسية والمهنة القرن 21": "أشخاص في القرن 21 حسب الجنسية والمهنة",
        "أشخاص حسب الجنسية والمهنة القرن 1 ق م": "أشخاص في القرن 1 ق م حسب الجنسية والمهنة",
        "أشخاص حسب الجنسية والمهنة القرن 2 ق م": "أشخاص في القرن 2 ق م حسب الجنسية والمهنة",
        "أشخاص حسب الجنسية والمهنة القرن 3 ق م": "أشخاص في القرن 3 ق م حسب الجنسية والمهنة",
        "أشخاص حسب الجنسية والمهنة القرن 5 ق م": "أشخاص في القرن 5 ق م حسب الجنسية والمهنة",
        "أشخاص حسب الجنسية والمهنة القرن 1": "أشخاص في القرن 1 حسب الجنسية والمهنة",
        "أشخاص حسب الجنسية والمهنة القرن 2": "أشخاص في القرن 2 حسب الجنسية والمهنة",
        "أشخاص حسب الجنسية والمهنة القرن 3": "أشخاص في القرن 3 حسب الجنسية والمهنة",
        "أشخاص حسب الجنسية والمهنة القرن 5": "أشخاص في القرن 5 حسب الجنسية والمهنة",
    }
    load_test_fixlab_data(data)


def test_fixlab_group_4() -> None:
    data = {
        "أشخاص حسب الدين والجنسية القرن 19": "أشخاص في القرن 19 حسب الدين والجنسية",
        "أشخاص حسب الدين والجنسية القرن 20": "أشخاص في القرن 20 حسب الدين والجنسية",
        "أشخاص حسب المهنة والجنسية القرن 10": "أشخاص في القرن 10 حسب المهنة والجنسية",
        "أشخاص حسب المهنة والجنسية القرن 7": "أشخاص في القرن 7 حسب المهنة والجنسية",
        "أشخاص حسب المهنة والجنسية القرن 8": "أشخاص في القرن 8 حسب المهنة والجنسية",
        "أشخاص حسب المهنة والجنسية القرن 9": "أشخاص في القرن 9 حسب المهنة والجنسية",
        "أشخاص حسب المجموعة العرقية القرن 12": "أشخاص في القرن 12 حسب المجموعة العرقية",
        "أشخاص حسب المجموعة العرقية القرن 21": "أشخاص في القرن 21 حسب المجموعة العرقية",
        "رجال حسب المهنة والجنسية القرن 18": "رجال في القرن 18 حسب المهنة والجنسية",
    }
    load_test_fixlab_data(data)


def test_fixlab_group_5() -> None:
    data = {
        "قوائم أفلام حسب البلد أو اللغة 1930": "قوائم أفلام في 1930 حسب البلد أو اللغة",
        "قوائم أفلام حسب البلد أو اللغة 1931": "قوائم أفلام في 1931 حسب البلد أو اللغة",
        "قوائم أفلام حسب البلد أو اللغة 1932": "قوائم أفلام في 1932 حسب البلد أو اللغة",
        "قوائم أفلام حسب البلد أو اللغة 1933": "قوائم أفلام في 1933 حسب البلد أو اللغة",
        "قوائم أفلام حسب البلد أو اللغة 1935": "قوائم أفلام في 1935 حسب البلد أو اللغة",
        "قوائم أفلام حسب البلد أو اللغة 1936": "قوائم أفلام في 1936 حسب البلد أو اللغة",
        "قوائم أفلام حسب البلد أو اللغة 1950": "قوائم أفلام في 1950 حسب البلد أو اللغة",
    }
    load_test_fixlab_data(data)
