Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added test cases: Spanish, Italian, French #1089

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
222 changes: 201 additions & 21 deletions tests/test_locales.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,14 +177,118 @@ def test_meridian_invalid_token(self):

@pytest.mark.usefixtures("lang_locale")
class TestItalianLocale:

def test_ordinal_number(self):

assert self.locale.ordinal_number(0) == "0º"
assert self.locale.ordinal_number(1) == "1º"
assert self.locale.ordinal_number(2) == "2º"
assert self.locale.ordinal_number(3) == "3º"
assert self.locale.ordinal_number(4) == "4º"
assert self.locale.ordinal_number(10) == "10º"
assert self.locale.ordinal_number(11) == "11º"
assert self.locale.ordinal_number(12) == "12º"
assert self.locale.ordinal_number(13) == "13º"
assert self.locale.ordinal_number(14) == "14º"
assert self.locale.ordinal_number(21) == "21º"
assert self.locale.ordinal_number(22) == "22º"
assert self.locale.ordinal_number(23) == "23º"
assert self.locale.ordinal_number(24) == "24º"

assert self.locale.ordinal_number(100) == "100º"
assert self.locale.ordinal_number(101) == "101º"
assert self.locale.ordinal_number(102) == "102º"
assert self.locale.ordinal_number(103) == "103º"
assert self.locale.ordinal_number(104) == "104º"
assert self.locale.ordinal_number(110) == "110º"
assert self.locale.ordinal_number(111) == "111º"
assert self.locale.ordinal_number(112) == "112º"
assert self.locale.ordinal_number(113) == "113º"
assert self.locale.ordinal_number(114) == "114º"
assert self.locale.ordinal_number(121) == "121º"
assert self.locale.ordinal_number(122) == "122º"
assert self.locale.ordinal_number(123) == "123º"
assert self.locale.ordinal_number(124) == "124º"

def test_format_timeframe(self):
assert self.locale._format_timeframe("now", 0) == "adesso"
assert self.locale._format_timeframe("seconds", 1) == "un secondo"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be self.locale._format_timeframe("second", 1). We use self.locale._format_timeframe("second", 1) for a string that represents one second.

assert self.locale._format_timeframe("seconds", 3) == "3 secondi"
assert self.locale._format_timeframe("seconds", 30) == "30 secondi"
assert self.locale._format_timeframe("minute", 1) == "un minuto"
assert self.locale._format_timeframe("minutes", 4) == "4 minuti"
assert self.locale._format_timeframe("minutes", 40) == "40 minuti"
assert self.locale._format_timeframe("hour", 1) == "un'ora"
assert self.locale._format_timeframe("hours", 5) == "5 ore"
assert self.locale._format_timeframe("hours", 23) == "23 ore"
assert self.locale._format_timeframe("day", 1) == "un giorno"
assert self.locale._format_timeframe("days", 6) == "6 giorni"
assert self.locale._format_timeframe("days", 12) == "12 giorni"
assert self.locale._format_timeframe("week", 1) == "una settimana"
assert self.locale._format_timeframe("weeks", 2) == "2 settimane"
assert self.locale._format_timeframe("weeks", 3) == "3 settimane"
assert self.locale._format_timeframe("month", 1) == "un mese"
assert self.locale._format_timeframe("months", 7) == "7 mesi"
assert self.locale._format_timeframe("months", 11) == "11 mesi"
assert self.locale._format_timeframe("year", 1) == "un anno"
assert self.locale._format_timeframe("years", 8) == "8 anni"
assert self.locale._format_timeframe("years", 12) == "12 anni"

