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