Ejemplo n.º 1
0
    def test_nullify(self):
        # set components to None
        e = EDTFDate('201x-09-17')

        e.day = None
        self.assertEqual(unicode(e), '201x-09')
        self.assertEqual(e.precision, 'month')

        e.month = None
        self.assertEqual(unicode(e), '201x')
        self.assertEqual(e.precision, 'decade')

        # again with empty strings
        e = EDTFDate('201x-09-17')

        e.day = ""
        self.assertEqual(unicode(e), '201x-09')
        self.assertEqual(e.precision, 'month')

        e.month = ""
        self.assertEqual(unicode(e), '201x')
        self.assertEqual(e.precision, 'decade')

        # clear month without clearing day
        e = EDTFDate('201x-09-17')
        e.month = ""
        self.assertEqual(unicode(e), '201x')
        self.assertEqual(e.precision, 'decade')
        e.month = 12
        self.assertEqual(unicode(e), '201x-12')
        self.assertEqual(e.precision, 'month')

        e.year = ""
        self.assertEqual(unicode(e), '')
Ejemplo n.º 2
0
    def test_attributes(self):
        e = EDTFDate('2012-09-17')
        self.assertEqual(e.year, '2012')
        self.assertEqual(e.month, 9)
        self.assertEqual(e.month_string, '09')
        self.assertEqual(e.day, 17)
        self.assertEqual(e.day_string, '17')

        e = EDTFDate('2xuu-uu-uu')
        self.assertEqual(e.year, '2xuu')
        self.assertEqual(e.month, 'uu')
        self.assertEqual(e.month_string, 'uu')
        self.assertEqual(e.day, 'uu')
        self.assertEqual(e.day_string, 'uu')

        e = EDTFDate('2xuu')
        self.assertEqual(e.year, '2xuu')
        self.assertEqual(e.month, None)
        self.assertEqual(e.month_string, 'xx')
        self.assertEqual(e.day, None)
        self.assertEqual(e.day_string, 'xx')

        e = EDTFDate('2012-09-17')
        e.year = '2040'
        self.assertEqual(unicode(e), '2040-09-17')
        e.month = '04'
        self.assertEqual(unicode(e), '2040-04-17')
        e.day = '26'
        self.assertEqual(unicode(e), '2040-04-26')

        e.year = 1924
        e.month = 3
        e.day = 2
        self.assertEqual(unicode(e), '1924-03-02')
Ejemplo n.º 3
0
 def test_iso_range(self):
     for i, o in [
         ('', (None, None)),
         ('2001-02-03', ('2001-02-03', '2001-02-03')),
         ('2008-12', ('2008-12-01', '2008-12-31')),
         ('2008', ('2008-01-01', '2008-12-31')),
         ('-0999', (MIN_ISO, MIN_ISO)),  # can we do better?
         ('0000', (MIN_ISO, MIN_ISO)),
         ('1984?', ('1983-07-01', '1985-06-30')),
         ('1985~', ('1984-07-01', '1986-06-30')),
         ('1984?~', ('1983-01-01', '1985-12-31')),
         ('2004-06?', ('2004-05-16', '2004-07-16')),
         ('2004-06?~', ('2004-04-30', '2004-08-01')),
         ('2000-01-01~', ('1999-12-31', '2000-01-02')),
         ('2000-01-01?~', ('1999-12-30', '2000-01-03')),
         ('1984-12-31~', ('1984-12-30', '1985-01-01')),
         ('1984-01~', ('1983-12-16', '1984-02-16')),
         ('1984-12~', ('1984-11-15', '1985-01-16')),
         ('199u', ('1990-01-01', '1999-12-31')),
         ('190u', ('1900-01-01', '1909-12-31')),
         ('19uu', ('1900-01-01', '1999-12-31')),
         ('1999-uu', ('1999-01-01', '1999-12-31')),
         ('1999-uu-uu', ('1999-01-01', '1999-12-31')),
         ('y170000002', (MAX_ISO, MAX_ISO)),  # can we do better?
         ('y-170000002', (MIN_ISO, MIN_ISO)),
         ('2001-21', ('2001-03-01', '2001-05-31')),  # northern hemisphere
         ('2001-22', ('2001-06-01', '2001-08-31')),  # northern hemisphere
         ('2001-23', ('2001-09-01', '2001-11-30')),  # northern hemisphere
         ('2001-24', ('2001-12-01', '2001-12-31')),  # northern hemisphere
         ('156u-12-25', ('1560-12-25', '1569-12-25')),
         ('15uu-12-25', ('1500-12-25', '1599-12-25')),
         ('15uu-12-uu', ('1500-12-01', '1599-12-31')),
         ('1560-uu-25', ('1560-01-25', '1560-12-25')),
         ('198x', ('1980-01-01', '1989-12-31')),
         ('19xx', ('1900-01-01', '1999-12-31')),
         ('1xxx', ('1000-01-01', '1999-12-31')),
         ('2001-21~', ('2000-12-07', '2001-08-23')),  # northern hemisphere
         ('2001-22~', ('2001-03-09', '2001-11-23')),  # northern hemisphere
         ('2001-23~', ('2001-06-09', '2002-02-22')),  # northern hemisphere
         ('2001-24~', ('2001-09-08', '2002-03-25')),  # northern hemisphere
         ('156u-12-25~', ('1560-12-24', '1569-12-26')),
         ('15uu-12-25~', ('1500-12-24', '1599-12-26')),
         ('15uu-12-uu~', ('1500-11-30', '1600-01-01')),
         ('1560-uu-25~', ('1560-01-24', '1560-12-26')),
         ('198x~', ('1975-01-01', '1994-12-31')),
         ('19xx~', ('1850-01-01', '2049-12-31')),
         ('1xxx~', ('0500-01-01', '2499-12-31')),
         ('0999-03~', ('0999-02-13', '0999-04-16')),
     ]:
         e = EDTFDate(i)
         o1, o2 = o
         earl = e.date_earliest()
         late = e.date_latest()
         if earl:
             self.assertEqual(earl.isoformat(), o1)
         if late:
             self.assertEqual(late.isoformat(), o2)
