예제 #1
0
    def test_locale_date(self):
        """
        Testing:
            %x           Locale’s appropriate date representation.
        """
        self.assertEqual(JalaliDate(1361, 6, 15).strftime('%x'), u'دوشنبه ۱۵ شهریور ۱۳۶۱')
        self.assertEqual(JalaliDate().strftime('%x'), u'جمعه ۱ فروردین ۱')
        self.assertEqual(JalaliDate.strptime(u'جمعه ۱ فروردین ۱', '%x'), JalaliDate.min)

        self.assertEqual(JalaliDate(1375, 1, 31).strftime('%x'), u'جمعه ۳۱ فروردین ۱۳۷۵')
        self.assertEqual(JalaliDate.strptime(u'جمعه ۳۱ فروردین ۱۳۷۵%', '%x%%'),
                         JalaliDate(1375, 1, 31))
    def test_locale_date(self):
        """
        Testing:
            %x           Locale’s appropriate date representation.
        """
        self.assertEqual(JalaliDate(1361, 6, 15).strftime('%x'), u'دوشنبه ۱۵ شهریور ۱۳۶۱')
        self.assertEqual(JalaliDate().strftime('%x'), u'جمعه ۱ فروردین ۱')
        self.assertEqual(JalaliDate.strptime(u'جمعه ۱ فروردین ۱', '%x'), JalaliDate.min)

        self.assertEqual(JalaliDate(1375, 1, 31).strftime('%x'), u'جمعه ۳۱ فروردین ۱۳۷۵')
        self.assertEqual(JalaliDate.strptime(u'جمعه ۳۱ فروردین ۱۳۷۵%', '%x%%'),
                         JalaliDate(1375, 1, 31))
예제 #3
0
    def test_week(self):
        """
        Testing:
            %a           Locale’s abbreviated weekday name.
            %A           Locale’s full weekday name.
            %e           ASCII Locale’s abbreviated weekday name.
            %E           ASCII Locale’s full weekday name.
            %T           ASCII English full weekday name.
            %w           Weekday as a decimal number [0(Saturday), 6(Friday)].
            %W           Week number of the year (SATURDAY as the first day of the week) as a decimal number [00, 53].
                All days in a new year preceding the first Monday are considered to be in week 0.
            %U           Week number of the year (Sunday as the first day of the week) as a decimal number [00, 53].
                All days in a new year preceding the first Sunday are considered to be in week 0.

        """

        d1 = JalaliDate(1361, 6, 15)
        self.assertEqual(d1.strftime('%a'), u'د')
        self.assertEqual(d1.strftime('%A'), u'دوشنبه')
        self.assertEqual(d1.strftime('%e'), u'D')
        self.assertEqual(d1.strftime('%E'), u'Doshanbeh')
        self.assertEqual(d1.strftime('%T'), u'Monday')
        self.assertEqual(d1.strftime('%w'), u'2')
        self.assertEqual(d1.strftime('%W'), u'24')

        for i in range(7):
            self.assert_parse_and_format(JalaliDate.min + timedelta(i),
                                         '%d %w %W %U')
            self.assertEqual(
                JalaliDate.strptime(
                    '1345 10 10 %s' % c.PERSIAN_WEEKDAY_ABBRS[i],
                    '%Y %m %d %a'), JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime(
                    '1345 10 10 %s' % c.PERSIAN_WEEKDAY_ABBRS_ASCII[i],
                    '%Y %m %d %e'), JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime(
                    '1345 10 10 %s' % c.PERSIAN_WEEKDAY_NAMES[i],
                    '%Y %m %d %A'), JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime(
                    '1345 10 10 %s' % c.PERSIAN_WEEKDAY_NAMES_ASCII[i],
                    '%Y %m %d %E'), JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime(
                    '1345 10 10 %s' % c.ENGLISH_WEEKDAY_NAMES_ASCII[i],
                    '%Y %m %d %T'), JalaliDate(year=1345, month=10, day=10))
예제 #4
0
 def test_strftime(self):
     jdate = JalaliDate.strptime(
         JalaliDate(self.leap_year, 12, 23).isoformat(), '%Y-%m-%d')
     self.assertEqual(jdate.isoformat(), '%s-12-23' % self.leap_year)
     d1 = JalaliDate(1361, 6, 15)
     self.assertEqual(d1.strftime('%Y-%m-%d'), '1361-06-15')
     self.assertEqual(d1.strftime(u'اول%Y-%m-%dآخر'), u'اول1361-06-15آخر')