assert self.locale._format_timeframe("now", 0) == "adesso"
assert self.locale._format_timeframe("seconds", -1) == "un secondo fa"
assert self.locale._format_timeframe("seconds", -9) == "9 secondi fa"
assert self.locale._format_timeframe("seconds", -12) == "12 secondi fa"
assert self.locale._format_timeframe("minute", -1) == "un minuto fa"
assert self.locale._format_timeframe("minutes", -2) == "2 minuti fa"
assert self.locale._format_timeframe("minutes", -10) == "10 minuti fa"
assert self.locale._format_timeframe("hour", -1) == "un'ora fa"
assert self.locale._format_timeframe("hours", -3) == "3 ore fa"
assert self.locale._format_timeframe("hours", -11) == "11 ore fa"
assert self.locale._format_timeframe("day", -1) == "un giorno fa"
assert self.locale._format_timeframe("days", -2) == "2 giorni fa"
assert self.locale._format_timeframe("days", -12) == "12 giorni fa"
assert self.locale._format_timeframe("week", -1) == "una settimana fa"
assert self.locale._format_timeframe("weeks", -2) == "2 settimane fa"
assert self.locale._format_timeframe("weeks", -3) == "3 settimane fa"
assert self.locale._format_timeframe("month", -1) == "un mese fa"
assert self.locale._format_timeframe("months", -3) == "3 mesi fa"
assert self.locale._format_timeframe("months", -13) == "13 mesi fa"
assert self.locale._format_timeframe("year", -1) == "un anno fa"
assert self.locale._format_timeframe("years", -4) == "4 anni fa"
assert self.locale._format_timeframe("years", -14) == "14 anni fa"

@pytest.mark.usefixtures("lang_locale")
class TestSpanishLocale:
def test_ordinal_number(self):
assert self.locale.ordinal_number(0) == "0º"
assert self.locale.ordinal_number(1) == "1º"
assert self.locale.ordinal_number(2) == "2º"
assert self.locale.ordinal_number(3) == "3º"
assert self.locale.ordinal_number(4) == "4º"
assert self.locale.ordinal_number(10) == "10º"
assert self.locale.ordinal_number(11) == "11º"
assert self.locale.ordinal_number(12) == "12º"
assert self.locale.ordinal_number(13) == "13º"
assert self.locale.ordinal_number(14) == "14º"
assert self.locale.ordinal_number(21) == "21º"
assert self.locale.ordinal_number(22) == "22º"
assert self.locale.ordinal_number(23) == "23º"
assert self.locale.ordinal_number(24) == "24º"

assert self.locale.ordinal_number(100) == "100º"
assert self.locale.ordinal_number(101) == "101º"
assert self.locale.ordinal_number(102) == "102º"
assert self.locale.ordinal_number(103) == "103º"
assert self.locale.ordinal_number(104) == "104º"
assert self.locale.ordinal_number(110) == "110º"
assert self.locale.ordinal_number(111) == "111º"
assert self.locale.ordinal_number(112) == "112º"
assert self.locale.ordinal_number(113) == "113º"
assert self.locale.ordinal_number(114) == "114º"
assert self.locale.ordinal_number(121) == "121º"
assert self.locale.ordinal_number(122) == "122º"
assert self.locale.ordinal_number(123) == "123º"
assert self.locale.ordinal_number(124) == "124º"

def test_format_timeframe(self):
assert self.locale._format_timeframe("now", 0) == "ahora"
Expand All @@ -211,34 +315,110 @@ def test_format_timeframe(self):
assert self.locale._format_timeframe("years", 12) == "12 años"