Ejemplo n.º 4
0
    def test_negative_year(self):
        e = EDTFDate('-0999')
        self.assertEqual(unicode(e), '-0999')

        # -0 is a different year to 0
        e = EDTFDate('0000')
        self.assertEqual(unicode(e), '0000')
        e.is_negative = True
        self.assertEqual(unicode(e), '-0000') # TODO: no such year; shouldn't be allowed.
Ejemplo n.º 5
0
    def test_long_year(self):
        e = EDTFDate('y1700000002')
        self.assertEqual(e.precision, 'year')
        self.assertEqual(e.is_negative, False)
        e.is_negative = True
        self.assertEqual(e.year, 'y-1700000002')

        e = EDTFDate('y-1700000002')
        self.assertEqual(e.precision, 'year')
        self.assertEqual(e.is_negative, True)
        e.is_negative = False
        self.assertEqual(e.year, 'y1700000002')
Ejemplo n.º 6
0
 def test_approximate(self):
     for i, o, o2 in [
         ('2010-09-03', False, '2010-09-03~'),
         ('2010-09-03~', True, '2010-09-03'),
         ('2010-09-03?~', True, '2010-09-03?'),
     ]:
         e = EDTFDate(i)
         self.assertEqual(e.is_approximate, o)
         self.assertEqual(unicode(e), i)
         #change the value
         e.is_approximate = not o
         self.assertAlmostEqual(unicode(e), o2)
