vContent

tests/qualifiers.py

78:99fb5e99498c
2017-10-22 Paul Boddie Removed superfluous sort operation. Made convert_positions a plain function. Removed superfluous abs operation. Removed superfluous test against the start of the selection period.
     1 #!/usr/bin/env python     2      3 """     4 Test qualifiers for recurring events.     5      6 Copyright (C) 2014, 2015, 2017 Paul Boddie <paul@boddie.org.uk>     7      8 This program is free software; you can redistribute it and/or modify it under     9 the terms of the GNU General Public License as published by the Free Software    10 Foundation; either version 3 of the License, or (at your option) any later    11 version.    12     13 This program is distributed in the hope that it will be useful, but WITHOUT    14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    15 FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more    16 details.    17     18 You should have received a copy of the GNU General Public License along with    19 this program.  If not, see <http://www.gnu.org/licenses/>.    20 """    21     22 from vRecurrence import *    23     24 def show(l):    25     for x in l:    26         print x    27     print    28     29 qualifiers = [    30     ("YEARLY", {"interval" : 1})    31     ]    32     33 l = order_qualifiers(qualifiers)    34 show(l)    35 dt = (1997, 11, 2)    36 l = get_datetime_structure(dt)    37 show(l)    38 l = combine_datetime_with_qualifiers(dt, qualifiers)    39 show(l)    40     41 s = get_selector(dt, qualifiers)    42 l = s.materialise(dt, (2003, 12, 24))    43 print len(l) == 7, 7, len(l)    44 print l[0] == (1997, 11, 2), (1997, 11, 2), l[0]    45 print l[-1] == (2003, 11, 2), (2003, 11, 2), l[-1]    46 print    47     48 qualifiers = [    49     ("YEARLY", {"interval" : 2}),    50     ("BYMONTH", {"values" : [1]}),    51     ("BYDAY", {"values" : [(6, None)]}),    52     ("BYHOUR", {"values" : [8, 9]}),    53     ("BYMINUTE", {"values" : [30]})    54     ]    55     56 l = order_qualifiers(qualifiers)    57 show(l)    58 dt = (1997, 1, 5, 8, 30, 0)    59 l = get_datetime_structure(dt)    60 show(l)    61 l = combine_datetime_with_qualifiers(dt, qualifiers)    62 show(l)    63     64 s = get_selector(dt, qualifiers)    65 l = s.materialise(dt, (2003, 12, 24, 0, 0, 0))    66 print len(l) == 32, 32, len(l)    67 print l[0] == (1997, 1, 11, 8, 30, 0), (1997, 1, 11, 8, 30, 0), l[0]    68 print l[-1] == (2003, 1, 25, 9, 30, 0), (2003, 1, 25, 9, 30, 0), l[-1]    69 print    70     71 qualifiers = [    72     ("DAILY", {"interval" : 1})    73     ]    74     75 l = order_qualifiers(qualifiers)    76 show(l)    77 dt = (1997, 9, 2, 9, 0, 0)    78 l = get_datetime_structure(dt)    79 show(l)    80 l = combine_datetime_with_qualifiers(dt, qualifiers)    81 show(l)    82     83 s = get_selector(dt, qualifiers)    84 l = s.materialise(dt, (1997, 12, 24), 10)    85 print len(l) == 10, 10, len(l)    86 print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]    87 print l[-1] == (1997, 9, 11, 9, 0, 0), (1997, 9, 11, 9, 0, 0), l[-1]    88 print    89     90 qualifiers = [    91     ("DAILY", {"interval" : 1})    92     ]    93     94 l = order_qualifiers(qualifiers)    95 show(l)    96 dt = (1997, 9, 2, 9, 0, 0)    97 l = get_datetime_structure(dt)    98 show(l)    99 l = combine_datetime_with_qualifiers(dt, qualifiers)   100 show(l)   101    102 s = get_selector(dt, qualifiers)   103 l = s.materialise(dt, (1997, 12, 24, 0, 0, 0))   104 print len(l) == 113, 113, len(l)   105 print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]   106 print l[-1] == (1997, 12, 23, 9, 0, 0), (1997, 12, 23, 9, 0, 0), l[-1]   107 print   108    109 qualifiers = [   110     ("DAILY", {"interval" : 2})   111     ]   112    113 l = order_qualifiers(qualifiers)   114 show(l)   115 dt = (1997, 9, 2, 9, 0, 0)   116 l = get_datetime_structure(dt)   117 show(l)   118 l = combine_datetime_with_qualifiers(dt, qualifiers)   119 show(l)   120    121 s = get_selector(dt, qualifiers)   122 l = s.materialise(dt, (1997, 12, 24, 0, 0, 0))   123 print len(l) == 57, 57, len(l)   124 print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]   125 print l[-1] == (1997, 12, 23, 9, 0, 0), (1997, 12, 23, 9, 0, 0), l[-1]   126 print   127    128 qualifiers = [   129     ("WEEKLY", {"interval" : 1})   130     ]   131    132 l = order_qualifiers(qualifiers)   133 show(l)   134 dt = (1997, 9, 2, 9, 0, 0)   135 l = get_datetime_structure(dt)   136 show(l)   137 l = combine_datetime_with_qualifiers(dt, qualifiers)   138 show(l)   139    140 s = get_selector(dt, qualifiers)   141 l = s.materialise(dt, (1997, 12, 24, 0, 0, 0))   142 print len(l) == 17, 17, len(l)   143 print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]   144 print l[-1] == (1997, 12, 23, 9, 0, 0), (1997, 12, 23, 9, 0, 0), l[-1]   145 print   146    147 qualifiers = [   148     ("DAILY", {"interval" : 10})   149     ]   150    151 l = order_qualifiers(qualifiers)   152 show(l)   153 dt = (1997, 9, 2, 9, 0, 0)   154 l = get_datetime_structure(dt)   155 show(l)   156 l = combine_datetime_with_qualifiers(dt, qualifiers)   157 show(l)   158    159 s = get_selector(dt, qualifiers)   160 l = s.materialise(dt, (1997, 12, 24, 0, 0, 0), 5)   161 print len(l) == 5, 5, len(l)   162 print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]   163 print l[-1] == (1997, 10, 12, 9, 0, 0), (1997, 10, 12, 9, 0, 0), l[-1]   164 print   165    166 qualifiers = [   167     ("YEARLY", {"interval" : 1}),   168     ("BYMONTH", {"values" : [1]}),   169     ("BYDAY", {"values" : [(1, None), (2, None), (3, None), (4, None), (5, None), (6, None), (7, None)]})   170     ]   171    172 l = order_qualifiers(qualifiers)   173 show(l)   174 dt = (1998, 1, 1, 9, 0, 0)   175 l = get_datetime_structure(dt)   176 show(l)   177 l = combine_datetime_with_qualifiers(dt, qualifiers)   178 show(l)   179    180 s = get_selector(dt, qualifiers)   181 l = s.materialise(dt, (2000, 1, 31, 14, 0, 0))   182 print len(l) == 93, 93, len(l)   183 print l[0] == (1998, 1, 1, 9, 0, 0), (1998, 1, 1, 9, 0, 0), l[0]   184 print l[-1] == (2000, 1, 31, 9, 0, 0), (2000, 1, 31, 9, 0, 0), l[-1]   185 print   186    187 qualifiers = [   188     ("DAILY", {"interval" : 1}),   189     ("BYMONTH", {"values" : [1]})   190     ]   191    192 l = order_qualifiers(qualifiers)   193 show(l)   194 dt = (1998, 1, 1, 9, 0, 0)   195 l = get_datetime_structure(dt)   196 show(l)   197 l = combine_datetime_with_qualifiers(dt, qualifiers)   198 show(l)   199    200 s = get_selector(dt, qualifiers)   201 l = s.materialise(dt, (2000, 1, 31, 14, 0, 0))   202 print len(l) == 93, 93, len(l)   203 print l[0] == (1998, 1, 1, 9, 0, 0), (1998, 1, 1, 9, 0, 0), l[0]   204 print l[-1] == (2000, 1, 31, 9, 0, 0), (2000, 1, 31, 9, 0, 0), l[-1]   205 print   206    207 qualifiers = [   208     ("WEEKLY", {"interval" : 1})   209     ]   210    211 l = order_qualifiers(qualifiers)   212 show(l)   213 dt = (1997, 9, 2, 9, 0, 0)   214 l = get_datetime_structure(dt)   215 show(l)   216 l = combine_datetime_with_qualifiers(dt, qualifiers)   217 show(l)   218    219 s = get_selector(dt, qualifiers)   220 l = s.materialise(dt, (1997, 12, 24, 0, 0, 0), 10)   221 print len(l) == 10, 10, len(l)   222 print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]   223 print l[-1] == (1997, 11, 4, 9, 0, 0), (1997, 11, 4, 9, 0, 0), l[-1]   224 print   225    226 qualifiers = [   227     ("WEEKLY", {"interval" : 1})   228     ]   229    230 l = order_qualifiers(qualifiers)   231 show(l)   232 dt = (1997, 9, 2, 9, 0, 0)   233 l = get_datetime_structure(dt)   234 show(l)   235 l = combine_datetime_with_qualifiers(dt, qualifiers)   236 show(l)   237    238 s = get_selector(dt, qualifiers)   239 l = s.materialise(dt, (1997, 12, 24, 0, 0, 0))   240 print len(l) == 17, 17, len(l)   241 print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]   242 print l[-1] == (1997, 12, 23, 9, 0, 0), (1997, 12, 23, 9, 0, 0), l[-1]   243 print   244    245 qualifiers = [   246     ("WEEKLY", {"interval" : 2})   247     ]   248    249 l = order_qualifiers(qualifiers)   250 show(l)   251 dt = (1997, 9, 2, 9, 0, 0)   252 l = get_datetime_structure(dt)   253 show(l)   254 l = combine_datetime_with_qualifiers(dt, qualifiers)   255 show(l)   256    257 s = get_selector(dt, qualifiers)   258 l = s.materialise(dt, (1998, 2, 20, 0, 0, 0))   259 print len(l) == 13, 13, len(l)   260 print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]   261 print l[-1] == (1998, 2, 17, 9, 0, 0), (1998, 2, 17, 9, 0, 0), l[-1]   262 print   263    264 qualifiers = [   265     ("WEEKLY", {"interval" : 1}),   266     ("BYDAY", {"values" : [(2, None), (4, None)]})   267     ]   268    269 l = order_qualifiers(qualifiers)   270 show(l)   271 dt = (1997, 9, 2, 9, 0, 0)   272 l = get_datetime_structure(dt)   273 show(l)   274 l = combine_datetime_with_qualifiers(dt, qualifiers)   275 show(l)   276    277 s = get_selector(dt, qualifiers)   278 l = s.materialise(dt, (1997, 10, 7, 9, 0, 0))   279 print len(l) == 10, 10, len(l)   280 print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]   281 print l[-1] == (1997, 10, 2, 9, 0, 0), (1997, 10, 2, 9, 0, 0), l[-1]   282 print   283    284 qualifiers = [   285     ("WEEKLY", {"interval" : 1}),   286     ("BYDAY", {"values" : [(2, None), (4, None)]})   287     ]   288    289 l = order_qualifiers(qualifiers)   290 show(l)   291 dt = (1997, 9, 2, 9, 0, 0)   292 l = get_datetime_structure(dt)   293 show(l)   294 l = combine_datetime_with_qualifiers(dt, qualifiers)   295 show(l)   296    297 s = get_selector(dt, qualifiers)   298 l = s.materialise(dt, (1997, 12, 24, 0, 0, 0), 10)   299 print len(l) == 10, 10, len(l)   300 print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]   301 print l[-1] == (1997, 10, 2, 9, 0, 0), (1997, 10, 2, 9, 0, 0), l[-1]   302 print   303    304 qualifiers = [   305     ("WEEKLY", {"interval" : 2}),   306     ("BYDAY", {"values" : [(1, None), (3, None), (5, None)]})   307     ]   308    309 l = order_qualifiers(qualifiers)   310 show(l)   311 dt = (1997, 9, 1, 9, 0, 0)   312 l = get_datetime_structure(dt)   313 show(l)   314 l = combine_datetime_with_qualifiers(dt, qualifiers)   315 show(l)   316    317 s = get_selector(dt, qualifiers)   318 l = s.materialise(dt, (1997, 12, 24, 0, 0, 0))   319 print len(l) == 25, 25, len(l)   320 print l[0] == (1997, 9, 1, 9, 0, 0), (1997, 9, 1, 9, 0, 0), l[0]   321 print l[-1] == (1997, 12, 22, 9, 0, 0), (1997, 12, 22, 9, 0, 0), l[-1]   322 print   323    324 qualifiers = [   325     ("WEEKLY", {"interval" : 2}),   326     ("BYDAY", {"values" : [(2, None), (4, None)]})   327     ]   328    329 l = order_qualifiers(qualifiers)   330 show(l)   331 dt = (1997, 9, 2, 9, 0, 0)   332 l = get_datetime_structure(dt)   333 show(l)   334 l = combine_datetime_with_qualifiers(dt, qualifiers)   335 show(l)   336    337 s = get_selector(dt, qualifiers)   338 l = s.materialise(dt, (1997, 12, 24, 0, 0, 0), 8)   339 print len(l) == 8, 8, len(l)   340 print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]   341 print l[-1] == (1997, 10, 16, 9, 0, 0), (1997, 10, 16, 9, 0, 0), l[-1]   342 print   343    344 qualifiers = [   345     ("MONTHLY", {"interval" : 1}),   346     ("BYDAY", {"values" : [(5, 1)]})   347     ]   348    349 l = order_qualifiers(qualifiers)   350 show(l)   351 dt = (1997, 9, 5, 9, 0, 0)   352 l = get_datetime_structure(dt)   353 show(l)   354 l = combine_datetime_with_qualifiers(dt, qualifiers)   355 show(l)   356    357 s = get_selector(dt, qualifiers)   358 l = s.materialise(dt, (1998, 12, 24, 0, 0, 0), 10)   359 print len(l) == 10, 10, len(l)   360 print l[0] == (1997, 9, 5, 9, 0, 0), (1997, 9, 5, 9, 0, 0), l[0]   361 print l[-1] == (1998, 6, 5, 9, 0, 0), (1998, 6, 5, 9, 0, 0), l[-1]   362 print   363    364 qualifiers = [   365     ("MONTHLY", {"interval" : 1}),   366     ("BYDAY", {"values" : [(5, 1)]})   367     ]   368    369 l = order_qualifiers(qualifiers)   370 show(l)   371 dt = (1997, 9, 5, 9, 0, 0)   372 l = get_datetime_structure(dt)   373 show(l)   374 l = combine_datetime_with_qualifiers(dt, qualifiers)   375 show(l)   376    377 s = get_selector(dt, qualifiers)   378 l = s.materialise(dt, (1997, 12, 24, 0, 0, 0))   379 print len(l) == 4, 4, len(l)   380 print l[0] == (1997, 9, 5, 9, 0, 0), (1997, 9, 5, 9, 0, 0), l[0]   381 print l[-1] == (1997, 12, 5, 9, 0, 0), (1997, 12, 5, 9, 0, 0), l[-1]   382 print   383    384 qualifiers = [   385     ("MONTHLY", {"interval" : 2}),   386     ("BYDAY", {"values" : [(7, 1), (7, -1)]})   387     ]   388    389 l = order_qualifiers(qualifiers)   390 show(l)   391 dt = (1997, 9, 7, 9, 0, 0)   392 l = get_datetime_structure(dt)   393 show(l)   394 l = combine_datetime_with_qualifiers(dt, qualifiers)   395 show(l)   396    397 s = get_selector(dt, qualifiers)   398 l = s.materialise(dt, (1998, 12, 24, 0, 0, 0), 10)   399 print len(l) == 10, 10, len(l)   400 print l[0] == (1997, 9, 7, 9, 0, 0), (1997, 9, 7, 9, 0, 0), l[0]   401 print l[-1] == (1998, 5, 31, 9, 0, 0), (1998, 5, 31, 9, 0, 0), l[-1]   402 print   403    404 qualifiers = [   405     ("MONTHLY", {"interval" : 1}),   406     ("BYDAY", {"values" : [(1, -2)]})   407     ]   408    409 l = order_qualifiers(qualifiers)   410 show(l)   411 dt = (1997, 9, 22, 9, 0, 0)   412 l = get_datetime_structure(dt)   413 show(l)   414 l = combine_datetime_with_qualifiers(dt, qualifiers)   415 show(l)   416    417 s = get_selector(dt, qualifiers)   418 l = s.materialise(dt, (1998, 12, 24, 0, 0, 0), 6)   419 print len(l) == 6, 6, len(l)   420 print l[0] == (1997, 9, 22, 9, 0, 0), (1997, 9, 22, 9, 0, 0), l[0]   421 print l[-1] == (1998, 2, 16, 9, 0, 0), (1998, 2, 16, 9, 0, 0), l[-1]   422 print   423    424 qualifiers = [   425     ("MONTHLY", {"interval" : 1}),   426     ("BYMONTHDAY", {"values" : [-3]})   427     ]   428    429 l = order_qualifiers(qualifiers)   430 show(l)   431 dt = (1997, 9, 28, 9, 0, 0)   432 l = get_datetime_structure(dt)   433 show(l)   434 l = combine_datetime_with_qualifiers(dt, qualifiers)   435 show(l)   436    437 s = get_selector(dt, qualifiers)   438 l = s.materialise(dt, (1998, 12, 24, 0, 0, 0), 6)   439 print len(l) == 6, 6, len(l)   440 print l[0] == (1997, 9, 28, 9, 0, 0), (1997, 9, 28, 9, 0, 0), l[0]   441 print l[-1] == (1998, 2, 26, 9, 0, 0), (1998, 2, 26, 9, 0, 0), l[-1]   442 print   443    444 qualifiers = [   445     ("MONTHLY", {"interval" : 1}),   446     ("BYMONTHDAY", {"values" : [15, 2]}) # test ordering   447     ]   448    449 l = order_qualifiers(qualifiers)   450 show(l)   451 dt = (1997, 9, 2, 9, 0, 0)   452 l = get_datetime_structure(dt)   453 show(l)   454 l = combine_datetime_with_qualifiers(dt, qualifiers)   455 show(l)   456    457 s = get_selector(dt, qualifiers)   458 l = s.materialise(dt, (1998, 12, 24, 0, 0, 0), 10)   459 print len(l) == 10, 10, len(l)   460 print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]   461 print l[-1] == (1998, 1, 15, 9, 0, 0), (1998, 1, 15, 9, 0, 0), l[-1]   462 print   463    464 qualifiers = [   465     ("MONTHLY", {"interval" : 1}),   466     ("BYMONTHDAY", {"values" : [1, -1]})   467     ]   468    469 l = order_qualifiers(qualifiers)   470 show(l)   471 dt = (1997, 9, 30, 9, 0, 0)   472 l = get_datetime_structure(dt)   473 show(l)   474 l = combine_datetime_with_qualifiers(dt, qualifiers)   475 show(l)   476    477 s = get_selector(dt, qualifiers)   478 l = s.materialise(dt, (1998, 12, 24, 0, 0, 0), 10)   479 print len(l) == 10, 10, len(l)   480 print l[0] == (1997, 9, 30, 9, 0, 0), (1997, 9, 30, 9, 0, 0), l[0]   481 print l[-1] == (1998, 2, 1, 9, 0, 0), (1998, 2, 1, 9, 0, 0), l[-1]   482 print   483    484 qualifiers = [   485     ("MONTHLY", {"interval" : 18}),   486     ("BYMONTHDAY", {"values" : [10, 11, 12, 13, 14, 15]})   487     ]   488    489 l = order_qualifiers(qualifiers)   490 show(l)   491 dt = (1997, 9, 10, 9, 0, 0)   492 l = get_datetime_structure(dt)   493 show(l)   494 l = combine_datetime_with_qualifiers(dt, qualifiers)   495 show(l)   496    497 s = get_selector(dt, qualifiers)   498 l = s.materialise(dt, (1999, 12, 24, 0, 0, 0), 10)   499 print len(l) == 10, 10, len(l)   500 print l[0] == (1997, 9, 10, 9, 0, 0), (1997, 9, 10, 9, 0, 0), l[0]   501 print l[-1] == (1999, 3, 13, 9, 0, 0), (1999, 3, 13, 9, 0, 0), l[-1]   502 print   503    504 qualifiers = [   505     ("MONTHLY", {"interval" : 2}),   506     ("BYDAY", {"values" : [(2, None)]})   507     ]   508    509 l = order_qualifiers(qualifiers)   510 show(l)   511 dt = (1997, 9, 2, 9, 0, 0)   512 l = get_datetime_structure(dt)   513 show(l)   514 l = combine_datetime_with_qualifiers(dt, qualifiers)   515 show(l)   516    517 s = get_selector(dt, qualifiers)   518 l = s.materialise(dt, (1998, 4, 1, 0, 0, 0))   519 print len(l) == 18, 18, len(l)   520 print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]   521 print l[-1] == (1998, 3, 31, 9, 0, 0), (1998, 3, 31, 9, 0, 0), l[-1]   522 print   523    524 qualifiers = [   525     ("YEARLY", {"interval" : 1}),   526     ("BYMONTH", {"values" : [6, 7]})   527     ]   528    529 l = order_qualifiers(qualifiers)   530 show(l)   531 dt = (1997, 6, 10, 9, 0, 0)   532 l = get_datetime_structure(dt)   533 show(l)   534 l = combine_datetime_with_qualifiers(dt, qualifiers)   535 show(l)   536    537 s = get_selector(dt, qualifiers)   538 l = s.materialise(dt, (2001, 12, 24, 0, 0, 0), 10)   539 print len(l) == 10, 10, len(l)   540 print l[0] == (1997, 6, 10, 9, 0, 0), (1997, 6, 10, 9, 0, 0), l[0]   541 print l[-1] == (2001, 7, 10, 9, 0, 0), (2001, 7, 10, 9, 0, 0), l[-1]   542 print   543    544 qualifiers = [   545     ("YEARLY", {"interval" : 2}),   546     ("BYMONTH", {"values" : [1, 2, 3]})   547     ]   548    549 l = order_qualifiers(qualifiers)   550 show(l)   551 dt = (1997, 3, 10, 9, 0, 0)   552 l = get_datetime_structure(dt)   553 show(l)   554 l = combine_datetime_with_qualifiers(dt, qualifiers)   555 show(l)   556    557 s = get_selector(dt, qualifiers)   558 l = s.materialise(dt, (2003, 12, 24, 0, 0, 0), 10)   559 print len(l) == 10, 10, len(l)   560 print l[0] == (1997, 3, 10, 9, 0, 0), (1997, 3, 10, 9, 0, 0), l[0]   561 print l[-1] == (2003, 3, 10, 9, 0, 0), (2003, 3, 10, 9, 0, 0), l[-1]   562 print   563    564 qualifiers = [   565     ("YEARLY", {"interval" : 3}),   566     ("BYYEARDAY", {"values" : [1, 100, 200]})   567     ]   568    569 l = order_qualifiers(qualifiers)   570 show(l)   571 dt = (1997, 1, 1, 9, 0, 0)   572 l = get_datetime_structure(dt)   573 show(l)   574 l = combine_datetime_with_qualifiers(dt, qualifiers)   575 show(l)   576    577 s = get_selector(dt, qualifiers)   578 l = s.materialise(dt, (2006, 2, 1, 0, 0, 0), 10)   579 print len(l) == 10, 10, len(l)   580 print l[0] == (1997, 1, 1, 9, 0, 0), (1997, 1, 1, 9, 0, 0), l[0]   581 print l[-1] == (2006, 1, 1, 9, 0, 0), (2006, 1, 1, 9, 0, 0), l[-1]   582 print   583    584 qualifiers = [   585     ("YEARLY", {"interval" : 1}),   586     ("BYDAY", {"values" : [(1, 20)]})   587     ]   588    589 l = order_qualifiers(qualifiers)   590 show(l)   591 dt = (1997, 5, 19, 9, 0, 0)   592 l = get_datetime_structure(dt)   593 show(l)   594 l = combine_datetime_with_qualifiers(dt, qualifiers)   595 show(l)   596    597 s = get_selector(dt, qualifiers)   598 l = s.materialise(dt, (1999, 12, 24, 0, 0, 0))   599 print len(l) == 3, 3, len(l)   600 print l[0] == (1997, 5, 19, 9, 0, 0), (1997, 5, 19, 9, 0, 0), l[0]   601 print l[-1] == (1999, 5, 17, 9, 0, 0), (1999, 5, 17, 9, 0, 0), l[-1]   602 print   603    604 """   605 qualifiers = [   606     ("YEARLY", {"interval" : 1}),   607     ("BYWEEKNO", {"values" : [20]}),   608     ("BYDAY", {"values" : [(1, None)]})   609     ]   610    611 l = order_qualifiers(qualifiers)   612 show(l)   613 dt = (1997, 5, 12, 9, 0, 0)   614 l = get_datetime_structure(dt)   615 show(l)   616 l = combine_datetime_with_qualifiers(dt, qualifiers)   617 show(l)   618    619 s = get_selector(dt, qualifiers)   620 l = s.materialise(dt, (1999, 12, 24, 0, 0, 0))   621 print len(l) == 3, 3, len(l)   622 print l[0] == (1997, 5, 12, 9, 0, 0), (1997, 5, 12, 9, 0, 0), l[0]   623 print l[-1] == (1999, 5, 17, 9, 0, 0), (1999, 5, 17, 9, 0, 0), l[-1]   624 print   625 """   626    627 qualifiers = [   628     ("YEARLY", {"interval" : 1}),   629     ("BYMONTH", {"values" : [3]}),   630     ("BYDAY", {"values" : [(4, None)]})   631     ]   632    633 l = order_qualifiers(qualifiers)   634 show(l)   635 dt = (1997, 3, 13, 9, 0, 0)   636 l = get_datetime_structure(dt)   637 show(l)   638 l = combine_datetime_with_qualifiers(dt, qualifiers)   639 show(l)   640    641 s = get_selector(dt, qualifiers)   642 l = s.materialise(dt, (1999, 12, 24, 0, 0, 0))   643 print len(l) == 11, 11, len(l)   644 print l[0] == (1997, 3, 13, 9, 0, 0), (1997, 3, 13, 9, 0, 0), l[0]   645 print l[-1] == (1999, 3, 25, 9, 0, 0), (1999, 3, 25, 9, 0, 0), l[-1]   646 print   647    648 qualifiers = [   649     ("YEARLY", {"interval" : 1}),   650     ("BYMONTH", {"values" : [6, 7, 8]}),   651     ("BYDAY", {"values" : [(4, None)]})   652     ]   653    654 l = order_qualifiers(qualifiers)   655 show(l)   656 dt = (1997, 6, 5, 9, 0, 0)   657 l = get_datetime_structure(dt)   658 show(l)   659 l = combine_datetime_with_qualifiers(dt, qualifiers)   660 show(l)   661    662 s = get_selector(dt, qualifiers)   663 l = s.materialise(dt, (1999, 12, 24, 0, 0, 0))   664 print len(l) == 39, 39, len(l)   665 print l[0] == (1997, 6, 5, 9, 0, 0), (1997, 6, 5, 9, 0, 0), l[0]   666 print l[-1] == (1999, 8, 26, 9, 0, 0), (1999, 8, 26, 9, 0, 0), l[-1]   667 print   668    669 qualifiers = [   670     ("MONTHLY", {"interval" : 1}),   671     ("BYMONTHDAY", {"values" : [13]}),   672     ("BYDAY", {"values" : [(5, None)]})   673     ]   674    675 l = order_qualifiers(qualifiers)   676 show(l)   677 dt = (1997, 9, 2, 9, 0, 0)   678 l = get_datetime_structure(dt)   679 show(l)   680 l = combine_datetime_with_qualifiers(dt, qualifiers)   681 show(l)   682    683 s = get_selector(dt, qualifiers)   684 l = s.materialise(dt, (2000, 12, 24, 0, 0, 0))   685 print len(l) == 5, 5, len(l)   686 print l[0] == (1998, 2, 13, 9, 0, 0), (1998, 2, 13, 9, 0, 0), l[0]   687 print l[-1] == (2000, 10, 13, 9, 0, 0), (2000, 10, 13, 9, 0, 0), l[-1]   688 print   689    690 qualifiers = [   691     ("MONTHLY", {"interval" : 1}),   692     ("BYMONTHDAY", {"values" : [7, 8, 9, 10, 11, 12, 13]}),   693     ("BYDAY", {"values" : [(6, None)]})   694     ]   695    696 l = order_qualifiers(qualifiers)   697 show(l)   698 dt = (1997, 9, 13, 9, 0, 0)   699 l = get_datetime_structure(dt)   700 show(l)   701 l = combine_datetime_with_qualifiers(dt, qualifiers)   702 show(l)   703    704 s = get_selector(dt, qualifiers)   705 l = s.materialise(dt, (1998, 6, 30, 0, 0, 0))   706 print len(l) == 10, 10, len(l)   707 print l[0] == (1997, 9, 13, 9, 0, 0), (1997, 9, 13, 9, 0, 0), l[0]   708 print l[-1] == (1998, 6, 13, 9, 0, 0), (1998, 6, 13, 9, 0, 0), l[-1]   709 print   710    711 qualifiers = [   712     ("YEARLY", {"interval" : 4}),   713     ("BYMONTH", {"values" : [11]}),   714     ("BYMONTHDAY", {"values" : [2, 3, 4, 5, 6, 7, 8]}),   715     ("BYDAY", {"values" : [(2, None)]})   716     ]   717    718 l = order_qualifiers(qualifiers)   719 show(l)   720 dt = (1996, 11, 5, 9, 0, 0)   721 l = get_datetime_structure(dt)   722 show(l)   723 l = combine_datetime_with_qualifiers(dt, qualifiers)   724 show(l)   725    726 s = get_selector(dt, qualifiers)   727 l = s.materialise(dt, (2004, 12, 24, 0, 0, 0))   728 print len(l) == 3, 3, len(l)   729 print l[0] == (1996, 11, 5, 9, 0, 0), (1996, 11, 5, 9, 0, 0), l[0]   730 print l[-1] == (2004, 11, 2, 9, 0, 0), (2004, 11, 2, 9, 0, 0), l[-1]   731 print   732    733 qualifiers = [   734     ("MONTHLY", {"interval" : 1}),   735     ("BYDAY", {"values" : [(2, None), (3, None), (4, None)]})   736     ]   737    738 l = order_qualifiers(qualifiers)   739 show(l)   740 dt = (1997, 9, 4, 9, 0, 0)   741 l = get_datetime_structure(dt)   742 show(l)   743 l = combine_datetime_with_qualifiers(dt, qualifiers)   744 show(l)   745    746 s = get_selector(dt, qualifiers)   747 l = s.materialise(dt, (1997, 12, 24, 0, 0, 0), 3, [3])   748 print len(l) == 3, 3, len(l)   749 print l[0] == (1997, 9, 4, 9, 0, 0), (1997, 9, 4, 9, 0, 0), l[0]   750 print l[-1] == (1997, 11, 6, 9, 0, 0), (1997, 11, 6, 9, 0, 0), l[-1]   751 print   752    753 l2 = l   754    755 qualifiers = [   756     ("MONTHLY", {"interval" : 1}),   757     ("BYDAY", {"values" : [(1, None), (2, None), (3, None), (4, None), (5, None)]})   758     ]   759    760 l = order_qualifiers(qualifiers)   761 show(l)   762 dt = (1997, 9, 29, 9, 0, 0)   763 l = get_datetime_structure(dt)   764 show(l)   765 l = combine_datetime_with_qualifiers(dt, qualifiers)   766 show(l)   767    768 s = get_selector(dt, qualifiers)   769 l = s.materialise(dt, (1998, 4, 1, 0, 0, 0), None, [-2])   770 print len(l) == 7, 7, len(l)   771 print l[0] == (1997, 9, 29, 9, 0, 0), (1997, 9, 29, 9, 0, 0), l[0]   772 print l[-1] == (1998, 3, 30, 9, 0, 0), (1998, 3, 30, 9, 0, 0), l[-1]   773 print   774    775 qualifiers = get_qualifiers(["FREQ=MONTHLY", "BYMONTHDAY=5", "FREQ=HOURLY", "INTERVAL=12"])   776    777 l = order_qualifiers(qualifiers)   778 show(l)   779 dt = (2017, 6, 13)   780 l = get_datetime_structure(dt)   781 show(l)   782 l = combine_datetime_with_qualifiers(dt, qualifiers)   783 show(l)   784    785 s = get_selector(dt, qualifiers)   786 l = s.materialise(dt, (2019, 1, 1))   787 print len(l) == 36   788 print l[0] == (2017, 7, 5, 0), (2017, 7, 5, 0), l[0]   789 print l[-1] == (2018, 12, 5, 12), (2018, 12, 5, 12), l[-1]   790    791 qualifiers = get_qualifiers(["FREQ=DAILY", "BYMONTH=1"])   792    793 l = order_qualifiers(qualifiers)   794 show(l)   795 dt = (2017, 6, 13)   796 l = get_datetime_structure(dt)   797 show(l)   798 l = combine_datetime_with_qualifiers(dt, qualifiers)   799 show(l)   800    801 s = get_selector(dt, qualifiers)   802 l = s.materialise(dt, (2019, 1, 1))   803 print len(l) == 31   804 print l[0] == (2018, 1, 1), (2018, 1, 1), l[0]   805 print l[-1] == (2018, 1, 31), (2018, 1, 31), l[-1]   806    807 qualifiers = get_qualifiers(["FREQ=MONTHLY", "BYDAY=WE,1FR,2MO,2FR"])   808    809 l = order_qualifiers(qualifiers)   810 show(l)   811 dt = (2017, 10, 15)   812 l = get_datetime_structure(dt)   813 show(l)   814 l = combine_datetime_with_qualifiers(dt, qualifiers)   815 show(l)   816    817 s = get_selector(dt, qualifiers)   818 l = s.materialise(dt, (2018, 1, 1))   819 print len(l) == 17   820 print l[0] == (2017, 10, 18), (2017, 10, 18), l[0]   821 print l[-1] == (2017, 12, 27), (2017, 12, 27), l[-1]   822    823 # vim: tabstop=4 expandtab shiftwidth=4