예제 #5
0
    def test_strftime(self):
        jdate = JalaliDate.strptime(JalaliDate(self.leap_year, 12, 23).isoformat(), '%Y-%m-%d')
        self.assertEqual(jdate.isoformat(), '%s-12-23' % self.leap_year)
        self.assertEqual(jdate.strftime('%a%A%b%B%d%j%m%w%x%y%Y%%%W'), u'پپنجشنبهاساسفند23359125پنجشنبه 23 اسفند 1375751375%51')

        d1 = JalaliDate(1361, 6, 15)
        self.assertEqual(d1.strftime('%a'), u'د')
        self.assertEqual(d1.strftime('%A'), u'دوشنبه')
        self.assertEqual(d1.strftime('%b'), u'شه')
        self.assertEqual(d1.strftime('%B'), u'شهریور')
        self.assertEqual(d1.strftime('%d'), u'15')
        self.assertEqual(d1.strftime('%j'), u'170')
        self.assertEqual(d1.strftime('%m'), u'06')
        self.assertEqual(d1.strftime('%w'), u'2')
        self.assertEqual(d1.strftime('%W'), u'24')
        self.assertEqual(d1.strftime('%x'), u'دوشنبه 15 شهریور 1361')
        self.assertEqual(d1.strftime('%y'), u'61')
        self.assertEqual(d1.strftime('%Y'), u'1361')
        self.assertEqual(d1.strftime('%e'), u'D')
        self.assertEqual(d1.strftime('%E'), u'Doshanbeh')
        self.assertEqual(d1.strftime('%g'), u'Sh')
        self.assertEqual(d1.strftime('%G'), u'Shahrivar')
        self.assertEqual(d1.strftime('%%'), u'%')

        self.assertEqual(
            d1.strftime('%a%A%b%B%d%j%m%w%W%x%y%Y%e%E%g%G%%'),
            u'ددوشنبهشهشهریور1517006224دوشنبه 15 شهریور 1361611361DDoshanbehShShahrivar%')
        self.assertEqual(d1.strftime('%Y-%m-%d'), '1361-06-15')
        self.assertEqual(d1.strftime('اول%Y-%m-%dآخر'), 'اول1361-06-15آخر')
예제 #6
0
 def test_percent(self):
     """
     Testing:
         %%      A literal '%' character.
     """
     self.assert_parse_and_format(JalaliDate(1375, 1, 31), "%Y-%m-%d %%")
     self.assert_parse_and_format(JalaliDate(1375, 1, 31), "%Y-%m-%d %% %% %%")
     self.assertEqual(JalaliDate(1375, 1, 31).strftime("%Y %%"), "1375 %")
     self.assertEqual(JalaliDate.strptime("1375 %", "%Y %%"), JalaliDate(1375, 1, 1))
예제 #7
0
 def test_percent(self):
     """
     Testing:
         %%      A literal '%' character.
     """
     self.assert_parse_and_format(JalaliDate(1375, 1, 31), "%Y-%m-%d %%")
     self.assert_parse_and_format(JalaliDate(1375, 1, 31), "%Y-%m-%d %% %% %%")
     self.assertEqual(JalaliDate(1375, 1, 31).strftime("%Y %%"), "1375 %")
     self.assertEqual(JalaliDate.strptime("1375 %", "%Y %%"), JalaliDate(1375, 1, 1))
예제 #8
0
    def test_week(self):
        """
        Testing:
            %a           Locale’s abbreviated weekday name.
            %A           Locale’s full weekday name.
            %e           ASCII Locale’s abbreviated weekday name.
            %E           ASCII Locale’s full weekday name.
            %T           ASCII English full weekday name.
            %w           Weekday as a decimal number [0(Saturday), 6(Friday)].
            %W           Week number of the year (SATURDAY as the first day of the week) as a decimal number [00, 53].
                All days in a new year preceding the first Monday are considered to be in week 0.
            %U           Week number of the year (Sunday as the first day of the week) as a decimal number [00, 53].
                All days in a new year preceding the first Sunday are considered to be in week 0.

        """

        d1 = JalaliDate(1361, 6, 15)
        self.assertEqual(d1.strftime('%a'), u'د')
        self.assertEqual(d1.strftime('%A'), u'دوشنبه')
        self.assertEqual(d1.strftime('%e'), u'D')
        self.assertEqual(d1.strftime('%E'), u'Doshanbeh')
        self.assertEqual(d1.strftime('%T'), u'Monday')
        self.assertEqual(d1.strftime('%w'), u'2')
        self.assertEqual(d1.strftime('%W'), u'24')

        for i in range(7):
            self.assert_parse_and_format(JalaliDate.min + timedelta(i), '%d %w %W %U')
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % c.PERSIAN_WEEKDAY_ABBRS[i], '%Y %m %d %a'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % c.PERSIAN_WEEKDAY_ABBRS_ASCII[i], '%Y %m %d %e'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % c.PERSIAN_WEEKDAY_NAMES[i], '%Y %m %d %A'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % c.PERSIAN_WEEKDAY_NAMES_ASCII[i], '%Y %m %d %E'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % c.ENGLISH_WEEKDAY_NAMES_ASCII[i], '%Y %m %d %T'),
                JalaliDate(year=1345, month=10, day=10))