Ejemplo n.º 7
0
 def test_sort_value(self):
     for i, o1, o2 in [
         ('', None, None),
         ('2001-02-03', '2001-02-03', '2001-02-03'),
         ('2008-12', '2008-12-31', '2008-12-01'),
         ('2008', '2008-12-31', '2008-01-01'),
         ('-0999', MIN_ISO, MIN_ISO),  # can we do better?
         ('0000', MIN_ISO, MIN_ISO),
         ('1984?', '1984-12-31', '1984-01-01'),
         ('1984~', '1984-12-31', '1984-01-01'),
         ('1984?~', '1984-12-31', '1984-01-01'),
         ('2004-06?', '2004-06-30', '2004-06-01'),
         ('2004-06?~', '2004-06-30', '2004-06-01'),
         ('2000-01-01~', '2000-01-01', '2000-01-01'),
         ('2000-01-01?~', '2000-01-01', '2000-01-01'),
         ('1984-12-31~', '1984-12-31', '1984-12-31'),
         ('1984-01~', '1984-01-31', '1984-01-01'),
         ('1984-12~', '1984-12-31', '1984-12-01'),
         ('199u', '1999-12-31', '1990-01-01'),
         ('190u', '1909-12-31', '1900-01-01'),
         ('19uu', '1999-12-31', '1900-01-01'),
         ('1999-uu', '1999-12-31', '1999-01-01'),
         ('1999-uu-uu', '1999-12-31', '1999-01-01'),
         ('y170000002', MAX_ISO, MAX_ISO),  # can we do better?
         ('y-170000002', MIN_ISO, MIN_ISO),
         ('2001-21', '2001-05-31', '2001-03-01'),  # northern hemisphere
         ('2001-22', '2001-08-31', '2001-06-01'),  # northern hemisphere
         ('2001-23', '2001-11-30', '2001-09-01'),  # northern hemisphere
         ('2001-24', '2001-12-31', '2001-12-01'),  # northern hemisphere
         ('156u-12-25', '1569-12-25', '1560-12-25'),
         ('15uu-12-25', '1599-12-25', '1500-12-25'),
         ('15uu-12-uu', '1599-12-31', '1500-12-01'),
         ('1560-uu-25', '1560-12-25', '1560-01-25'),
         ('198x', '1989-12-31', '1980-01-01'),
         ('19xx', '1999-12-31', '1900-01-01'),
         ('1xxx', '1999-12-31', '1000-01-01'),
         ('2001-21~', '2001-05-31', '2001-03-01'),  # northern hemisphere
     ]:
         e = EDTFDate(i)
         earl = e.sort_date_earliest()
         late = e.sort_date_latest()
         if earl:
             self.assertEqual(earl.isoformat(), o2)
         if late:
             self.assertEqual(late.isoformat(), o1)
Ejemplo n.º 8
0
    def test_season(self):
        e = EDTFDate('2001-21')
        self.assertEqual(e.precision, "season")
        self.assertEqual(e.season, "spring")
        self.assertEqual(e.month, 21)

        e = EDTFDate('2001-22')
        self.assertEqual(e.precision, "season")
        self.assertEqual(e.season, "summer")
        self.assertEqual(e.month, 22)

        e = EDTFDate('2001-23')
        self.assertEqual(e.precision, "season")
        self.assertEqual(e.season, "autumn")
        self.assertEqual(e.month, 23)

        e = EDTFDate('2001-24')
        self.assertEqual(e.precision, "season")
        self.assertEqual(e.season, "winter")
        self.assertEqual(e.month, 24)

        e.season = "summer"
        self.assertEqual(e.precision, "season")
        self.assertEqual(e.season, "summer")
        self.assertEqual(e.month, 22)

        e.season = "fall"
        self.assertEqual(e.precision, "season")
        self.assertEqual(e.season, "autumn")
        self.assertEqual(e.month, 23)

        e.month = 11
        self.assertEqual(e.precision, "month")
        self.assertEqual(e.season, None)
        self.assertEqual(e.month, 11)

        e.month = 21
        self.assertEqual(e.season, "spring")
        self.assertEqual(e.precision, "season")
Ejemplo n.º 9
0
    def test_unspecified(self):
        e = EDTFDate('199u')
        self.assertEqual(unicode(e), '199u')
        self.assertEqual(e.precision, "year")

        e = EDTFDate('19uu')
        self.assertEqual(unicode(e), '19uu')
        self.assertEqual(e.precision, "year")

        e = EDTFDate('1999-uu')
        self.assertEqual(unicode(e), '1999-uu')
        self.assertEqual(e.precision, "month")

        e = EDTFDate('1999-01-uu')
        self.assertEqual(unicode(e), '1999-01-uu')
        self.assertEqual(e.precision, "day")

        e = EDTFDate('1999-uu-uu')
        self.assertEqual(unicode(e), '1999-uu-uu')
        self.assertEqual(e.precision, "day")

        e = EDTFDate('1999-12-16')
        self.assertEqual(unicode(e), '1999-12-16')
        e.month = 'uu'
        self.assertEqual(unicode(e), '1999-uu-16')
        self.assertEqual(e.precision, "day")

        e = EDTFDate('156u-12-25')
        self.assertEqual(unicode(e), '156u-12-25')
        self.assertEqual(e.precision, "day")

        e = EDTFDate('15uu-12-25')
        self.assertEqual(unicode(e), '15uu-12-25')
        self.assertEqual(e.precision, "day")

        e = EDTFDate('15uu-12-uu')
        self.assertEqual(unicode(e), '15uu-12-uu')
        self.assertEqual(e.precision, "day")

        e = EDTFDate('1560-uu-25')
        self.assertEqual(unicode(e), '1560-uu-25')
        self.assertEqual(e.precision, "day")