1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/tests/internal/qualifiers.py Sat May 14 18:46:04 2016 +0200
1.3 @@ -0,0 +1,775 @@
1.4 +#!/usr/bin/env python
1.5 +
1.6 +"""
1.7 +Test qualifiers for recurring events.
1.8 +
1.9 +Copyright (C) 2014, 2015 Paul Boddie <paul@boddie.org.uk>
1.10 +
1.11 +This program is free software; you can redistribute it and/or modify it under
1.12 +the terms of the GNU General Public License as published by the Free Software
1.13 +Foundation; either version 3 of the License, or (at your option) any later
1.14 +version.
1.15 +
1.16 +This program is distributed in the hope that it will be useful, but WITHOUT
1.17 +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
1.18 +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
1.19 +details.
1.20 +
1.21 +You should have received a copy of the GNU General Public License along with
1.22 +this program. If not, see <http://www.gnu.org/licenses/>.
1.23 +"""
1.24 +
1.25 +from vRecurrence import *
1.26 +
1.27 +def show(l):
1.28 + for x in l:
1.29 + print x
1.30 + print
1.31 +
1.32 +qualifiers = [
1.33 + ("YEARLY", {"interval" : 1})
1.34 + ]
1.35 +
1.36 +l = order_qualifiers(qualifiers)
1.37 +show(l)
1.38 +dt = (1997, 11, 2)
1.39 +l = get_datetime_structure(dt)
1.40 +show(l)
1.41 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.42 +show(l)
1.43 +
1.44 +s = get_selector(dt, qualifiers)
1.45 +l = s.materialise(dt, (2003, 12, 24))
1.46 +print len(l) == 7, 7, len(l)
1.47 +print l[0] == (1997, 11, 2), (1997, 11, 2), l[0]
1.48 +print l[-1] == (2003, 11, 2), (2003, 11, 2), l[-1]
1.49 +print
1.50 +
1.51 +qualifiers = [
1.52 + ("YEARLY", {"interval" : 2}),
1.53 + ("BYMONTH", {"values" : [1]}),
1.54 + ("BYDAY", {"values" : [(6, None)]}),
1.55 + ("BYHOUR", {"values" : [8, 9]}),
1.56 + ("BYMINUTE", {"values" : [30]})
1.57 + ]
1.58 +
1.59 +l = order_qualifiers(qualifiers)
1.60 +show(l)
1.61 +dt = (1997, 1, 5, 8, 30, 0)
1.62 +l = get_datetime_structure(dt)
1.63 +show(l)
1.64 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.65 +show(l)
1.66 +
1.67 +s = get_selector(dt, qualifiers)
1.68 +l = s.materialise(dt, (2003, 12, 24, 0, 0, 0))
1.69 +print len(l) == 32, 32, len(l)
1.70 +print l[0] == (1997, 1, 11, 8, 30, 0), (1997, 1, 11, 8, 30, 0), l[0]
1.71 +print l[-1] == (2003, 1, 25, 9, 30, 0), (2003, 1, 25, 9, 30, 0), l[-1]
1.72 +print
1.73 +
1.74 +qualifiers = [
1.75 + ("DAILY", {"interval" : 1})
1.76 + ]
1.77 +
1.78 +l = order_qualifiers(qualifiers)
1.79 +show(l)
1.80 +dt = (1997, 9, 2, 9, 0, 0)
1.81 +l = get_datetime_structure(dt)
1.82 +show(l)
1.83 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.84 +show(l)
1.85 +
1.86 +s = get_selector(dt, qualifiers)
1.87 +l = s.materialise(dt, (1997, 12, 24), 10)
1.88 +print len(l) == 10, 10, len(l)
1.89 +print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]
1.90 +print l[-1] == (1997, 9, 11, 9, 0, 0), (1997, 9, 11, 9, 0, 0), l[-1]
1.91 +print
1.92 +
1.93 +qualifiers = [
1.94 + ("DAILY", {"interval" : 1})
1.95 + ]
1.96 +
1.97 +l = order_qualifiers(qualifiers)
1.98 +show(l)
1.99 +dt = (1997, 9, 2, 9, 0, 0)
1.100 +l = get_datetime_structure(dt)
1.101 +show(l)
1.102 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.103 +show(l)
1.104 +
1.105 +s = get_selector(dt, qualifiers)
1.106 +l = s.materialise(dt, (1997, 12, 24, 0, 0, 0))
1.107 +print len(l) == 113, 113, len(l)
1.108 +print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]
1.109 +print l[-1] == (1997, 12, 23, 9, 0, 0), (1997, 12, 23, 9, 0, 0), l[-1]
1.110 +print
1.111 +
1.112 +qualifiers = [
1.113 + ("DAILY", {"interval" : 2})
1.114 + ]
1.115 +
1.116 +l = order_qualifiers(qualifiers)
1.117 +show(l)
1.118 +dt = (1997, 9, 2, 9, 0, 0)
1.119 +l = get_datetime_structure(dt)
1.120 +show(l)
1.121 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.122 +show(l)
1.123 +
1.124 +s = get_selector(dt, qualifiers)
1.125 +l = s.materialise(dt, (1997, 12, 24, 0, 0, 0))
1.126 +print len(l) == 57, 57, len(l)
1.127 +print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]
1.128 +print l[-1] == (1997, 12, 23, 9, 0, 0), (1997, 12, 23, 9, 0, 0), l[-1]
1.129 +print
1.130 +
1.131 +qualifiers = [
1.132 + ("WEEKLY", {"interval" : 1})
1.133 + ]
1.134 +
1.135 +l = order_qualifiers(qualifiers)
1.136 +show(l)
1.137 +dt = (1997, 9, 2, 9, 0, 0)
1.138 +l = get_datetime_structure(dt)
1.139 +show(l)
1.140 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.141 +show(l)
1.142 +
1.143 +s = get_selector(dt, qualifiers)
1.144 +l = s.materialise(dt, (1997, 12, 24, 0, 0, 0))
1.145 +print len(l) == 17, 17, len(l)
1.146 +print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]
1.147 +print l[-1] == (1997, 12, 23, 9, 0, 0), (1997, 12, 23, 9, 0, 0), l[-1]
1.148 +print
1.149 +
1.150 +qualifiers = [
1.151 + ("DAILY", {"interval" : 10})
1.152 + ]
1.153 +
1.154 +l = order_qualifiers(qualifiers)
1.155 +show(l)
1.156 +dt = (1997, 9, 2, 9, 0, 0)
1.157 +l = get_datetime_structure(dt)
1.158 +show(l)
1.159 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.160 +show(l)
1.161 +
1.162 +s = get_selector(dt, qualifiers)
1.163 +l = s.materialise(dt, (1997, 12, 24, 0, 0, 0), 5)
1.164 +print len(l) == 5, 5, len(l)
1.165 +print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]
1.166 +print l[-1] == (1997, 10, 12, 9, 0, 0), (1997, 10, 12, 9, 0, 0), l[-1]
1.167 +print
1.168 +
1.169 +qualifiers = [
1.170 + ("YEARLY", {"interval" : 1}),
1.171 + ("BYMONTH", {"values" : [1]}),
1.172 + ("BYDAY", {"values" : [(1, None), (2, None), (3, None), (4, None), (5, None), (6, None), (7, None)]})
1.173 + ]
1.174 +
1.175 +l = order_qualifiers(qualifiers)
1.176 +show(l)
1.177 +dt = (1998, 1, 1, 9, 0, 0)
1.178 +l = get_datetime_structure(dt)
1.179 +show(l)
1.180 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.181 +show(l)
1.182 +
1.183 +s = get_selector(dt, qualifiers)
1.184 +l = s.materialise(dt, (2000, 1, 31, 14, 0, 0))
1.185 +print len(l) == 93, 93, len(l)
1.186 +print l[0] == (1998, 1, 1, 9, 0, 0), (1998, 1, 1, 9, 0, 0), l[0]
1.187 +print l[-1] == (2000, 1, 31, 9, 0, 0), (2000, 1, 31, 9, 0, 0), l[-1]
1.188 +print
1.189 +
1.190 +qualifiers = [
1.191 + ("DAILY", {"interval" : 1}),
1.192 + ("BYMONTH", {"values" : [1]})
1.193 + ]
1.194 +
1.195 +l = order_qualifiers(qualifiers)
1.196 +show(l)
1.197 +dt = (1998, 1, 1, 9, 0, 0)
1.198 +l = get_datetime_structure(dt)
1.199 +show(l)
1.200 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.201 +show(l)
1.202 +
1.203 +s = get_selector(dt, qualifiers)
1.204 +l = s.materialise(dt, (2000, 1, 31, 14, 0, 0))
1.205 +print len(l) == 93, 93, len(l)
1.206 +print l[0] == (1998, 1, 1, 9, 0, 0), (1998, 1, 1, 9, 0, 0), l[0]
1.207 +print l[-1] == (2000, 1, 31, 9, 0, 0), (2000, 1, 31, 9, 0, 0), l[-1]
1.208 +print
1.209 +
1.210 +qualifiers = [
1.211 + ("WEEKLY", {"interval" : 1})
1.212 + ]
1.213 +
1.214 +l = order_qualifiers(qualifiers)
1.215 +show(l)
1.216 +dt = (1997, 9, 2, 9, 0, 0)
1.217 +l = get_datetime_structure(dt)
1.218 +show(l)
1.219 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.220 +show(l)
1.221 +
1.222 +s = get_selector(dt, qualifiers)
1.223 +l = s.materialise(dt, (1997, 12, 24, 0, 0, 0), 10)
1.224 +print len(l) == 10, 10, len(l)
1.225 +print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]
1.226 +print l[-1] == (1997, 11, 4, 9, 0, 0), (1997, 11, 4, 9, 0, 0), l[-1]
1.227 +print
1.228 +
1.229 +qualifiers = [
1.230 + ("WEEKLY", {"interval" : 1})
1.231 + ]
1.232 +
1.233 +l = order_qualifiers(qualifiers)
1.234 +show(l)
1.235 +dt = (1997, 9, 2, 9, 0, 0)
1.236 +l = get_datetime_structure(dt)
1.237 +show(l)
1.238 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.239 +show(l)
1.240 +
1.241 +s = get_selector(dt, qualifiers)
1.242 +l = s.materialise(dt, (1997, 12, 24, 0, 0, 0))
1.243 +print len(l) == 17, 17, len(l)
1.244 +print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]
1.245 +print l[-1] == (1997, 12, 23, 9, 0, 0), (1997, 12, 23, 9, 0, 0), l[-1]
1.246 +print
1.247 +
1.248 +qualifiers = [
1.249 + ("WEEKLY", {"interval" : 2})
1.250 + ]
1.251 +
1.252 +l = order_qualifiers(qualifiers)
1.253 +show(l)
1.254 +dt = (1997, 9, 2, 9, 0, 0)
1.255 +l = get_datetime_structure(dt)
1.256 +show(l)
1.257 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.258 +show(l)
1.259 +
1.260 +s = get_selector(dt, qualifiers)
1.261 +l = s.materialise(dt, (1998, 2, 20, 0, 0, 0))
1.262 +print len(l) == 13, 13, len(l)
1.263 +print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]
1.264 +print l[-1] == (1998, 2, 17, 9, 0, 0), (1998, 2, 17, 9, 0, 0), l[-1]
1.265 +print
1.266 +
1.267 +qualifiers = [
1.268 + ("WEEKLY", {"interval" : 1}),
1.269 + ("BYDAY", {"values" : [(2, None), (4, None)]})
1.270 + ]
1.271 +
1.272 +l = order_qualifiers(qualifiers)
1.273 +show(l)
1.274 +dt = (1997, 9, 2, 9, 0, 0)
1.275 +l = get_datetime_structure(dt)
1.276 +show(l)
1.277 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.278 +show(l)
1.279 +
1.280 +s = get_selector(dt, qualifiers)
1.281 +l = s.materialise(dt, (1997, 10, 7, 9, 0, 0))
1.282 +print len(l) == 10, 10, len(l)
1.283 +print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]
1.284 +print l[-1] == (1997, 10, 2, 9, 0, 0), (1997, 10, 2, 9, 0, 0), l[-1]
1.285 +print
1.286 +
1.287 +qualifiers = [
1.288 + ("WEEKLY", {"interval" : 1}),
1.289 + ("BYDAY", {"values" : [(2, None), (4, None)]})
1.290 + ]
1.291 +
1.292 +l = order_qualifiers(qualifiers)
1.293 +show(l)
1.294 +dt = (1997, 9, 2, 9, 0, 0)
1.295 +l = get_datetime_structure(dt)
1.296 +show(l)
1.297 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.298 +show(l)
1.299 +
1.300 +s = get_selector(dt, qualifiers)
1.301 +l = s.materialise(dt, (1997, 12, 24, 0, 0, 0), 10)
1.302 +print len(l) == 10, 10, len(l)
1.303 +print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]
1.304 +print l[-1] == (1997, 10, 2, 9, 0, 0), (1997, 10, 2, 9, 0, 0), l[-1]
1.305 +print
1.306 +
1.307 +qualifiers = [
1.308 + ("WEEKLY", {"interval" : 2}),
1.309 + ("BYDAY", {"values" : [(1, None), (3, None), (5, None)]})
1.310 + ]
1.311 +
1.312 +l = order_qualifiers(qualifiers)
1.313 +show(l)
1.314 +dt = (1997, 9, 1, 9, 0, 0)
1.315 +l = get_datetime_structure(dt)
1.316 +show(l)
1.317 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.318 +show(l)
1.319 +
1.320 +s = get_selector(dt, qualifiers)
1.321 +l = s.materialise(dt, (1997, 12, 24, 0, 0, 0))
1.322 +print len(l) == 25, 25, len(l)
1.323 +print l[0] == (1997, 9, 1, 9, 0, 0), (1997, 9, 1, 9, 0, 0), l[0]
1.324 +print l[-1] == (1997, 12, 22, 9, 0, 0), (1997, 12, 22, 9, 0, 0), l[-1]
1.325 +print
1.326 +
1.327 +qualifiers = [
1.328 + ("WEEKLY", {"interval" : 2}),
1.329 + ("BYDAY", {"values" : [(2, None), (4, None)]})
1.330 + ]
1.331 +
1.332 +l = order_qualifiers(qualifiers)
1.333 +show(l)
1.334 +dt = (1997, 9, 2, 9, 0, 0)
1.335 +l = get_datetime_structure(dt)
1.336 +show(l)
1.337 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.338 +show(l)
1.339 +
1.340 +s = get_selector(dt, qualifiers)
1.341 +l = s.materialise(dt, (1997, 12, 24, 0, 0, 0), 8)
1.342 +print len(l) == 8, 8, len(l)
1.343 +print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]
1.344 +print l[-1] == (1997, 10, 16, 9, 0, 0), (1997, 10, 16, 9, 0, 0), l[-1]
1.345 +print
1.346 +
1.347 +qualifiers = [
1.348 + ("MONTHLY", {"interval" : 1}),
1.349 + ("BYDAY", {"values" : [(5, 1)]})
1.350 + ]
1.351 +
1.352 +l = order_qualifiers(qualifiers)
1.353 +show(l)
1.354 +dt = (1997, 9, 5, 9, 0, 0)
1.355 +l = get_datetime_structure(dt)
1.356 +show(l)
1.357 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.358 +show(l)
1.359 +
1.360 +s = get_selector(dt, qualifiers)
1.361 +l = s.materialise(dt, (1998, 12, 24, 0, 0, 0), 10)
1.362 +print len(l) == 10, 10, len(l)
1.363 +print l[0] == (1997, 9, 5, 9, 0, 0), (1997, 9, 5, 9, 0, 0), l[0]
1.364 +print l[-1] == (1998, 6, 5, 9, 0, 0), (1998, 6, 5, 9, 0, 0), l[-1]
1.365 +print
1.366 +
1.367 +qualifiers = [
1.368 + ("MONTHLY", {"interval" : 1}),
1.369 + ("BYDAY", {"values" : [(5, 1)]})
1.370 + ]
1.371 +
1.372 +l = order_qualifiers(qualifiers)
1.373 +show(l)
1.374 +dt = (1997, 9, 5, 9, 0, 0)
1.375 +l = get_datetime_structure(dt)
1.376 +show(l)
1.377 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.378 +show(l)
1.379 +
1.380 +s = get_selector(dt, qualifiers)
1.381 +l = s.materialise(dt, (1997, 12, 24, 0, 0, 0))
1.382 +print len(l) == 4, 4, len(l)
1.383 +print l[0] == (1997, 9, 5, 9, 0, 0), (1997, 9, 5, 9, 0, 0), l[0]
1.384 +print l[-1] == (1997, 12, 5, 9, 0, 0), (1997, 12, 5, 9, 0, 0), l[-1]
1.385 +print
1.386 +
1.387 +qualifiers = [
1.388 + ("MONTHLY", {"interval" : 2}),
1.389 + ("BYDAY", {"values" : [(7, 1), (7, -1)]})
1.390 + ]
1.391 +
1.392 +l = order_qualifiers(qualifiers)
1.393 +show(l)
1.394 +dt = (1997, 9, 7, 9, 0, 0)
1.395 +l = get_datetime_structure(dt)
1.396 +show(l)
1.397 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.398 +show(l)
1.399 +
1.400 +s = get_selector(dt, qualifiers)
1.401 +l = s.materialise(dt, (1998, 12, 24, 0, 0, 0), 10)
1.402 +print len(l) == 10, 10, len(l)
1.403 +print l[0] == (1997, 9, 7, 9, 0, 0), (1997, 9, 7, 9, 0, 0), l[0]
1.404 +print l[-1] == (1998, 5, 31, 9, 0, 0), (1998, 5, 31, 9, 0, 0), l[-1]
1.405 +print
1.406 +
1.407 +qualifiers = [
1.408 + ("MONTHLY", {"interval" : 1}),
1.409 + ("BYDAY", {"values" : [(1, -2)]})
1.410 + ]
1.411 +
1.412 +l = order_qualifiers(qualifiers)
1.413 +show(l)
1.414 +dt = (1997, 9, 22, 9, 0, 0)
1.415 +l = get_datetime_structure(dt)
1.416 +show(l)
1.417 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.418 +show(l)
1.419 +
1.420 +s = get_selector(dt, qualifiers)
1.421 +l = s.materialise(dt, (1998, 12, 24, 0, 0, 0), 6)
1.422 +print len(l) == 6, 6, len(l)
1.423 +print l[0] == (1997, 9, 22, 9, 0, 0), (1997, 9, 22, 9, 0, 0), l[0]
1.424 +print l[-1] == (1998, 2, 16, 9, 0, 0), (1998, 2, 16, 9, 0, 0), l[-1]
1.425 +print
1.426 +
1.427 +qualifiers = [
1.428 + ("MONTHLY", {"interval" : 1}),
1.429 + ("BYMONTHDAY", {"values" : [-3]})
1.430 + ]
1.431 +
1.432 +l = order_qualifiers(qualifiers)
1.433 +show(l)
1.434 +dt = (1997, 9, 28, 9, 0, 0)
1.435 +l = get_datetime_structure(dt)
1.436 +show(l)
1.437 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.438 +show(l)
1.439 +
1.440 +s = get_selector(dt, qualifiers)
1.441 +l = s.materialise(dt, (1998, 12, 24, 0, 0, 0), 6)
1.442 +print len(l) == 6, 6, len(l)
1.443 +print l[0] == (1997, 9, 28, 9, 0, 0), (1997, 9, 28, 9, 0, 0), l[0]
1.444 +print l[-1] == (1998, 2, 26, 9, 0, 0), (1998, 2, 26, 9, 0, 0), l[-1]
1.445 +print
1.446 +
1.447 +qualifiers = [
1.448 + ("MONTHLY", {"interval" : 1}),
1.449 + ("BYMONTHDAY", {"values" : [2, 15]})
1.450 + ]
1.451 +
1.452 +l = order_qualifiers(qualifiers)
1.453 +show(l)
1.454 +dt = (1997, 9, 2, 9, 0, 0)
1.455 +l = get_datetime_structure(dt)
1.456 +show(l)
1.457 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.458 +show(l)
1.459 +
1.460 +s = get_selector(dt, qualifiers)
1.461 +l = s.materialise(dt, (1998, 12, 24, 0, 0, 0), 10)
1.462 +print len(l) == 10, 10, len(l)
1.463 +print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]
1.464 +print l[-1] == (1998, 1, 15, 9, 0, 0), (1998, 1, 15, 9, 0, 0), l[-1]
1.465 +print
1.466 +
1.467 +qualifiers = [
1.468 + ("MONTHLY", {"interval" : 1}),
1.469 + ("BYMONTHDAY", {"values" : [1, -1]})
1.470 + ]
1.471 +
1.472 +l = order_qualifiers(qualifiers)
1.473 +show(l)
1.474 +dt = (1997, 9, 30, 9, 0, 0)
1.475 +l = get_datetime_structure(dt)
1.476 +show(l)
1.477 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.478 +show(l)
1.479 +
1.480 +s = get_selector(dt, qualifiers)
1.481 +l = s.materialise(dt, (1998, 12, 24, 0, 0, 0), 10)
1.482 +print len(l) == 10, 10, len(l)
1.483 +print l[0] == (1997, 9, 30, 9, 0, 0), (1997, 9, 30, 9, 0, 0), l[0]
1.484 +print l[-1] == (1998, 2, 1, 9, 0, 0), (1998, 2, 1, 9, 0, 0), l[-1]
1.485 +print
1.486 +
1.487 +qualifiers = [
1.488 + ("MONTHLY", {"interval" : 18}),
1.489 + ("BYMONTHDAY", {"values" : [10, 11, 12, 13, 14, 15]})
1.490 + ]
1.491 +
1.492 +l = order_qualifiers(qualifiers)
1.493 +show(l)
1.494 +dt = (1997, 9, 10, 9, 0, 0)
1.495 +l = get_datetime_structure(dt)
1.496 +show(l)
1.497 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.498 +show(l)
1.499 +
1.500 +s = get_selector(dt, qualifiers)
1.501 +l = s.materialise(dt, (1999, 12, 24, 0, 0, 0), 10)
1.502 +print len(l) == 10, 10, len(l)
1.503 +print l[0] == (1997, 9, 10, 9, 0, 0), (1997, 9, 10, 9, 0, 0), l[0]
1.504 +print l[-1] == (1999, 3, 13, 9, 0, 0), (1999, 3, 13, 9, 0, 0), l[-1]
1.505 +print
1.506 +
1.507 +qualifiers = [
1.508 + ("MONTHLY", {"interval" : 2}),
1.509 + ("BYDAY", {"values" : [(2, None)]})
1.510 + ]
1.511 +
1.512 +l = order_qualifiers(qualifiers)
1.513 +show(l)
1.514 +dt = (1997, 9, 2, 9, 0, 0)
1.515 +l = get_datetime_structure(dt)
1.516 +show(l)
1.517 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.518 +show(l)
1.519 +
1.520 +s = get_selector(dt, qualifiers)
1.521 +l = s.materialise(dt, (1998, 4, 1, 0, 0, 0))
1.522 +print len(l) == 18, 18, len(l)
1.523 +print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0]
1.524 +print l[-1] == (1998, 3, 31, 9, 0, 0), (1998, 3, 31, 9, 0, 0), l[-1]
1.525 +print
1.526 +
1.527 +qualifiers = [
1.528 + ("YEARLY", {"interval" : 1}),
1.529 + ("BYMONTH", {"values" : [6, 7]})
1.530 + ]
1.531 +
1.532 +l = order_qualifiers(qualifiers)
1.533 +show(l)
1.534 +dt = (1997, 6, 10, 9, 0, 0)
1.535 +l = get_datetime_structure(dt)
1.536 +show(l)
1.537 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.538 +show(l)
1.539 +
1.540 +s = get_selector(dt, qualifiers)
1.541 +l = s.materialise(dt, (2001, 12, 24, 0, 0, 0), 10)
1.542 +print len(l) == 10, 10, len(l)
1.543 +print l[0] == (1997, 6, 10, 9, 0, 0), (1997, 6, 10, 9, 0, 0), l[0]
1.544 +print l[-1] == (2001, 7, 10, 9, 0, 0), (2001, 7, 10, 9, 0, 0), l[-1]
1.545 +print
1.546 +
1.547 +qualifiers = [
1.548 + ("YEARLY", {"interval" : 2}),
1.549 + ("BYMONTH", {"values" : [1, 2, 3]})
1.550 + ]
1.551 +
1.552 +l = order_qualifiers(qualifiers)
1.553 +show(l)
1.554 +dt = (1997, 3, 10, 9, 0, 0)
1.555 +l = get_datetime_structure(dt)
1.556 +show(l)
1.557 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.558 +show(l)
1.559 +
1.560 +s = get_selector(dt, qualifiers)
1.561 +l = s.materialise(dt, (2003, 12, 24, 0, 0, 0), 10)
1.562 +print len(l) == 10, 10, len(l)
1.563 +print l[0] == (1997, 3, 10, 9, 0, 0), (1997, 3, 10, 9, 0, 0), l[0]
1.564 +print l[-1] == (2003, 3, 10, 9, 0, 0), (2003, 3, 10, 9, 0, 0), l[-1]
1.565 +print
1.566 +
1.567 +qualifiers = [
1.568 + ("YEARLY", {"interval" : 3}),
1.569 + ("BYYEARDAY", {"values" : [1, 100, 200]})
1.570 + ]
1.571 +
1.572 +l = order_qualifiers(qualifiers)
1.573 +show(l)
1.574 +dt = (1997, 1, 1, 9, 0, 0)
1.575 +l = get_datetime_structure(dt)
1.576 +show(l)
1.577 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.578 +show(l)
1.579 +
1.580 +s = get_selector(dt, qualifiers)
1.581 +l = s.materialise(dt, (2006, 2, 1, 0, 0, 0), 10)
1.582 +print len(l) == 10, 10, len(l)
1.583 +print l[0] == (1997, 1, 1, 9, 0, 0), (1997, 1, 1, 9, 0, 0), l[0]
1.584 +print l[-1] == (2006, 1, 1, 9, 0, 0), (2006, 1, 1, 9, 0, 0), l[-1]
1.585 +print
1.586 +
1.587 +qualifiers = [
1.588 + ("YEARLY", {"interval" : 1}),
1.589 + ("BYDAY", {"values" : [(1, 20)]})
1.590 + ]
1.591 +
1.592 +l = order_qualifiers(qualifiers)
1.593 +show(l)
1.594 +dt = (1997, 5, 19, 9, 0, 0)
1.595 +l = get_datetime_structure(dt)
1.596 +show(l)
1.597 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.598 +show(l)
1.599 +
1.600 +s = get_selector(dt, qualifiers)
1.601 +l = s.materialise(dt, (1999, 12, 24, 0, 0, 0))
1.602 +print len(l) == 3, 3, len(l)
1.603 +print l[0] == (1997, 5, 19, 9, 0, 0), (1997, 5, 19, 9, 0, 0), l[0]
1.604 +print l[-1] == (1999, 5, 17, 9, 0, 0), (1999, 5, 17, 9, 0, 0), l[-1]
1.605 +print
1.606 +
1.607 +"""
1.608 +qualifiers = [
1.609 + ("YEARLY", {"interval" : 1}),
1.610 + ("BYWEEKNO", {"values" : [20]}),
1.611 + ("BYDAY", {"values" : [(1, None)]})
1.612 + ]
1.613 +
1.614 +l = order_qualifiers(qualifiers)
1.615 +show(l)
1.616 +dt = (1997, 5, 12, 9, 0, 0)
1.617 +l = get_datetime_structure(dt)
1.618 +show(l)
1.619 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.620 +show(l)
1.621 +
1.622 +s = get_selector(dt, qualifiers)
1.623 +l = s.materialise(dt, (1999, 12, 24, 0, 0, 0))
1.624 +print len(l) == 3, 3, len(l)
1.625 +print l[0] == (1997, 5, 12, 9, 0, 0), (1997, 5, 12, 9, 0, 0), l[0]
1.626 +print l[-1] == (1999, 5, 17, 9, 0, 0), (1999, 5, 17, 9, 0, 0), l[-1]
1.627 +print
1.628 +"""
1.629 +
1.630 +qualifiers = [
1.631 + ("YEARLY", {"interval" : 1}),
1.632 + ("BYMONTH", {"values" : [3]}),
1.633 + ("BYDAY", {"values" : [(4, None)]})
1.634 + ]
1.635 +
1.636 +l = order_qualifiers(qualifiers)
1.637 +show(l)
1.638 +dt = (1997, 3, 13, 9, 0, 0)
1.639 +l = get_datetime_structure(dt)
1.640 +show(l)
1.641 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.642 +show(l)
1.643 +
1.644 +s = get_selector(dt, qualifiers)
1.645 +l = s.materialise(dt, (1999, 12, 24, 0, 0, 0))
1.646 +print len(l) == 11, 11, len(l)
1.647 +print l[0] == (1997, 3, 13, 9, 0, 0), (1997, 3, 13, 9, 0, 0), l[0]
1.648 +print l[-1] == (1999, 3, 25, 9, 0, 0), (1999, 3, 25, 9, 0, 0), l[-1]
1.649 +print
1.650 +
1.651 +qualifiers = [
1.652 + ("YEARLY", {"interval" : 1}),
1.653 + ("BYMONTH", {"values" : [6, 7, 8]}),
1.654 + ("BYDAY", {"values" : [(4, None)]})
1.655 + ]
1.656 +
1.657 +l = order_qualifiers(qualifiers)
1.658 +show(l)
1.659 +dt = (1997, 6, 5, 9, 0, 0)
1.660 +l = get_datetime_structure(dt)
1.661 +show(l)
1.662 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.663 +show(l)
1.664 +
1.665 +s = get_selector(dt, qualifiers)
1.666 +l = s.materialise(dt, (1999, 12, 24, 0, 0, 0))
1.667 +print len(l) == 39, 39, len(l)
1.668 +print l[0] == (1997, 6, 5, 9, 0, 0), (1997, 6, 5, 9, 0, 0), l[0]
1.669 +print l[-1] == (1999, 8, 26, 9, 0, 0), (1999, 8, 26, 9, 0, 0), l[-1]
1.670 +print
1.671 +
1.672 +qualifiers = [
1.673 + ("MONTHLY", {"interval" : 1}),
1.674 + ("BYMONTHDAY", {"values" : [13]}),
1.675 + ("BYDAY", {"values" : [(5, None)]})
1.676 + ]
1.677 +
1.678 +l = order_qualifiers(qualifiers)
1.679 +show(l)
1.680 +dt = (1997, 9, 2, 9, 0, 0)
1.681 +l = get_datetime_structure(dt)
1.682 +show(l)
1.683 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.684 +show(l)
1.685 +
1.686 +s = get_selector(dt, qualifiers)
1.687 +l = s.materialise(dt, (2000, 12, 24, 0, 0, 0))
1.688 +print len(l) == 5, 5, len(l)
1.689 +print l[0] == (1998, 2, 13, 9, 0, 0), (1998, 2, 13, 9, 0, 0), l[0]
1.690 +print l[-1] == (2000, 10, 13, 9, 0, 0), (2000, 10, 13, 9, 0, 0), l[-1]
1.691 +print
1.692 +
1.693 +qualifiers = [
1.694 + ("MONTHLY", {"interval" : 1}),
1.695 + ("BYMONTHDAY", {"values" : [7, 8, 9, 10, 11, 12, 13]}),
1.696 + ("BYDAY", {"values" : [(6, None)]})
1.697 + ]
1.698 +
1.699 +l = order_qualifiers(qualifiers)
1.700 +show(l)
1.701 +dt = (1997, 9, 13, 9, 0, 0)
1.702 +l = get_datetime_structure(dt)
1.703 +show(l)
1.704 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.705 +show(l)
1.706 +
1.707 +s = get_selector(dt, qualifiers)
1.708 +l = s.materialise(dt, (1998, 6, 30, 0, 0, 0))
1.709 +print len(l) == 10, 10, len(l)
1.710 +print l[0] == (1997, 9, 13, 9, 0, 0), (1997, 9, 13, 9, 0, 0), l[0]
1.711 +print l[-1] == (1998, 6, 13, 9, 0, 0), (1998, 6, 13, 9, 0, 0), l[-1]
1.712 +print
1.713 +
1.714 +qualifiers = [
1.715 + ("YEARLY", {"interval" : 4}),
1.716 + ("BYMONTH", {"values" : [11]}),
1.717 + ("BYMONTHDAY", {"values" : [2, 3, 4, 5, 6, 7, 8]}),
1.718 + ("BYDAY", {"values" : [(2, None)]})
1.719 + ]
1.720 +
1.721 +l = order_qualifiers(qualifiers)
1.722 +show(l)
1.723 +dt = (1996, 11, 5, 9, 0, 0)
1.724 +l = get_datetime_structure(dt)
1.725 +show(l)
1.726 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.727 +show(l)
1.728 +
1.729 +s = get_selector(dt, qualifiers)
1.730 +l = s.materialise(dt, (2004, 12, 24, 0, 0, 0))
1.731 +print len(l) == 3, 3, len(l)
1.732 +print l[0] == (1996, 11, 5, 9, 0, 0), (1996, 11, 5, 9, 0, 0), l[0]
1.733 +print l[-1] == (2004, 11, 2, 9, 0, 0), (2004, 11, 2, 9, 0, 0), l[-1]
1.734 +print
1.735 +
1.736 +qualifiers = [
1.737 + ("MONTHLY", {"interval" : 1}),
1.738 + ("BYDAY", {"values" : [(2, None), (3, None), (4, None)]})
1.739 + ]
1.740 +
1.741 +l = order_qualifiers(qualifiers)
1.742 +show(l)
1.743 +dt = (1997, 9, 4, 9, 0, 0)
1.744 +l = get_datetime_structure(dt)
1.745 +show(l)
1.746 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.747 +show(l)
1.748 +
1.749 +s = get_selector(dt, qualifiers)
1.750 +l = s.materialise(dt, (1997, 12, 24, 0, 0, 0), 3, [3])
1.751 +print len(l) == 3, 3, len(l)
1.752 +print l[0] == (1997, 9, 4, 9, 0, 0), (1997, 9, 4, 9, 0, 0), l[0]
1.753 +print l[-1] == (1997, 11, 6, 9, 0, 0), (1997, 11, 6, 9, 0, 0), l[-1]
1.754 +print
1.755 +
1.756 +l2 = l
1.757 +
1.758 +qualifiers = [
1.759 + ("MONTHLY", {"interval" : 1}),
1.760 + ("BYDAY", {"values" : [(1, None), (2, None), (3, None), (4, None), (5, None)]})
1.761 + ]
1.762 +
1.763 +l = order_qualifiers(qualifiers)
1.764 +show(l)
1.765 +dt = (1997, 9, 29, 9, 0, 0)
1.766 +l = get_datetime_structure(dt)
1.767 +show(l)
1.768 +l = combine_datetime_with_qualifiers(dt, qualifiers)
1.769 +show(l)
1.770 +
1.771 +s = get_selector(dt, qualifiers)
1.772 +l = s.materialise(dt, (1998, 4, 1, 0, 0, 0), None, [-2])
1.773 +print len(l) == 7, 7, len(l)
1.774 +print l[0] == (1997, 9, 29, 9, 0, 0), (1997, 9, 29, 9, 0, 0), l[0]
1.775 +print l[-1] == (1998, 3, 30, 9, 0, 0), (1998, 3, 30, 9, 0, 0), l[-1]
1.776 +print
1.777 +
1.778 +# vim: tabstop=4 expandtab shiftwidth=4