assert self.locale._format_timeframe("now", 0) == "ahora"
assert self.locale._format_timeframe("seconds", -1) == "1 segundos"
assert self.locale._format_timeframe("seconds", -9) == "9 segundos"
assert self.locale._format_timeframe("seconds", -12) == "12 segundos"
assert self.locale._format_timeframe("minute", -1) == "un minuto"
assert self.locale._format_timeframe("minutes", -2) == "2 minutos"
assert self.locale._format_timeframe("minutes", -10) == "10 minutos"
assert self.locale._format_timeframe("hour", -1) == "una hora"
assert self.locale._format_timeframe("hours", -3) == "3 horas"
assert self.locale._format_timeframe("hours", -11) == "11 horas"
assert self.locale._format_timeframe("day", -1) == "un día"
assert self.locale._format_timeframe("days", -2) == "2 días"
assert self.locale._format_timeframe("days", -12) == "12 días"
assert self.locale._format_timeframe("week", -1) == "una semana"
assert self.locale._format_timeframe("weeks", -2) == "2 semanas"
assert self.locale._format_timeframe("weeks", -3) == "3 semanas"
assert self.locale._format_timeframe("month", -1) == "un mes"
assert self.locale._format_timeframe("months", -3) == "3 meses"
assert self.locale._format_timeframe("months", -13) == "13 meses"
assert self.locale._format_timeframe("year", -1) == "un año"
assert self.locale._format_timeframe("years", -4) == "4 años"
assert self.locale._format_timeframe("years", -14) == "14 años"
assert self.locale._format_timeframe("seconds", -1) == "hace 1 segundos"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

self.locale._format_timeframe doesn't handle the relative logic, hence why these tests are failing. If you wanted to check whether strings are properly being formatted in their future or past form, that would be done with self.locale._format_relative

assert self.locale._format_timeframe("seconds", -9) == "hace 9 segundos"
assert self.locale._format_timeframe("seconds", -12) == "hace 12 segundos"
assert self.locale._format_timeframe("minute", -1) == "hace un minuto"
assert self.locale._format_timeframe("minutes", -2) == "hace 2 minutos"
assert self.locale._format_timeframe("minutes", -10) == "hace 10 minutos"
assert self.locale._format_timeframe("hour", -1) == "hace una hora"
assert self.locale._format_timeframe("hours", -3) == "hace 3 horas"
assert self.locale._format_timeframe("hours", -11) == "hace 11 horas"
assert self.locale._format_timeframe("day", -1) == "hace un día"
assert self.locale._format_timeframe("days", -2) == "hace 2 días"
assert self.locale._format_timeframe("days", -12) == "hace 12 días"
assert self.locale._format_timeframe("week", -1) == "hace una semana"
assert self.locale._format_timeframe("weeks", -2) == "hace 2 semanas"
assert self.locale._format_timeframe("weeks", -3) == "hace 3 semanas"
assert self.locale._format_timeframe("month", -1) == "hace un mes"
assert self.locale._format_timeframe("months", -3) == "hace 3 meses"
assert self.locale._format_timeframe("months", -13) == "hace 13 meses"
assert self.locale._format_timeframe("year", -1) == "hace un año"
assert self.locale._format_timeframe("years", -4) == "hace 4 años"
assert self.locale._format_timeframe("years", -14) == "hace 14 años"


@pytest.mark.usefixtures("lang_locale")
class TestFrenchLocale:
def test_ordinal_number(self):


assert self.locale.ordinal_number(0) == "0ème"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an edge case we're missing within _ordinal_number method for the FrenchBaseLocale in arrow\locales.py. Feel free to add the appropriate edge case with this method to fix this.

assert self.locale.ordinal_number(1) == "1er"
assert self.locale.ordinal_number(2) == "2e"
assert self.locale.ordinal_number(3) == "3ème"
assert self.locale.ordinal_number(4) == "4ème"
assert self.locale.ordinal_number(10) == "10e"
assert self.locale.ordinal_number(11) == "11ème"
assert self.locale.ordinal_number(12) == "12e"
assert self.locale.ordinal_number(13) == "13e"
assert self.locale.ordinal_number(14) == "14e"
assert self.locale.ordinal_number(21) == "21e"
assert self.locale.ordinal_number(22) == "22e"
assert self.locale.ordinal_number(23) == "23e"
assert self.locale.ordinal_number(24) == "24e"

