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