예제 #9
0
    def test_strptime(self):
        """
        %Z not working at all
        """
        self.assertEqual(JalaliDate.strptime('1361', '%Y'), JalaliDate(1361))
        self.assertEqual(JalaliDate.strptime('1361%C', '%Y%C'), JalaliDate(1361))
        self.assertEqual(JalaliDate.strptime(u'اریا1361گلگشت', u'اریا%Yگلگشت'), JalaliDate(1361))

        current_century = int(JalaliDate.today().year / 100) * 100
        self.assertEqual(JalaliDate.strptime('61', '%y'), JalaliDate(current_century + 61))
        self.assertEqual(JalaliDate.strptime('61%C', '%y%C'), JalaliDate(current_century + 61))
        self.assertEqual(JalaliDate.strptime(u'اریا61گلگشت', u'اریا%yگلگشت'), JalaliDate(current_century+61))
        self.assertEqual(JalaliDate.strptime(u'جمعه 01 اردیبهشت 0001', u'%A %d %B %Y'),
                         JalaliDate(month=2, day=1))
예제 #10
0
    def test_strptime(self):
        """
        %Z not working at all
        """
        self.assertEqual(JalaliDate.strptime('1361', '%Y'), JalaliDate(1361))
        self.assertEqual(JalaliDate.strptime('1361%C', '%Y%C'),
                         JalaliDate(1361))
        self.assertEqual(JalaliDate.strptime(u'اریا1361گلگشت', u'اریا%Yگلگشت'),
                         JalaliDate(1361))

        current_century = int(JalaliDate.today().year / 100) * 100
        self.assertEqual(JalaliDate.strptime('61', '%y'),
                         JalaliDate(current_century + 61))
        self.assertEqual(JalaliDate.strptime('61%C', '%y%C'),
                         JalaliDate(current_century + 61))
        self.assertEqual(JalaliDate.strptime(u'اریا61گلگشت', u'اریا%yگلگشت'),
                         JalaliDate(current_century + 61))
        self.assertEqual(
            JalaliDate.strptime(u'جمعه 01 اردیبهشت 0001', u'%A %d %B %Y'),
            JalaliDate(month=2, day=1))
예제 #11
0
    def test_day(self):
        """
        Testing:
            %d           Day of the month as a decimal number [01, 31].
            %D           Day of the month as a decimal number in persian form [۱, ۳۱].
            %K           Day of the month as a zero padded decimal number in persian form [۰۱, ۳۱].
            %j           Day of the year as a zero padded decimal number [001, 366].
            %J           Day of the year as a decimal number in persian form [۱, ۳۶۶].
            %V           Day of the year as a zero padded decimal number in persian form [..۱, ۳۶۶].

        """

        d1 = JalaliDate(1361, 6, 15)
        self.assertEqual(d1.strftime('%d'), u'15')
        self.assertEqual(d1.strftime('%j'), u'170')
        self.assertEqual(d1.strftime('%D'), u'۱۵')

        self.assertEqual(JalaliDate(1361, 6, 2).strftime('%D'), u'۲')
        self.assertEqual(JalaliDate(1361, 6, 2).strftime('%K'), u'۰۲')
        self.assertEqual(JalaliDate(1361, 6, 2).strftime('%J'), u'۱۵۷')
        self.assertEqual(JalaliDate(1361, 1, 5).strftime('%J'), u'۵')
        self.assertEqual(JalaliDate(1361, 1, 25).strftime('%V'), u'۰۲۵')
        self.assertEqual(JalaliDate(1361, 1, 5).strftime('%V'), u'۰۰۵')

        # Test days
        for i in range(1, 32):
            self.assertEqual(JalaliDate.strptime(str(i), '%d'), JalaliDate(day=i))

        self.assertRaises(ValueError, JalaliDate.strptime, '32', '%d')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%d')

        # Test day of year
        for i in range(1, 366):
            self.assertEqual(JalaliDate.strptime(str(i), '%j'), JalaliDate.fromordinal(i))
        self.assertRaises(ValueError, JalaliDate.strptime, '366', '%j')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%j')
        self.assertEqual(JalaliDate.strptime('1345 5', '%Y %j'),
                         JalaliDate(year=1345, month=1, day=5))

        self.assertEqual(JalaliDate.strptime('1302 123 3 4', '%Y %j %m %d'),
                         JalaliDate(year=1302, month=4, day=30))

        self.assertEqual(JalaliDate.strptime('1302 3 4', '%Y %m %d'),
                         JalaliDate(year=1302, month=3, day=4))

        self.assertEqual(JalaliDate.strptime(u'۲', '%D'), JalaliDate(2))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۰۲', '%D')

        self.assertEqual(JalaliDate.strptime(u'۰۲', '%K'), JalaliDate(1, 1, 2))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۲', '%K')

        self.assertEqual(JalaliDate.strptime(u'۰۲', '%K'), JalaliDate(1, 1, 2))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۲', '%K')

        self.assertEqual(JalaliDate.strptime(u'۱۵۷', '%J'), JalaliDate(1, 6, 2))
        self.assertEqual(JalaliDate.strptime(u'۷', '%J'), JalaliDate(1, 1, 7))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۰۷', '%J')
        self.assertRaises(ValueError, JalaliDate.strptime, u'۰۴۷', '%J')

        self.assertEqual(JalaliDate.strptime(u'۰۴۷', '%V'), JalaliDate(1, 2, 16))
        self.assertEqual(JalaliDate.strptime(u'۰۰۷', '%V'), JalaliDate(1, 1, 7))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۷', '%V')
        self.assertRaises(ValueError, JalaliDate.strptime, u'۴۷', '%V')


        for i in range(1, 400):
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%m-%d")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%m-%D")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%m-%K")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%j")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%J")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%V")
예제 #12
0
 def assert_parse_and_format(self, jdate ,fmt, print_=False):
     jdate_str = jdate.strftime(fmt)
     if print_:
         print(jdate_str)
     d2 = JalaliDate.strptime(jdate_str, fmt)
     self.assertEqual(jdate, d2)
