improve Russian date handler, and R. d.h. unittests

This commit is contained in:
Paul Franklin 2015-11-29 20:13:35 -08:00
parent 3e1e89147b
commit 20601749e2
2 changed files with 60 additions and 5 deletions

View File

@ -130,12 +130,33 @@ class DateDisplayRU(DateDisplay):
else:
return self.format_long_month_year(date_val[1], year,
inflect, long_months)
elif date_val[1] == 0: # month is zero but day is not (see 8477)
return self.display_iso(date_val)
else:
return "{day:d} {long_month.f[Р]} {year}".format(
day = date_val[0],
long_month = long_months[date_val[1]],
year = year)
def dd_dformat05(self, date_val, inflect, short_months):
"""
day month_abbreviation year -- for Russian locale
"""
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
else:
return self.format_short_month_year(date_val[1], year,
inflect, short_months)
elif date_val[1] == 0: # month is zero but day is not (see 8477)
return self.display_iso(date_val)
else:
return "{day:d} {short_month.f[Р]} {year}".format(
day = date_val[0],
short_month = short_months[date_val[1]],
year = year)
#-------------------------------------------------------------------------
#
# Register classes

View File

@ -66,16 +66,30 @@ class DateDisplayInflectionsTestRU(DateDisplayTest):
self.assertIn(month_lexeme.f[inflection],
self.dd.display(date))
def test_month_only_date_nominative(self):
for qual in (Date.QUAL_NONE, Date.QUAL_ESTIMATED, Date.QUAL_CALCULATED):
def test_month_only_date_nominative_quality_none(self):
d1945may = Date(1945, 5, 0)
d1945may.set_quality(qual)
d1945may.set_quality(Date.QUAL_NONE)
self.assertInflectionInDate('И', d1945may)
def test_month_only_date_nominative_quality_estimated(self):
d1945may = Date(1945, 5, 0)
d1945may.set_quality(Date.QUAL_ESTIMATED)
self.assertInflectionInDate('Т', d1945may)
def test_month_only_date_nominative_quality_calculated(self):
d1945may = Date(1945, 5, 0)
d1945may.set_quality(Date.QUAL_CALCULATED)
self.assertInflectionInDate('И', d1945may)
def test_day_month_date_genitive(self):
d1945may9 = Date(1945, 5, 9)
self.assertInflectionInDate('Р', d1945may9)
def test_day_month_date_genitiive_quality_estimated(self):
d1945may9 = Date(1945, 5, 9)
d1945may9.set_quality(Date.QUAL_ESTIMATED)
self.assertInflectionInDate('Р', d1945may9)
def test_before_month_only_date_genitive(self):
d1945may = Date(1945, 5, 0)
d1945may.set_modifier(Date.MOD_BEFORE)
@ -86,6 +100,26 @@ class DateDisplayInflectionsTestRU(DateDisplayTest):
# will be the same!
self.assertIn("до мая", self.dd.display(d1945may))
def test_after_month_only_date_genitive(self):
d1945may = Date(1945, 5, 0)
d1945may.set_modifier(Date.MOD_AFTER)
# TODO hardwired magic numbers! Bad API smell.
for inflecting_format in (3,4):
self.dd.set_format(inflecting_format)
# this depends on the fact that in Russian the short and long forms for May
# will be the same!
self.assertIn("после мая", self.dd.display(d1945may))
def test_about_month_only_date_genitive(self):
d1945may = Date(1945, 5, 0)
d1945may.set_modifier(Date.MOD_ABOUT)
# TODO hardwired magic numbers! Bad API smell.
for inflecting_format in (3,4):
self.dd.set_format(inflecting_format)
# this depends on the fact that in Russian the short and long forms for May
# will be the same!
self.assertIn("около мая", self.dd.display(d1945may))
def test_between_month_only_dates_ablative(self):
b1945may_1946may = Date()
b1945may_1946may.set(