import pytest
from aclc_ba.tokenizer.sentence_markup import SentenceMarkup


@pytest.mark.parametrize(
    "text",
    [
        """في استفتاء ضمني علي رئاسة بوش‏:‏
توقعات باستعادة الديمقراطيين السيطرة علي مجلس النواب بعد‏12‏ عاما
 
واشنطن ـ وكالات الأنباء 
 

في استفتاء ضمني علي رئاسة جورج بوش‏,‏ توافد الناخبون الأمريكيون أمس علي لجان الاقتراع للإدلاء بأصواتهم في انتخابات التجديد النصفي للكونجرس الأمريكي‏,‏ وسط توقعات المراقبين واستطلاعات الرأي بأن يستعيد خصومه الديمقراطيون سيطرتهم علي الأغلبية في مجلس النواب للمرة الأولي منذ عام‏1994.‏ وسوف يختار الناخبون في هذه الانتخابات مجلسا جديدا بالكامل للنواب مكونا من‏435‏ عضوا‏,‏ بالإضافة إلي‏33‏ عضوا بمجلس الشيوخ المؤلف من مائة عضو‏,‏ و‏36‏ من حكام الولايات الخمسين‏,‏ وعدد من المسئولين المحليين‏,‏وخيمت علي عملية الاقتراع سلسلة من القضايا الخارجية والمحلية التي تهم الناخب الأمريكي‏,‏ بداية من حرب العراق‏,‏ والحرب ضد الإرهاب عالميا بتأثيراتها المحلية‏,‏ ونهاية بعدة قضايا محلية تتعلق بتشريعات داخل ولايات مختلفة‏,‏ ومنعا لتكرار مشكلة فرز الأصوات في انتخابات الرئاسة عام‏2000‏ بولاية فلوريدا‏,‏ قرر الحزبان الجمهوري والديمقراطي حشد أكثر من عشرة آلاف محام لكشف أي نوع من المخالفات النظامية‏,‏ وحشد الحزب الديمقراطي وحده نحو سبعة آلاف محام في‏19‏ ولاية‏.‏

وفي آخر جولاتهما الانتخابية قبل بدء عملية الاقتراع‏,‏ قاد الرئيس جورج بوش‏,‏ والرئيس السابق بيل كلينتون الحملة الدعائية لحزبيهما‏.‏ """
    ],
)
class TestSentenceMarkup:
    def test_splited_paragraphs_with_markup(self, text) -> None:
        expected_markup_document = [
            "/D",
            "/T",
            "في استفتاء ضمني علي رئاسة بوش\u200f : \u200f",
            "T/",
            "/P",
            "توقعات باستعادة الديمقراطيين السيطرة علي مجلس النواب بعد\u200f12\u200f عاما",
            "P/",
            "/P",
            "واشنطن ـ وكالات الأنباء ",
            "P/",
            "/P",
            "في استفتاء ضمني علي رئاسة جورج بوش\u200f , \u200f توافد الناخبون الأمريكيون أمس علي لجان الاقتراع للإدلاء بأصواتهم في انتخابات التجديد النصفي للكونجرس الأمريكي\u200f , \u200f وسط توقعات المراقبين واستطلاعات الرأي بأن يستعيد خصومه الديمقراطيون سيطرتهم علي الأغلبية في مجلس النواب للمرة الأولي منذ عام\u200f1994 . \u200f وسوف يختار الناخبون في هذه الانتخابات مجلسا جديدا بالكامل للنواب مكونا من\u200f435\u200f عضوا\u200f , \u200f بالإضافة إلي\u200f33\u200f عضوا بمجلس الشيوخ المؤلف من مائة عضو\u200f , \u200f و\u200f36\u200f من حكام الولايات الخمسين\u200f , \u200f وعدد من المسئولين المحليين\u200f , \u200fوخيمت علي عملية الاقتراع سلسلة من القضايا الخارجية والمحلية التي تهم الناخب الأمريكي\u200f , \u200f بداية من حرب العراق\u200f , \u200f والحرب ضد الإرهاب عالميا بتأثيراتها المحلية\u200f , \u200f ونهاية بعدة قضايا محلية تتعلق بتشريعات داخل ولايات مختلفة\u200f , \u200f ومنعا لتكرار مشكلة فرز الأصوات في انتخابات الرئاسة عام\u200f2000\u200f بولاية فلوريدا\u200f , \u200f قرر الحزبان الجمهوري والديمقراطي حشد أكثر من عشرة آلاف محام لكشف أي نوع من المخالفات النظامية\u200f , \u200f وحشد الحزب الديمقراطي وحده نحو سبعة آلاف محام في\u200f19\u200f ولاية\u200f . \u200f",
            "P/",
            "/P",
            "وفي آخر جولاتهما الانتخابية قبل بدء عملية الاقتراع\u200f , \u200f قاد الرئيس جورج بوش\u200f , \u200f والرئيس السابق بيل كلينتون الحملة الدعائية لحزبيهما\u200f . \u200f ",
            "P/",
            "D/",
        ]
        markup_document = SentenceMarkup(text)
        result_markup_document = markup_document.splited_paragraphs_with_markup
        assert result_markup_document == expected_markup_document

    def test_title(self, text) -> None:
        expected_markup_document = "في استفتاء ضمني علي رئاسة بوش\u200f : \u200f"
        markup_document = SentenceMarkup(text)
        result_markup_document = markup_document.title
        assert result_markup_document == f"{expected_markup_document}"

    def test_paragraphs(self, text) -> None:
        expected_markup_document = [
            "توقعات باستعادة الديمقراطيين السيطرة علي مجلس النواب بعد\u200f12\u200f عاما",
            "واشنطن ـ وكالات الأنباء ",
            "في استفتاء ضمني علي رئاسة جورج بوش\u200f , \u200f توافد الناخبون الأمريكيون أمس علي لجان الاقتراع للإدلاء بأصواتهم في انتخابات التجديد النصفي للكونجرس الأمريكي\u200f , \u200f وسط توقعات المراقبين واستطلاعات الرأي بأن يستعيد خصومه الديمقراطيون سيطرتهم علي الأغلبية في مجلس النواب للمرة الأولي منذ عام\u200f1994 . \u200f وسوف يختار الناخبون في هذه الانتخابات مجلسا جديدا بالكامل للنواب مكونا من\u200f435\u200f عضوا\u200f , \u200f بالإضافة إلي\u200f33\u200f عضوا بمجلس الشيوخ المؤلف من مائة عضو\u200f , \u200f و\u200f36\u200f من حكام الولايات الخمسين\u200f , \u200f وعدد من المسئولين المحليين\u200f , \u200fوخيمت علي عملية الاقتراع سلسلة من القضايا الخارجية والمحلية التي تهم الناخب الأمريكي\u200f , \u200f بداية من حرب العراق\u200f , \u200f والحرب ضد الإرهاب عالميا بتأثيراتها المحلية\u200f , \u200f ونهاية بعدة قضايا محلية تتعلق بتشريعات داخل ولايات مختلفة\u200f , \u200f ومنعا لتكرار مشكلة فرز الأصوات في انتخابات الرئاسة عام\u200f2000\u200f بولاية فلوريدا\u200f , \u200f قرر الحزبان الجمهوري والديمقراطي حشد أكثر من عشرة آلاف محام لكشف أي نوع من المخالفات النظامية\u200f , \u200f وحشد الحزب الديمقراطي وحده نحو سبعة آلاف محام في\u200f19\u200f ولاية\u200f . \u200f",
            "وفي آخر جولاتهما الانتخابية قبل بدء عملية الاقتراع\u200f , \u200f قاد الرئيس جورج بوش\u200f , \u200f والرئيس السابق بيل كلينتون الحملة الدعائية لحزبيهما\u200f . \u200f ",
        ]
        markup_document = SentenceMarkup(text)
        result_markup_document = markup_document.paragraphs
        assert result_markup_document == expected_markup_document

    def test_sentences_len(self, text) -> None:
        expected_markup_document = 5
        markup_document = SentenceMarkup(text)
        result_markup_document = markup_document.sentences_len
        assert result_markup_document == expected_markup_document

    def test_paragraphs_max_len(self, text) -> None:
        expected_markup_document = 168
        markup_document = SentenceMarkup(text)
        result_markup_document = markup_document.paragraphs_max_len
        assert result_markup_document == expected_markup_document
