|
2 | 2 | # -*- coding: utf-8 -*-
|
3 | 3 |
|
4 | 4 | import unittest
|
5 |
| -from datetime import datetime |
| 5 | +from datetime import datetime, timedelta |
6 | 6 | from time import sleep
|
7 | 7 | import pytz
|
8 | 8 | from croniter import croniter, CroniterBadDateError, CroniterBadCronError, CroniterNotAlphaError
|
@@ -835,6 +835,72 @@ def test_milliseconds(self):
|
835 | 835 | def test_invalid_zerorepeat(self):
|
836 | 836 | self.assertFalse(croniter.is_valid('*/0 * * * *'))
|
837 | 837 |
|
| 838 | + def test_weekday_range(self): |
| 839 | + ret = [] |
| 840 | + # jan 14 is monday |
| 841 | + dt = datetime(2019, 1, 14, 0, 0, 0, 0) |
| 842 | + for i in range(10): |
| 843 | + c = croniter("0 0 * * 2-4 *", start_time=dt) |
| 844 | + dt = datetime.utcfromtimestamp(c.get_next()) |
| 845 | + ret.append(dt) |
| 846 | + dt += timedelta(days=1) |
| 847 | + sret = ["{0}".format(r) for r in ret] |
| 848 | + self.assertEquals( |
| 849 | + sret, |
| 850 | + ['2019-01-15 00:00:00', |
| 851 | + '2019-01-16 00:00:01', |
| 852 | + '2019-01-17 00:00:02', |
| 853 | + '2019-01-22 00:00:00', |
| 854 | + '2019-01-23 00:00:01', |
| 855 | + '2019-01-24 00:00:02', |
| 856 | + '2019-01-29 00:00:00', |
| 857 | + '2019-01-30 00:00:01', |
| 858 | + '2019-01-31 00:00:02', |
| 859 | + '2019-02-05 00:00:00']) |
| 860 | + ret = [] |
| 861 | + dt = datetime(2019, 1, 14, 0, 0, 0, 0) |
| 862 | + for i in range(10): |
| 863 | + c = croniter("0 0 * * 1-7 *", start_time=dt) |
| 864 | + dt = datetime.utcfromtimestamp(c.get_next()) |
| 865 | + ret.append(dt) |
| 866 | + dt += timedelta(days=1) |
| 867 | + sret = ["{0}".format(r) for r in ret] |
| 868 | + self.assertEquals( |
| 869 | + sret, |
| 870 | + ['2019-01-14 00:00:01', |
| 871 | + '2019-01-15 00:00:02', |
| 872 | + '2019-01-16 00:00:03', |
| 873 | + '2019-01-17 00:00:04', |
| 874 | + '2019-01-18 00:00:05', |
| 875 | + '2019-01-19 00:00:06', |
| 876 | + '2019-01-20 00:00:07', |
| 877 | + '2019-01-21 00:00:08', |
| 878 | + '2019-01-22 00:00:09', |
| 879 | + '2019-01-23 00:00:10']) |
| 880 | + |
| 881 | + def test_issue_monsun_117(self): |
| 882 | + ret = [] |
| 883 | + dt = datetime(2019, 1, 14, 0, 0, 0, 0) |
| 884 | + for i in range(10): |
| 885 | + # c = croniter("0 0 * * Mon-Sun *", start_time=dt) |
| 886 | + c = croniter("0 0 * * Wed-Sun *", start_time=dt) |
| 887 | + dt = datetime.utcfromtimestamp(c.get_next()) |
| 888 | + ret.append(dt) |
| 889 | + dt += timedelta(days=1) |
| 890 | + sret = ["{0}".format(r) for r in ret] |
| 891 | + self.assertEquals( |
| 892 | + sret, |
| 893 | + ['2019-01-16 00:00:00', |
| 894 | + '2019-01-17 00:00:01', |
| 895 | + '2019-01-18 00:00:02', |
| 896 | + '2019-01-19 00:00:03', |
| 897 | + '2019-01-20 00:00:04', |
| 898 | + '2019-01-23 00:00:00', |
| 899 | + '2019-01-24 00:00:01', |
| 900 | + '2019-01-25 00:00:02', |
| 901 | + '2019-01-26 00:00:03', |
| 902 | + '2019-01-27 00:00:04']) |
| 903 | + |
838 | 904 |
|
839 | 905 | if __name__ == '__main__':
|
840 | 906 | unittest.main()
|
0 commit comments