#
import pytest
from load_one_data import dump_diff, one_dump_test

from ArWikiCats import resolve_label_ar

data0 = {
    "russian empire-united states relations": "العلاقات بين الإمبراطورية الروسية والولايات المتحدة",
    "south korean presidential election 2017": "الانتخابات الرئاسية الكورية الجنوبية 2017",
    "republic of ireland women's national football team": "منتخب جمهورية أيرلندا لكرة القدم للسيدات",
}

data_1 = {
    "ivorian people": "إيفواريون",
    "japanese lgbtq people": "أعلام إل جي بي تي كيو يابانيون",
    "chinese lgbtq people": "أعلام إل جي بي تي كيو صينيون",
    "arab lgbtq people": "أعلام إل جي بي تي كيو عرب",
    "rwandan political people": "ساسة روانديون",
    "maldivian people": "مالديفيون",
    "malian people": "ماليون",
    "maltese lgbtq people": "أعلام إل جي بي تي كيو مالطيون",
    "namibia–russia relations": "العلاقات الروسية الناميبية",
    "morocco–netherlands relations": "العلاقات المغربية الهولندية",
    "morocco–pakistan relations": "العلاقات الباكستانية المغربية",
    "morocco–qatar relations": "العلاقات القطرية المغربية",
    "morocco–russia relations": "العلاقات الروسية المغربية",
    "morocco–united kingdom relations": "العلاقات البريطانية المغربية",
    "mongolia–russia relations": "العلاقات الروسية المنغولية",
    "mauritania–morocco relations": "العلاقات المغربية الموريتانية",
    "mauritania–russia relations": "العلاقات الروسية الموريتانية",
    "south korea–united states relations": "العلاقات الأمريكية الكورية الجنوبية",
    "somalia–turkey relations": "العلاقات التركية الصومالية",
    "russia–sudan relations": "العلاقات الروسية السودانية",
    "russia–tunisia relations": "العلاقات التونسية الروسية",
    "russia–united arab emirates relations": "العلاقات الإماراتية الروسية",
    "russia–uzbekistan relations": "العلاقات الأوزبكستانية الروسية",
    "philippine–american war": "الحرب الأمريكية الفلبينية",
    "philippines–saudi arabia relations": "العلاقات السعودية الفلبينية",
    "palestine national basketball team": "منتخب فلسطين لكرة السلة",
    "russia men's national ice hockey team": "منتخب روسيا لهوكي الجليد للرجال",
    "palestine–united arab emirates relations": "العلاقات الإماراتية الفلسطينية",
    "palestine–united kingdom relations": "العلاقات البريطانية الفلسطينية",
    "palestine–uruguay relations": "العلاقات الأوروغويانية الفلسطينية",
    "african championships in athletics": "بطولات إفريقية في ألعاب القوى",
    "automotive industry in italy": "صناعة سيارات في إيطاليا",
    "bahrain in the asian para games": "البحرين في الألعاب البارالمبية الآسيوية",
    "field hockey in the 2004 summer olympics": "هوكي الميدان في الألعاب الأولمبية الصيفية 2004",
    "gymnastics in the 2004 summer olympics": "الجمباز في الألعاب الأولمبية الصيفية 2004",
    "history of the petroleum industry in canada": "تاريخ صناعة بترولية في كندا",
    "internet in bahrain": "إنترنت في البحرين",
    "islam in bermuda": "الإسلام في برمودا",
    "kingdom of hungary in the middle ages": "مملكة المجر في العصور الوسطى",
    "kurds in syria": "الأكراد في سوريا",
    "kurds in turkey": "الأكراد في تركيا",
    "protestantism in morocco": "البروتستانتية في المغرب",
    "protestantism in yemen": "البروتستانتية في اليمن",
    "same-sex marriage in the netherlands": "زواج مثلي في هولندا",
    "shia islam in afghanistan": "الشيعة في أفغانستان",
    "shooting in the 2004 summer olympics": "الرماية في الألعاب الأولمبية الصيفية 2004",
    "silver mining in the united states": "التنقيب عن الفضة في الولايات المتحدة",
    "swimming in the 2004 summer olympics": "السباحة في الألعاب الأولمبية الصيفية 2004",
    "synchronized swimming in the 2004 summer olympics": "السباحة المتزامنة في الألعاب الأولمبية الصيفية 2004",
    "taekwondo in the 2004 summer olympics": "التايكوندو في الألعاب الأولمبية الصيفية 2004",
    "time in azerbaijan": "الزمن في أذربيجان",
    "time in cyprus": "الزمن في قبرص",
    "triathlon in the 2004 summer olympics": "السباق الثلاثي في الألعاب الأولمبية الصيفية 2004",
    "women in niue": "المرأة في نييوي",
    "women in pala": "المرأة في بالاو",
    "women in the cook islands": "المرأة في جزر كوك",
    "women in the federated states of micronesia": "المرأة في ولايات ميكرونيسيا المتحدة",
    "women in the federated states-of micronesia": "المرأة في ولايات ميكرونيسيا المتحدة",
    "wrestling in the 2004 summer olympics": "المصارعة في الألعاب الأولمبية الصيفية 2004",
    "wrestling in the 2016 summer olympics": "المصارعة في الألعاب الأولمبية الصيفية 2016",
    "saudi arabia–ukraine relations": "العلاقات الأوكرانية السعودية",
    "china–sudan relations": "العلاقات السودانية الصينية",
    "china-sudan relations": "العلاقات السودانية الصينية",
    "saudi arabia-ukraine relations": "العلاقات الأوكرانية السعودية",
    "mauritania-morocco relations": "العلاقات المغربية الموريتانية",
    "mauritania-russia relations": "العلاقات الروسية الموريتانية",
    "mongolia-russia relations": "العلاقات الروسية المنغولية",
    "morocco-netherlands relations": "العلاقات المغربية الهولندية",
    "morocco-pakistan relations": "العلاقات الباكستانية المغربية",
    "morocco-qatar relations": "العلاقات القطرية المغربية",
    "morocco-russia relations": "العلاقات الروسية المغربية",
    "morocco-united kingdom relations": "العلاقات البريطانية المغربية",
    "namibia-russia relations": "العلاقات الروسية الناميبية",
    "palestine-united arab emirates relations": "العلاقات الإماراتية الفلسطينية",
    "palestine-united kingdom relations": "العلاقات البريطانية الفلسطينية",
    "palestine-uruguay relations": "العلاقات الأوروغويانية الفلسطينية",
    "philippines-saudi arabia relations": "العلاقات السعودية الفلبينية",
    "russia-sudan relations": "العلاقات الروسية السودانية",
    "russia-tunisia relations": "العلاقات التونسية الروسية",
    "russia-united arab emirates relations": "العلاقات الإماراتية الروسية",
    "russia-uzbekistan relations": "العلاقات الأوزبكستانية الروسية",
    "somalia-turkey relations": "العلاقات التركية الصومالية",
    "south korea-united states relations": "العلاقات الأمريكية الكورية الجنوبية",
    "lists of populated places in the united states": "قوائم أماكن مأهولة في الولايات المتحدة",
    "populated places in the british virgin islands": "أماكن مأهولة في جزر العذراء البريطانية",
    "soccer in australia": "كرة القدم في أستراليا",
    "soccer in the united states": "كرة القدم في الولايات المتحدة",
    "football in spain": "كرة القدم في إسبانيا",
    "water polo in the world aquatics championships": "كرة الماء في بطولة العالم للرياضات المائية",
    "populated places in tokelau": "أماكن مأهولة في توكيلاو",
    "townships in michigan": "ضواحي مدن في ميشيغان",
    "populated places in christmas island": "أماكن مأهولة في جزيرة عيد الميلاد",
    "cities and towns in india": "مدن وبلدات في الهند",
    "neighbourhoods in rio de janeiro (city)": "أحياء في ريو دي جانيرو",
    "populated places in the cocos (keeling) islands": "أماكن مأهولة في جزر كوكوس",
    "populated places in puebla": "أماكن مأهولة في ولاية بويبلا",
    "populated places in the cook islands": "أماكن مأهولة في جزر كوك",
    "populated places in norfolk island": "أماكن مأهولة في جزيرة نورفولك",
    "cities and towns in moscow oblast": "مدن وبلدات في محافظة موسكو",
    "wheelchair basketball world championship": "بطولة العالم لكرة السلة على الكراسي المتحركة",
    "water polo at the world aquatics championships": "كرة الماء في بطولة العالم للرياضات المائية",
    "portugal national rugby league team": "منتخب البرتغال لدوري الرجبي",
    "new zealand women's national ice hockey team": "منتخب نيوزيلندا لهوكي الجليد للسيدات",
    "new zealand women's national rugby league team": "منتخب نيوزيلندا لدوري الرجبي للسيدات",
    "kazakhstan women's national ice hockey team": "منتخب كازاخستان لهوكي الجليد للسيدات",
    "georgia national rugby union team": "منتخب جورجيا لاتحاد الرجبي",
    "england women's national rugby league team": "منتخب إنجلترا لدوري الرجبي للسيدات",
    "chile national rugby union team": "منتخب تشيلي لاتحاد الرجبي",
    "australia national rugby union team": "منتخب أستراليا لاتحاد الرجبي",
    "algeria national rugby union team": "منتخب الجزائر لاتحاد الرجبي",
    "united states national rugby union team": "منتخب الولايات المتحدة لاتحاد الرجبي",
    "greece national rugby league team": "منتخب اليونان لدوري الرجبي",
    "archery at the 2004 summer olympics": "النبالة في الألعاب الأولمبية الصيفية 2004",
    "wrestling at the 2004 summer olympics": "المصارعة في الألعاب الأولمبية الصيفية 2004",
    "triathlon at the 2004 summer olympics": "السباق الثلاثي في الألعاب الأولمبية الصيفية 2004",
    "synchronized swimming at the 2004 summer olympics": "السباحة المتزامنة في الألعاب الأولمبية الصيفية 2004",
    "united states national futsal team": "منتخب الولايات المتحدة لكرة الصالات",
    "thailand women's national basketball team": "منتخب تايلاند لكرة السلة للسيدات",
    "sweden national bandy team": "منتخب السويد للباندي",
    "slovenia women's national football team": "منتخب سلوفينيا لكرة القدم للسيدات",
    "papua new guinea women's national football team": "منتخب بابوا غينيا الجديدة لكرة القدم للسيدات",
    "netherlands men's national basketball team": "منتخب هولندا لكرة السلة للرجال",
    "taekwondo at the 2004 summer olympics": "التايكوندو في الألعاب الأولمبية الصيفية 2004",
    "namibia women's national football team": "منتخب ناميبيا لكرة القدم للسيدات",
    "myanmar women's national football team": "منتخب ميانمار لكرة القدم للسيدات",
    "montenegro women's national football team": "منتخب الجبل الأسود لكرة القدم للسيدات",
    "moldova national rugby league team": "منتخب مولدوفا لدوري الرجبي",
    "moldova women's national football team": "منتخب مولدوفا لكرة القدم للسيدات",
    "philippine football federation": "الاتحاد الفلبيني لكرة القدم",
    "iraq national football team results": "نتائج منتخب العراق لكرة القدم",
    "austria women's national football team": "منتخب النمسا لكرة القدم للسيدات",
    "algeria women's national football team": "منتخب الجزائر لكرة القدم للسيدات",
    "thailand women's national football team": "منتخب تايلاند لكرة القدم للسيدات",
    "switzerland women's national football team": "منتخب سويسرا لكرة القدم للسيدات",
    "portugal women's national football team": "منتخب البرتغال لكرة القدم للسيدات",
    "vietnam national basketball team": "منتخب فيتنام لكرة السلة",
    "uruguay national football team": "منتخب أوروغواي لكرة القدم",
    "bolivia national soccer team": "منتخب بوليفيا لكرة القدم",
}