예제 #13
0
    def test_month(self):
        """
        Testing:
            %m           Month as a decimal number [01, 12].
            %R           Month as a decimal number in persian form [۱, ۱۲].
            %P           Month as a zero padded decimal number in persian form [۰۱, ۱۲].
            %b           Locale’s abbreviated month name.
            %B           Locale’s full month name.
            %g           ASCII Locale’s abbreviated month name.
            %G           ASCII Locale’s full month name.

        """

        d1 = JalaliDate(1361, 6, 15)
        self.assertEqual(d1.strftime('%b'), u'شه')
        self.assertEqual(d1.strftime('%B'), u'شهریور')
        self.assertEqual(d1.strftime('%m'), u'06')
        self.assertEqual(d1.strftime('%g'), u'Sh')
        self.assertEqual(d1.strftime('%G'), u'Shahrivar')

        self.assertEqual(JalaliDate(1361, 1, 5).strftime('%R'), u'۱')
        self.assertEqual(JalaliDate(1361, 11, 5).strftime('%P'), u'۱۱')
        self.assertEqual(JalaliDate(1361, 1, 5).strftime('%P'), u'۰۱')

        self.assertEqual(JalaliDate.strptime(u'۷', '%R'), JalaliDate(1, 7, 1))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۰۷', '%R')
        self.assertEqual(JalaliDate.strptime(u'۰۷', '%P'), JalaliDate(1, 7, 1))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۷', '%P')


        # Test months
        for i in range(1, 13):
            self.assertEqual(JalaliDate.strptime(str(i), '%m'), JalaliDate(month=i))
            self.assertEqual(JalaliDate.strptime('1345 %s' % c.PERSIAN_MONTH_ABBRS[i], '%Y %b'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % c.PERSIAN_MONTH_NAMES[i], '%Y %B'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % c.PERSIAN_MONTH_ABBRS_ASCII[i], '%Y %g'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % c.PERSIAN_MONTH_NAMES_ASCII[i], '%Y %G'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % rtl(str(i), digits=True), '%Y %R'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % rtl('%.2d' % i, digits=True), '%Y %P'),
                             JalaliDate(year=1345, month=i, day=1))



        self.assertRaises(ValueError, JalaliDate.strptime, '13', '%m')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%m')
        self.assertRaises(ValueError, JalaliDate.strptime, u'1345 مت', '%Y %b')
        self.assertRaises(ValueError, JalaliDate.strptime, u'1345 شتران', '%Y %B')
        self.assertRaises(ValueError, JalaliDate.strptime, u'1345 مت', '%Y %g')
        self.assertRaises(ValueError, JalaliDate.strptime, u'1345 شتران', '%Y %G')


        start_date = JalaliDate()
        for i in range(1, 501):
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %m %d')
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %b %d')
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %B %d')
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %g %d')
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %G %d')
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %R %d')
            self.assert_parse_and_format(start_date + timedelta(days=i) , '%Y %P %d')
