package com.aletheia.app.ui.reader.tts

import org.junit.Assert.assertEquals
import org.junit.Test

class RussianNumberNormalizerTest {
    @Test
    fun `normalizes cardinal integers`() {
        assertEquals("ноль один двадцать один", RussianNumberNormalizer.normalize("0 1 21"))
        assertEquals("одна тысяча один", RussianNumberNormalizer.normalize("1001"))
        assertEquals("две тысячи двадцать шесть", RussianNumberNormalizer.normalize("2026"))
        assertEquals("двадцать две тысячи", RussianNumberNormalizer.normalize("22000"))
    }

    @Test
    fun `preserves leading zeroes and reads decimal digits`() {
        assertEquals("ноль ноль семь", RussianNumberNormalizer.normalize("007"))
        assertEquals("минус двенадцать запятая ноль пять", RussianNumberNormalizer.normalize("-12,05"))
    }

    @Test
    fun `normalizes number sign and non breaking groups`() {
        assertEquals("номер пять", RussianNumberNormalizer.normalize("№ 5"))
        assertEquals("двенадцать тысяч триста сорок пять", RussianNumberNormalizer.normalize("12\u00A0345"))
    }

    @Test
    fun `does not rewrite digits inside words`() {
        assertEquals("глава2 и abc123", RussianNumberNormalizer.normalize("глава2 и abc123"))
    }

    @Test
    fun `inflects four digit years before году`() {
        assertEquals(
            "В две тысячи двадцать шестом году и в тысяча восемьсот девяносто седьмом году",
            RussianNumberNormalizer.normalize("В 2026 году и в 1897 году")
        )
        assertEquals("В двухтысячном году", RussianNumberNormalizer.normalize("В 2000 году"))
    }
}