data_2 = {
    "Austrian Giro d'Italia stage winners": "فائزون في مراحل طواف إيطاليا نمساويون",
    "Azerbaijani men marathon runners": "عداؤو ماراثون أذربيجانيون",
    "Brazilian men sprinters": "عداؤون سريعون برازيليون",
    "Burmese men long-distance runners": "عداؤو مسافات طويلة بورميون",
    "Estonian men long-distance runners": "عداؤو مسافات طويلة إستونيون",
    "Gibraltarian men athletes": "لاعبو قوى جبل طارقيون",
    "Nazis executed by the British military": "نازيون أعدموا من قبل الجيش البريطاني",
    "People executed by the British military": "أشخاص أعدموا من قبل الجيش البريطاني",
    "People executed by the French military": "أشخاص أعدموا من قبل الجيش الفرنسي",
    "women in danish military": "المرأة في الجيش الدنماركي",
    "brazilian women's rights activists": "برازيليون ناشطون في حقوق المرأة",
    "burmese men marathon runners": "عداؤو ماراثون بورميون",
    "canadian men": "رجال كنديون",
    "Men's basketball players from Northern Ireland": "لاعبو كرة سلة من أيرلندا الشمالية",
    "Men's footballers in Papua New Guinea": "لاعبو كرة قدم في بابوا غينيا الجديدة",
    "men's footballers in togo": "لاعبو كرة قدم في توغو",
    "puerto rican men high jumpers": "متسابقو قفز عالي بورتوريكيون",
    "turkish women's rights activists": "أتراك ناشطون في حقوق المرأة",
    "Chilean men shot putters": "لاعبو دفع ثقل تشيليون",
    "Somalian men sprinters": "عداؤون سريعون صوماليون",
    "Sculptures of men in England": "منحوتات في رجال في إنجلترا",
    "Sculptures of men in London": "منحوتات في رجال في لندن",
    "Algerian men middle-distance runners": "عداؤو مسافات متوسطة جزائريون",
    "Guatemalan men middle-distance runners": "عداؤو مسافات متوسطة غواتيماليون",
    "Haitian men athletes": "لاعبو قوى هايتيون",
    "Iranian men athletes": "لاعبو قوى إيرانيون",
    "Iraqi men middle-distance runners": "عداؤو مسافات متوسطة عراقيون",
    "Kyrgyzstani men marathon runners": "عداؤو ماراثون قيرغيزستانيون",
    "Liechtenstein men sprinters": "عداؤون سريعون ليختنشتانيون",
    "Macedonian men sprinters": "عداؤون سريعون مقدونيون",
    "Men discus throwers": "رماة قرص",
    "Men's footballers in Mongolia": "لاعبو كرة قدم في منغوليا",
    "Nicaraguan men high jumpers": "متسابقو قفز عالي نيكاراغويون",
    "Russian men pole vaulters": "قافزون بالزانة روس",
    "Taiwanese men long jumpers": "لاعبو قفز طويل تايوانيون",
    "Trinidad and Tobago men discus throwers": "رماة قرص ترنيداديون",
    "Abolitionists from Wisconsin": "مناهضون للعبودية من ويسكونسن",
    "Albanian women's rights activists": "ألبان ناشطون في حقوق المرأة",
    "Botswana women's rights activists": "بوتسوانيون ناشطون في حقوق المرأة",
    "Venezuelan women's rights activists": "فنزويليون ناشطون في حقوق المرأة",
}

data_3 = {}


@pytest.mark.parametrize("category, expected", data_2.items(), ids=data_2.keys())
@pytest.mark.fast
def test_2(category: str, expected: str) -> None:
    label = resolve_label_ar(category)
    assert label == expected


to_test = [
    ("test_1", data_1),
    ("test_2", data_2),
    ("test_3", data_3),
]


@pytest.mark.parametrize("category, expected", data_1.items(), ids=data_1.keys())
@pytest.mark.fast
def test_1(category: str, expected: str) -> None:
    label = resolve_label_ar(category)
    assert label == expected


@pytest.mark.parametrize("name,data", to_test)
@pytest.mark.dump
def test_dump_it(name: str, data: dict[str, str]) -> None:
    expected, diff_result = one_dump_test(data, resolve_label_ar)

    dump_diff(diff_result, name)
    assert diff_result == expected, f"Differences found: {len(diff_result):,}, len all :{len(data):,}"