예제 #14
0
    def test_year(self):
        """
        Testing:
            %y           Year without century as a zero padded decimal number [00, 99].
            %n           Year without century as a decimal number in persian form [۱, ۹۹].
            %u           Year without century as a zero padded decimal number in persian form [۰۱, ۹۹].
            %Y           Year with century as a decimal number [1-3178].
            %N           Year with century as a decimal number in persian form [۱-۳۱۷۸].
            %O           Year with century as a zero padded decimal number in persian form [۰۰۰۱-۳۱۷۸].
        """

        self.assertEqual(JalaliDate(1361, 6, 15).strftime('%y'), u'61')
        self.assertEqual(JalaliDate(1361, 6, 15).strftime('%Y'), u'1361')
        self.assertEqual(JalaliDate(61, 11, 5).strftime('%N'), u'۶۱')
        self.assertEqual(JalaliDate(61, 11, 5).strftime('%O'), u'۰۰۶۱')

        self.assertEqual(JalaliDate.strptime('94', '%y'), JalaliDate(1394))
        self.assertEqual(JalaliDate.strptime('01', '%y'), JalaliDate(1301))
        self.assertEqual(JalaliDate.strptime('00', '%y'), JalaliDate(1300))
        self.assertEqual(JalaliDate.strptime(u'۹۴', '%n'), JalaliDate(1394))
        self.assertEqual(JalaliDate.strptime(u'۱', '%n'), JalaliDate(1301))
        self.assertEqual(JalaliDate.strptime(u'۰', '%n'), JalaliDate(1300))
        self.assertEqual(JalaliDate.strptime(u'۹۴', '%u'), JalaliDate(1394))
        self.assertEqual(JalaliDate.strptime(u'۰۱', '%u'), JalaliDate(1301))
        self.assertEqual(JalaliDate.strptime(u'۰۰', '%u'), JalaliDate(1300))

        self.assertEqual(JalaliDate.strptime(u'۰۰۴', '%N'),
                         JalaliDate(4, 1, 1))
        self.assertEqual(JalaliDate.strptime(u'۰۴', '%N'), JalaliDate(4, 1, 1))
        self.assertEqual(JalaliDate.strptime(u'۴', '%N'), JalaliDate(4, 1, 1))

        self.assertEqual(JalaliDate.strptime(u'۰۰۴', '%O'),
                         JalaliDate(4, 1, 1))
        self.assertEqual(JalaliDate.strptime(u'۰۴', '%O'), JalaliDate(4, 1, 1))
        self.assertEqual(JalaliDate.strptime(u'۴', '%O'), JalaliDate(4, 1, 1))

        this_century = JalaliDate(int(JalaliDate.today().year / 100) * 100)
        for i in range(99):
            self.assert_parse_and_format(
                this_century.replace(year=this_century.year + i), '%y')
            self.assert_parse_and_format(
                this_century.replace(year=this_century.year + i), '%n')
            self.assert_parse_and_format(
                this_century.replace(year=this_century.year + i), '%u')

        for i in range(1, 1001):
            self.assert_parse_and_format(JalaliDate(i), '%Y')
            self.assert_parse_and_format(JalaliDate(i), '%N')
            self.assert_parse_and_format(JalaliDate(i), '%O')
예제 #15
0
    def test_day(self):
        """
        Testing:
            %d           Day of the month as a decimal number [01, 31].
            %D           Day of the month as a decimal number in persian form [۱, ۳۱].
            %K           Day of the month as a zero padded decimal number in persian form [۰۱, ۳۱].
            %j           Day of the year as a zero padded decimal number [001, 366].
            %J           Day of the year as a decimal number in persian form [۱, ۳۶۶].
            %V           Day of the year as a zero padded decimal number in persian form [..۱, ۳۶۶].

        """

        d1 = JalaliDate(1361, 6, 15)
        self.assertEqual(d1.strftime('%d'), u'15')
        self.assertEqual(d1.strftime('%j'), u'170')
        self.assertEqual(d1.strftime('%D'), u'۱۵')

        self.assertEqual(JalaliDate(1361, 6, 2).strftime('%D'), u'۲')
        self.assertEqual(JalaliDate(1361, 6, 2).strftime('%K'), u'۰۲')
        self.assertEqual(JalaliDate(1361, 6, 2).strftime('%J'), u'۱۵۷')
        self.assertEqual(JalaliDate(1361, 1, 5).strftime('%J'), u'۵')
        self.assertEqual(JalaliDate(1361, 1, 25).strftime('%V'), u'۰۲۵')
        self.assertEqual(JalaliDate(1361, 1, 5).strftime('%V'), u'۰۰۵')

        # Test days
        for i in range(1, 32):
            self.assertEqual(JalaliDate.strptime(str(i), '%d'),
                             JalaliDate(day=i))

        self.assertRaises(ValueError, JalaliDate.strptime, '32', '%d')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%d')

        # Test day of year
        for i in range(1, 366):
            self.assertEqual(JalaliDate.strptime(str(i), '%j'),
                             JalaliDate.fromordinal(i))
        self.assertRaises(ValueError, JalaliDate.strptime, '366', '%j')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%j')
        self.assertEqual(JalaliDate.strptime('1345 5', '%Y %j'),
                         JalaliDate(year=1345, month=1, day=5))

        self.assertEqual(JalaliDate.strptime('1302 123 3 4', '%Y %j %m %d'),
                         JalaliDate(year=1302, month=4, day=30))

        self.assertEqual(JalaliDate.strptime('1302 3 4', '%Y %m %d'),
                         JalaliDate(year=1302, month=3, day=4))

        self.assertEqual(JalaliDate.strptime(u'۲', '%D'), JalaliDate(day=2))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۰۲', '%D')

        self.assertEqual(JalaliDate.strptime(u'۰۲', '%K'), JalaliDate(1, 1, 2))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۲', '%K')

        self.assertEqual(JalaliDate.strptime(u'۰۲', '%K'), JalaliDate(1, 1, 2))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۲', '%K')

        self.assertEqual(JalaliDate.strptime(u'۱۵۷', '%J'),
                         JalaliDate(1, 6, 2))
        self.assertEqual(JalaliDate.strptime(u'۷', '%J'), JalaliDate(1, 1, 7))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۰۷', '%J')
        self.assertRaises(ValueError, JalaliDate.strptime, u'۰۴۷', '%J')

        self.assertEqual(JalaliDate.strptime(u'۰۴۷', '%V'),
                         JalaliDate(1, 2, 16))
        self.assertEqual(JalaliDate.strptime(u'۰۰۷', '%V'),
                         JalaliDate(1, 1, 7))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۷', '%V')
        self.assertRaises(ValueError, JalaliDate.strptime, u'۴۷', '%V')

        for i in range(1, 400):
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%m-%d")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%m-%D")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%m-%K")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%j")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%J")
            self.assert_parse_and_format(JalaliDate.fromordinal(i), "%Y-%V")
