Add datehandler unit test
svn: r22885
This commit is contained in:
parent
7ccbe938f1
commit
dcccf38e2e
0
gramps/gen/datehandler/test/__init__.py
Normal file
0
gramps/gen/datehandler/test/__init__.py
Normal file
175
gramps/gen/datehandler/test/datehandler_test.py
Normal file
175
gramps/gen/datehandler/test/datehandler_test.py
Normal file
@ -0,0 +1,175 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2006 Martin Hawlisch, Donald N. Allingham
|
||||
# Copyright (C) 2008 Brian G. Matherly
|
||||
# Copyright (C) 2010 Jakim Friant
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
# $Id$
|
||||
|
||||
"""
|
||||
Validate localized date parser and displayer.
|
||||
|
||||
Based on the Check Localized Date Displayer and Parser tool.
|
||||
"""
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# standard python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import unittest
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from ...lib import Date, DateError
|
||||
from .. import parser as _dp
|
||||
from .. import displayer as _dd
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class DateHandlerTest(unittest.TestCase):
|
||||
|
||||
def base_test(self, test_date):
|
||||
|
||||
try:
|
||||
datestr = _dd.display(test_date)
|
||||
except:
|
||||
self.assertFail('Date displayer exception')
|
||||
|
||||
try:
|
||||
new_date = _dp.parse(datestr)
|
||||
except:
|
||||
self.assertFail('Date parser exception')
|
||||
|
||||
self.assertTrue(test_date.is_equal(new_date))
|
||||
|
||||
def test_simple(self):
|
||||
|
||||
dates = []
|
||||
calendar = Date.CAL_GREGORIAN
|
||||
for quality in (Date.QUAL_NONE, Date.QUAL_ESTIMATED,
|
||||
Date.QUAL_CALCULATED):
|
||||
for modifier in (Date.MOD_NONE, Date.MOD_BEFORE,
|
||||
Date.MOD_AFTER, Date.MOD_ABOUT):
|
||||
for slash1 in (False,True):
|
||||
for month in range(1, 13):
|
||||
for day in (5, 27):
|
||||
d = Date()
|
||||
d.set(quality, modifier, calendar,
|
||||
(day, month, 1789, slash1), "Text comment")
|
||||
dates.append(d)
|
||||
|
||||
for test_date in dates:
|
||||
self.base_test(test_date)
|
||||
|
||||
def test_span(self):
|
||||
|
||||
dates = []
|
||||
calendar = Date.CAL_GREGORIAN
|
||||
for quality in (Date.QUAL_NONE, Date.QUAL_ESTIMATED,
|
||||
Date.QUAL_CALCULATED):
|
||||
for modifier in (Date.MOD_RANGE, Date.MOD_SPAN):
|
||||
for slash1 in (False, True):
|
||||
for slash2 in (False, True):
|
||||
for month in range(1, 13):
|
||||
for day in (5, 27):
|
||||
d = Date()
|
||||
d.set(quality, modifier, calendar,
|
||||
(day, month, 1789, slash1,
|
||||
day, month, 1876, slash2),
|
||||
"Text comment")
|
||||
dates.append(d)
|
||||
d = Date()
|
||||
d.set(quality, modifier, calendar,
|
||||
(day, month, 1789, slash1,
|
||||
day, 13-month, 1876, slash2),
|
||||
"Text comment")
|
||||
dates.append(d)
|
||||
d = Date()
|
||||
d.set(quality, modifier, calendar,
|
||||
(day, month, 1789, slash1,
|
||||
32-day, month, 1876, slash2),
|
||||
"Text comment")
|
||||
dates.append(d)
|
||||
d = Date()
|
||||
d.set(quality, modifier, calendar,
|
||||
(day, month, 1789, slash1,
|
||||
32-day, 13-month, 1876, slash2),
|
||||
"Text comment")
|
||||
dates.append(d)
|
||||
|
||||
for test_date in dates:
|
||||
self.base_test(test_date)
|
||||
|
||||
def test_textual(self):
|
||||
calendar = Date.CAL_GREGORIAN
|
||||
modifier = Date.MOD_TEXTONLY
|
||||
for quality in (Date.QUAL_NONE, Date.QUAL_ESTIMATED,
|
||||
Date.QUAL_CALCULATED):
|
||||
test_date = Date()
|
||||
test_date.set(quality, modifier, calendar, Date.EMPTY,
|
||||
"This is a textual date")
|
||||
self.base_test(test_date)
|
||||
|
||||
def test_too_few_arguments(self):
|
||||
dateval = (4, 7, 1789, False)
|
||||
for l in range(1, len(dateval)):
|
||||
d = Date()
|
||||
with self.assertRaises(DateError):
|
||||
d.set(Date.QUAL_NONE, Date.MOD_NONE, Date.CAL_GREGORIAN,
|
||||
dateval[:l], "Text comment")
|
||||
|
||||
def test_too_few_span_arguments(self):
|
||||
dateval = (4, 7, 1789, False, 5, 8, 1876, False)
|
||||
for l in range(1, len(dateval)):
|
||||
d = Date()
|
||||
with self.assertRaises(DateError):
|
||||
d.set(Date.QUAL_NONE, Date.MOD_SPAN, Date.CAL_GREGORIAN,
|
||||
dateval[:l], "Text comment")
|
||||
|
||||
def test_invalid_day(self):
|
||||
d = Date()
|
||||
with self.assertRaises(DateError):
|
||||
d.set(Date.QUAL_NONE, Date.MOD_NONE, Date.CAL_GREGORIAN,
|
||||
(44, 7, 1789,False), "Text comment")
|
||||
|
||||
def test_invalid_month(self):
|
||||
d = Date()
|
||||
with self.assertRaises(DateError):
|
||||
d.set(Date.QUAL_NONE,Date.MOD_NONE, Date.CAL_GREGORIAN,
|
||||
(4, 77, 1789, False), "Text comment")
|
||||
|
||||
def test_invalid_span_day(self):
|
||||
d = Date()
|
||||
with self.assertRaises(DateError):
|
||||
d.set(Date.QUAL_NONE, Date.MOD_SPAN, Date.CAL_GREGORIAN,
|
||||
(4, 7, 1789, False, 55, 8, 1876, False), "Text comment")
|
||||
|
||||
def test_invalid_span_month(self):
|
||||
d = Date()
|
||||
with self.assertRaises(DateError):
|
||||
d.set(Date.QUAL_NONE, Date.MOD_SPAN, Date.CAL_GREGORIAN,
|
||||
(4, 7, 1789, False, 5, 88, 1876, False), "Text comment")
|
Loading…
Reference in New Issue
Block a user