import pytest
from arabic_phonemizer import ArabicPhonemizer  # Replace with the actual import path

@pytest.fixture
def phonemizer():
    return ArabicPhonemizer()

@pytest.fixture
def texts():
    data = {'ذَهَبَ الْوَلَدُ إِلَى الْمَدْرَسَةِ الْجَدِيدَةْ.': 'ذَهَبَ الْوَلَدُ إِلَى الْمَدْرَسَةِ الْجَدِيدَهْ.',
            'بِالْكِتَابِ تَرْتَقِي الْأُمَمُ.': 'بِلْكِتَابِ تَرْتَقِي الْأُمَمُ.',
            'فِي السَّمَاءِ تَطِيرُ الطُّيُورُ بِحُرِّيَّةْ.': 'فِي اسَّمَاءِ تَطِيرُ اطُّيُورُ بِحُرِّيَّهْ.',
            'لِلْعِلْمِ قِيمَةٌ كَبِيرَةٌ فِي الْحَيَاةِ.': 'لِلْعِلْمِ قِيمَةٌ كَبِيرَةٌ فِي الْحَيَاةِ.',
            ' الْقَمَرُ مُنِيرٌ فِي اللَّيْلِ الصَّافِي!': 'أَلْقَمَرُ مُنِيرٌ فِي الَّيْلِ اصَّافِي!',
            'اَلشَّمْسُ سَاطِعَةْ، مُنِيرَةٌ فِي النَّهَارِ الْجَمِيلِ.': 'أَشَّمْسُ سَاطِعَهْ، مُنِيرَةٌ فِي انَّهَارِ الْجَمِيلِ.',
            'اِسْتَمَعْتُ إِلَى الْخَبَرِ السَّارِّ بِاهْتِمَامٍ.': 'إِسْتَمَعْتُ إِلَى الْخَبَرِ اسَّارِّ بِاهْتِمَامٍ.',
            'أَكَلْتُ الْفَاكِهَةَ اللَّذِيذَةَ بَعْدَ الْغَدَاءِ.': 'أَكَلْتُ الْفَاكِهَةَ الَّذِيذَةَ بَعْدَ الْغَدَاءِ.',
            'اِشْتَرَيْتُ الْقَلَمَ وَالدَّفْتَرَ مِنَ الْمَكْتَبَةِ.': 'إِشْتَرَيْتُ الْقَلَمَ وَدَّّفْتَرَ مِنَ الْمَكْتَبَةِ.',
            'الْكِتَابُ، الْكِتَابُ هُوَ خَيْرُ صَدِيقٍ.': 'أَلْكِتَابُ، أَلْكِتَابُ هُوَ خَيْرُ صَدِيقٍ.',
            'اَلصَّدِيقُ الْوَفِيُّ كَنْزٌ لَا يُقَدَّرُ بِثَمَنٍ.': 'أَصَّدِيقُ الْوَفِيُّ كَنْزٌ لَا يُقَدَّرُ بِثَمَنٍ.',
            'بِالْعَمَلِ الْجَادِّ نَحْقِقُ الْأَهْدَافَ الْمَرْجُوَّةَ.': 'بِلْعَمَلِ الْجَادِّ نَحْقِقُ الْأَهْدَافَ الْمَرْجُوَّةَ.',
            'لِلْأَطْفَالِ حَقٌّ فِي التَّعْلِيمِ وَاللَّعِبِ.': 'لِلْأَطْفَالِ حَقٌّ فِي اتَّعْلِيمِ وَلَّّعِبِ.',
            'اِسْتَعَانَ الْمُهَنْدِسُ بِالْأَدَوَاتِ الْحَدِيثَةِ.': 'إِسْتَعَانَ الْمُهَنْدِسُ بِلْأَدَوَاتِ الْحَدِيثَةِ.',
            'اِقْتَرَبَ الْعِيدُ وَفَرِحَ الْجَمِيعُ بِهِ.': 'إِقْتَرَبَ الْعِيدُ وَفَرِحَ الْجَمِيعُ بِهِ.',
            'هذا ذلك طه هؤلاء أولئك':'هَاذَا ذَالِكَ طَاهَا هَاؤُلَاءِ أولَائِكَ'}
    return data

def test_special_cases(texts): 
    phonemizer = ArabicPhonemizer()
    for text, expected in texts.items():
        phonemized = phonemizer.handle_special_cases(text)
        assert phonemized == expected