예제 #16
0
    def assert_parse_and_format(self, jdate, fmt):
        jdate_str = jdate.strftime(fmt)

        d2 = JalaliDate.strptime(jdate_str, fmt)
        self.assertEqual(jdate, d2)
예제 #17
0
 def check_format(jdate ,fmt):
     jdate_str = jdate.strftime(fmt)
     d2 = JalaliDate.strptime(jdate_str, fmt)
     self.assertEqual(jdate, d2)
예제 #18
0
    def test_year(self):
        """
        Testing:
            %y           Year without century as a zero padded decimal number [00, 99].
            %n           Year without century as a decimal number in persian form [۱, ۹۹].
            %u           Year without century as a zero padded decimal number in persian form [۰۱, ۹۹].
            %Y           Year with century as a decimal number [1-3178].
            %N           Year with century as a decimal number in persian form [۱-۳۱۷۸].
            %O           Year with century as a zero padded decimal number in persian form [۰۰۰۱-۳۱۷۸].
        """

        self.assertEqual(JalaliDate(1361, 6, 15).strftime('%y'), u'61')
        self.assertEqual(JalaliDate(1361, 6, 15).strftime('%Y'), u'1361')
        self.assertEqual(JalaliDate(61, 11, 5).strftime('%N'), u'۶۱')
        self.assertEqual(JalaliDate(61, 11, 5).strftime('%O'), u'۰۰۶۱')

        self.assertEqual(JalaliDate.strptime('94', '%y'), JalaliDate(1394))
        self.assertEqual(JalaliDate.strptime('01', '%y'), JalaliDate(1301))
        self.assertEqual(JalaliDate.strptime('00', '%y'), JalaliDate(1300))
        self.assertEqual(JalaliDate.strptime(u'۹۴', '%n'), JalaliDate(1394))
        self.assertEqual(JalaliDate.strptime(u'۱', '%n'), JalaliDate(1301))
        self.assertEqual(JalaliDate.strptime(u'۰', '%n'), JalaliDate(1300))
        self.assertEqual(JalaliDate.strptime(u'۹۴', '%u'), JalaliDate(1394))
        self.assertEqual(JalaliDate.strptime(u'۰۱', '%u'), JalaliDate(1301))
        self.assertEqual(JalaliDate.strptime(u'۰۰', '%u'), JalaliDate(1300))

        self.assertEqual(JalaliDate.strptime(u'۰۰۴', '%N'), JalaliDate(4, 1, 1))
        self.assertEqual(JalaliDate.strptime(u'۰۴', '%N'), JalaliDate(4, 1, 1))
        self.assertEqual(JalaliDate.strptime(u'۴', '%N'), JalaliDate(4, 1, 1))

        self.assertEqual(JalaliDate.strptime(u'۰۰۴', '%O'), JalaliDate(4, 1, 1))
        self.assertEqual(JalaliDate.strptime(u'۰۴', '%O'), JalaliDate(4, 1, 1))
        self.assertEqual(JalaliDate.strptime(u'۴', '%O'), JalaliDate(4, 1, 1))


        this_century = JalaliDate(int(JalaliDate.today().year/100) * 100)
        for i in range(99):
            self.assert_parse_and_format(this_century.replace(year=this_century.year+i), '%y')
            self.assert_parse_and_format(this_century.replace(year=this_century.year+i), '%n')
            self.assert_parse_and_format(this_century.replace(year=this_century.year+i), '%u')

        for i in range(1, 1001):
            self.assert_parse_and_format(JalaliDate(i), '%Y')
            self.assert_parse_and_format(JalaliDate(i), '%N')
            self.assert_parse_and_format(JalaliDate(i), '%O')
예제 #19
0
 def test_strftime(self):
     jdate = JalaliDate.strptime(JalaliDate(self.leap_year, 12, 23).isoformat(), '%Y-%m-%d')
     self.assertEqual(jdate.isoformat(), '%s-12-23' % self.leap_year)
     d1 = JalaliDate(1361, 6, 15)
     self.assertEqual(d1.strftime('%Y-%m-%d'), '1361-06-15')
     self.assertEqual(d1.strftime(u'اول%Y-%m-%dآخر'), u'اول1361-06-15آخر')
 def assert_parse_and_format(self, jdate, fmt, print_=False):
     jdate_str = jdate.strftime(fmt)
     if print_:
         print(jdate_str)
     d2 = JalaliDate.strptime(jdate_str, fmt)
     self.assertEqual(jdate, d2)