assert self.locale.ordinal_number(100) == "100e"
assert self.locale.ordinal_number(101) == "101e"
assert self.locale.ordinal_number(102) == "102e"
assert self.locale.ordinal_number(103) == "103e"
assert self.locale.ordinal_number(104) == "104e"
assert self.locale.ordinal_number(110) == "110e"
assert self.locale.ordinal_number(111) == "111e"
assert self.locale.ordinal_number(112) == "112e"
assert self.locale.ordinal_number(113) == "113e"
assert self.locale.ordinal_number(114) == "114e"
assert self.locale.ordinal_number(121) == "121e"
assert self.locale.ordinal_number(122) == "122e"
assert self.locale.ordinal_number(123) == "123e"
assert self.locale.ordinal_number(124) == "124e"

def test_format_timeframe(self):
assert self.locale._format_timeframe("now", 0) == "maintenant"
assert self.locale._format_timeframe("seconds", 1) == "une seconde"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above about using self.locale._format_timeframe("second", 1)

assert self.locale._format_timeframe("seconds", 3) == "3 secondes"
assert self.locale._format_timeframe("seconds", 30) == "30 secondes"
assert self.locale._format_timeframe("minute", 1) == "une minute"
assert self.locale._format_timeframe("minutes", 4) == "4 minutes"
assert self.locale._format_timeframe("minutes", 40) == "40 minutes"
assert self.locale._format_timeframe("hour", 1) == "une heure"
assert self.locale._format_timeframe("hours", 5) == "5 heures"
assert self.locale._format_timeframe("hours", 23) == "23 heures"
assert self.locale._format_timeframe("day", 1) == "un jour"
assert self.locale._format_timeframe("days", 6) == "6 jours"
assert self.locale._format_timeframe("days", 12) == "12 jours"
assert self.locale._format_timeframe("week", 1) == "une semaine"
assert self.locale._format_timeframe("weeks", 2) == "2 semaines"
assert self.locale._format_timeframe("weeks", 3) == "3 semaines"
assert self.locale._format_timeframe("month", 1) == "un mois"
assert self.locale._format_timeframe("months", 7) == "7 mois"
assert self.locale._format_timeframe("months", 11) == "11 mois"
assert self.locale._format_timeframe("year", 1) == "une année"
assert self.locale._format_timeframe("years", 8) == "8 années"
assert self.locale._format_timeframe("years", 12) == "12 années"

assert self.locale._format_timeframe("now", 0) == "maintenant"
assert self.locale._format_timeframe("seconds", -1) == "il y a une seconde"
assert self.locale._format_timeframe("seconds", -9) == "il y a 9 secondes"
assert self.locale._format_timeframe("seconds", -12) == "il y a 12 secondes"
assert self.locale._format_timeframe("minute", -1) == "il y a une minute"
assert self.locale._format_timeframe("minutes", -2) == "il y a 2 minutes"
assert self.locale._format_timeframe("minutes", -10) == "il y a 10 minutes"
assert self.locale._format_timeframe("hour", -1) == "il y a une heure"
assert self.locale._format_timeframe("hours", -3) == "il y a 3 heures"
assert self.locale._format_timeframe("hours", -11) == "il y a 11 heures"
assert self.locale._format_timeframe("day", -1) == "il y a un jour"
assert self.locale._format_timeframe("days", -2) == "il y a 2 jours"
assert self.locale._format_timeframe("days", -12) == "il y a 12 jours"
assert self.locale._format_timeframe("week", -1) == "il y a une semaine"
assert self.locale._format_timeframe("weeks", -2) == "Il y a 2 semaines"
assert self.locale._format_timeframe("weeks", -3) == "Il y a 3 semaines"
assert self.locale._format_timeframe("month", -1) == "il y a un mois"
assert self.locale._format_timeframe("months", -3) == "il y a 3 mois"
assert self.locale._format_timeframe("months", -13) == "il y a 13 mois"
assert self.locale._format_timeframe("year", -1) == "il y a un an"
assert self.locale._format_timeframe("years", -4) == "il y a 4 ans"
assert self.locale._format_timeframe("years", -14) == "il y a 4 ans"

def test_month_abbreviation(self):
assert "juil" in self.locale.month_abbreviations
Expand Down