예제 #21
0
    def test_strptime(self):
        """
        %Z not working at all
        """

        def check_format(jdate ,fmt):
            jdate_str = jdate.strftime(fmt)
            d2 = JalaliDate.strptime(jdate_str, fmt)
            self.assertEqual(jdate, d2)

        # Test Year
        self.assertEqual(JalaliDate.strptime('1361', '%Y'), JalaliDate(1361))
        self.assertEqual(JalaliDate.strptime('1361%C', '%Y%C'), JalaliDate(1361))
        self.assertEqual(JalaliDate.strptime('اریا1361گلگشت', 'اریا%Yگلگشت'), JalaliDate(1361))

        current_century = int(JalaliDate.today().year / 100) * 100
        self.assertEqual(JalaliDate.strptime('61', '%y'), JalaliDate(current_century + 61))
        self.assertEqual(JalaliDate.strptime('61%C', '%y%C'), JalaliDate(current_century + 61))
        self.assertEqual(JalaliDate.strptime('اریا61گلگشت', 'اریا%yگلگشت'), JalaliDate(current_century+61))

        # Test months
        for i in range(1, 13):
            self.assertEqual(JalaliDate.strptime(str(i), '%m'), JalaliDate(month=i))
            self.assertEqual(JalaliDate.strptime('1345 %s' % PERSIAN_MONTH_ABBRS[i], '%Y %b'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % PERSIAN_MONTH_NAMES[i], '%Y %B'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % PERSIAN_MONTH_ABBRS_ASCII[i], '%Y %g'),
                             JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(JalaliDate.strptime('1345 %s' % PERSIAN_MONTH_NAMES_ASCII[i], '%Y %G'),
                             JalaliDate(year=1345, month=i, day=1))

        self.assertRaises(ValueError, JalaliDate.strptime, '13', '%m')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%m')
        self.assertRaises(ValueError, JalaliDate.strptime, '1345 مت', '%Y %b')
        self.assertRaises(ValueError, JalaliDate.strptime, '1345 شتران', '%Y %B')
        self.assertRaises(ValueError, JalaliDate.strptime, '1345 مت', '%Y %g')
        self.assertRaises(ValueError, JalaliDate.strptime, '1345 شتران', '%Y %G')

        # Test Week and Weekdays
        for i in range(7):
            check_format(JalaliDate.min + timedelta(i), '%d %w %W %U')
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % PERSIAN_WEEKDAY_ABBRS[i], '%Y %m %d %a'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % PERSIAN_WEEKDAY_ABBRS_ASCII[i], '%Y %m %d %e'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % PERSIAN_WEEKDAY_NAMES[i], '%Y %m %d %A'),
                JalaliDate(year=1345, month=10, day=10))
            self.assertEqual(
                JalaliDate.strptime('1345 10 10 %s' % PERSIAN_WEEKDAY_NAMES_ASCII[i], '%Y %m %d %E'),
                JalaliDate(year=1345, month=10, day=10))

        # Test days
        for i in range(1, 32):
            self.assertEqual(JalaliDate.strptime(str(i), '%d'), JalaliDate(day=i))
        self.assertRaises(ValueError, JalaliDate.strptime, '32', '%d')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%d')

        # Test day of year
        for i in range(1, 366):
            self.assertEqual(JalaliDate.strptime(str(i), '%j'), JalaliDate.fromordinal(i))
        self.assertRaises(ValueError, JalaliDate.strptime, '366', '%j')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%j')
        self.assertEqual(JalaliDate.strptime('1345 5', '%Y %j'),
                         JalaliDate(year=1345, month=1, day=5))

        self.assertEqual(JalaliDate.strptime('1302 123 3 4', '%Y %j %m %d'),
                         JalaliDate(year=1302, month=4, day=30))

        self.assertEqual(JalaliDate.strptime('1302 3 4', '%Y %m %d'),
                         JalaliDate(year=1302, month=3, day=4))

        self.assertEqual(JalaliDate.strptime(u'جمعه 01 اردیبهشت 0001', '%A %d %B %Y'),
                         JalaliDate(month=2, day=1))

        self.assertEqual(JalaliDate.strptime(u'جمعه 01 فروردین 0001', '%x'),
                         JalaliDate.min)

        self.assertEqual(JalaliDate.strptime(u'جمعه 31 فروردین 1375%', '%x%%'),
                         JalaliDate(1375, 1, 31))

        check_format(JalaliDate(1375, 1, 31), "%Y-%m-%d %%")
        check_format(JalaliDate(1375, 1, 31), "%Y-%m-%d %% %% %%")

        for i in xrange(1, 400):
            check_format(JalaliDate.fromordinal(i), "%Y-%m-%d %a%A%b%B%j%w%W%e%E%g%G%x %% %% %%")

        d = JalaliDate.today().replace(month=1, day=1)
        for i in xrange(1, algorithms.days_in_year(d.year)):
            check_format(d + timedelta(i), "%y-%m-%d")
예제 #22
0
    def assert_parse_and_format(self, jdate, fmt):
        jdate_str = jdate.strftime(fmt)

        d2 = JalaliDate.strptime(jdate_str, fmt)
        self.assertEqual(jdate, d2)
예제 #23
0
    def test_month(self):
        """
        Testing:
            %m           Month as a decimal number [01, 12].
            %R           Month as a decimal number in persian form [۱, ۱۲].
            %P           Month as a zero padded decimal number in persian form [۰۱, ۱۲].
            %b           Locale’s abbreviated month name.
            %B           Locale’s full month name.
            %g           ASCII Locale’s abbreviated month name.
            %G           ASCII Locale’s full month name.

        """

        d1 = JalaliDate(1361, 6, 15)
        self.assertEqual(d1.strftime('%b'), u'شه')
        self.assertEqual(d1.strftime('%B'), u'شهریور')
        self.assertEqual(d1.strftime('%m'), u'06')
        self.assertEqual(d1.strftime('%g'), u'Sh')
        self.assertEqual(d1.strftime('%G'), u'Shahrivar')

        self.assertEqual(JalaliDate(1361, 1, 5).strftime('%R'), u'۱')
        self.assertEqual(JalaliDate(1361, 11, 5).strftime('%P'), u'۱۱')
        self.assertEqual(JalaliDate(1361, 1, 5).strftime('%P'), u'۰۱')

        self.assertEqual(JalaliDate.strptime(u'۷', '%R'), JalaliDate(1, 7, 1))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۰۷', '%R')
        self.assertEqual(JalaliDate.strptime(u'۰۷', '%P'), JalaliDate(1, 7, 1))
        self.assertRaises(ValueError, JalaliDate.strptime, u'۷', '%P')

        # Test months
        for i in range(1, 13):
            self.assertEqual(JalaliDate.strptime(str(i), '%m'),
                             JalaliDate(month=i))
            self.assertEqual(
                JalaliDate.strptime('1345 %s' % c.PERSIAN_MONTH_ABBRS[i],
                                    '%Y %b'),
                JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(
                JalaliDate.strptime('1345 %s' % c.PERSIAN_MONTH_NAMES[i],
                                    '%Y %B'),
                JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(
                JalaliDate.strptime('1345 %s' % c.PERSIAN_MONTH_ABBRS_ASCII[i],
                                    '%Y %g'),
                JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(
                JalaliDate.strptime('1345 %s' % c.PERSIAN_MONTH_NAMES_ASCII[i],
                                    '%Y %G'),
                JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(
                JalaliDate.strptime('1345 %s' % rtl(str(i), digits=True),
                                    '%Y %R'),
                JalaliDate(year=1345, month=i, day=1))
            self.assertEqual(
                JalaliDate.strptime('1345 %s' % rtl('%.2d' % i, digits=True),
                                    '%Y %P'),
                JalaliDate(year=1345, month=i, day=1))

        self.assertRaises(ValueError, JalaliDate.strptime, '13', '%m')
        self.assertRaises(ValueError, JalaliDate.strptime, '0', '%m')
        self.assertRaises(ValueError, JalaliDate.strptime, u'1345 مت', '%Y %b')
        self.assertRaises(ValueError, JalaliDate.strptime, u'1345 شتران',
                          '%Y %B')
        self.assertRaises(ValueError, JalaliDate.strptime, u'1345 مت', '%Y %g')
        self.assertRaises(ValueError, JalaliDate.strptime, u'1345 شتران',
                          '%Y %G')

        start_date = JalaliDate()
        for i in range(1, 501):
            self.assert_parse_and_format(start_date + timedelta(days=i),
                                         '%Y %m %d')
            self.assert_parse_and_format(start_date + timedelta(days=i),
                                         '%Y %b %d')
            self.assert_parse_and_format(start_date + timedelta(days=i),
                                         '%Y %B %d')
            self.assert_parse_and_format(start_date + timedelta(days=i),
                                         '%Y %g %d')
            self.assert_parse_and_format(start_date + timedelta(days=i),
                                         '%Y %G %d')
            self.assert_parse_and_format(start_date + timedelta(days=i),
                                         '%Y %R %d')
            self.assert_parse_and_format(start_date + timedelta(days=i),
                                         '%Y %P %d')
예제 #24
0
 def test_strftime(self):
     jdate = JalaliDate.strptime(JalaliDate(self.leap_year, 12, 23).isoformat(), '%Y-%m-%d')
     
     self.assertEqual(jdate.isoformat(), '%s-12-23' % self.leap_year)
     
     self.assertEqual(jdate.strftime('%a%A%b%B%d%j%m%w%x%y%Y%%%W'), u'پپنجشنبهاساسفند23359125پنجشنبه 23 اسفند 1375751375%51')