paul@33 | 1 | #!/usr/bin/env python |
paul@33 | 2 | |
paul@600 | 3 | """ |
paul@600 | 4 | Test qualifiers for recurring events. |
paul@600 | 5 | |
paul@1241 | 6 | Copyright (C) 2014, 2015, 2017 Paul Boddie <paul@boddie.org.uk> |
paul@600 | 7 | |
paul@600 | 8 | This program is free software; you can redistribute it and/or modify it under |
paul@600 | 9 | the terms of the GNU General Public License as published by the Free Software |
paul@600 | 10 | Foundation; either version 3 of the License, or (at your option) any later |
paul@600 | 11 | version. |
paul@600 | 12 | |
paul@600 | 13 | This program is distributed in the hope that it will be useful, but WITHOUT |
paul@600 | 14 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
paul@600 | 15 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
paul@600 | 16 | details. |
paul@600 | 17 | |
paul@600 | 18 | You should have received a copy of the GNU General Public License along with |
paul@600 | 19 | this program. If not, see <http://www.gnu.org/licenses/>. |
paul@600 | 20 | """ |
paul@600 | 21 | |
paul@33 | 22 | from vRecurrence import * |
paul@33 | 23 | |
paul@33 | 24 | def show(l): |
paul@33 | 25 | for x in l: |
paul@33 | 26 | print x |
paul@33 | 27 | print |
paul@33 | 28 | |
paul@1411 | 29 | def select(dt, qualifiers): |
paul@1411 | 30 | sel = make_selectors(qualifiers) |
paul@1411 | 31 | show(sel) |
paul@1411 | 32 | l = get_datetime_structure(dt) |
paul@1411 | 33 | show(l) |
paul@1411 | 34 | csel = combine_datetime_with_selectors(dt, sel) |
paul@1411 | 35 | show(csel) |
paul@1411 | 36 | |
paul@1411 | 37 | s = get_selector(dt, sel) |
paul@1411 | 38 | csel = get_selectors_from_selector(s) |
paul@1411 | 39 | show(csel) |
paul@1411 | 40 | return s |
paul@1411 | 41 | |
paul@33 | 42 | qualifiers = [ |
paul@33 | 43 | ("YEARLY", {"interval" : 1}) |
paul@33 | 44 | ] |
paul@33 | 45 | dt = (1997, 11, 2) |
paul@1411 | 46 | s = select(dt, qualifiers) |
paul@1404 | 47 | |
paul@35 | 48 | l = s.materialise(dt, (2003, 12, 24)) |
paul@39 | 49 | print len(l) == 7, 7, len(l) |
paul@39 | 50 | print l[0] == (1997, 11, 2), (1997, 11, 2), l[0] |
paul@39 | 51 | print l[-1] == (2003, 11, 2), (2003, 11, 2), l[-1] |
paul@33 | 52 | print |
paul@33 | 53 | |
paul@33 | 54 | qualifiers = [ |
paul@33 | 55 | ("YEARLY", {"interval" : 2}), |
paul@33 | 56 | ("BYMONTH", {"values" : [1]}), |
paul@1404 | 57 | ("BYDAY", {"values" : [(7, None)]}), |
paul@33 | 58 | ("BYHOUR", {"values" : [8, 9]}), |
paul@33 | 59 | ("BYMINUTE", {"values" : [30]}) |
paul@33 | 60 | ] |
paul@33 | 61 | dt = (1997, 1, 5, 8, 30, 0) |
paul@1411 | 62 | s = select(dt, qualifiers) |
paul@33 | 63 | |
paul@35 | 64 | l = s.materialise(dt, (2003, 12, 24, 0, 0, 0)) |
paul@1404 | 65 | print len(l) == 34, 34, len(l) |
paul@1404 | 66 | print l[0] == (1997, 1, 5, 8, 30, 0), (1997, 1, 5, 8, 30, 0), l[0] |
paul@1404 | 67 | print l[-1] == (2003, 1, 26, 9, 30, 0), (2003, 1, 26, 9, 30, 0), l[-1] |
paul@33 | 68 | print |
paul@33 | 69 | |
paul@33 | 70 | qualifiers = [ |
paul@1361 | 71 | ("DAILY", {"interval" : 1}), |
paul@1361 | 72 | ("COUNT", {"values" : [10]}) |
paul@33 | 73 | ] |
paul@33 | 74 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 75 | s = select(dt, qualifiers) |
paul@1404 | 76 | |
paul@1361 | 77 | l = s.materialise(dt, (1997, 12, 24)) |
paul@39 | 78 | print len(l) == 10, 10, len(l) |
paul@39 | 79 | print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0] |
paul@39 | 80 | print l[-1] == (1997, 9, 11, 9, 0, 0), (1997, 9, 11, 9, 0, 0), l[-1] |
paul@33 | 81 | print |
paul@33 | 82 | |
paul@33 | 83 | qualifiers = [ |
paul@33 | 84 | ("DAILY", {"interval" : 1}) |
paul@33 | 85 | ] |
paul@33 | 86 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 87 | s = select(dt, qualifiers) |
paul@1404 | 88 | |
paul@35 | 89 | l = s.materialise(dt, (1997, 12, 24, 0, 0, 0)) |
paul@39 | 90 | print len(l) == 113, 113, len(l) |
paul@39 | 91 | print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0] |
paul@39 | 92 | print l[-1] == (1997, 12, 23, 9, 0, 0), (1997, 12, 23, 9, 0, 0), l[-1] |
paul@33 | 93 | print |
paul@33 | 94 | |
paul@33 | 95 | qualifiers = [ |
paul@33 | 96 | ("DAILY", {"interval" : 2}) |
paul@33 | 97 | ] |
paul@33 | 98 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 99 | s = select(dt, qualifiers) |
paul@1404 | 100 | |
paul@35 | 101 | l = s.materialise(dt, (1997, 12, 24, 0, 0, 0)) |
paul@39 | 102 | print len(l) == 57, 57, len(l) |
paul@39 | 103 | print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0] |
paul@39 | 104 | print l[-1] == (1997, 12, 23, 9, 0, 0), (1997, 12, 23, 9, 0, 0), l[-1] |
paul@33 | 105 | print |
paul@33 | 106 | |
paul@33 | 107 | qualifiers = [ |
paul@33 | 108 | ("WEEKLY", {"interval" : 1}) |
paul@33 | 109 | ] |
paul@33 | 110 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 111 | s = select(dt, qualifiers) |
paul@1404 | 112 | |
paul@35 | 113 | l = s.materialise(dt, (1997, 12, 24, 0, 0, 0)) |
paul@39 | 114 | print len(l) == 17, 17, len(l) |
paul@39 | 115 | print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0] |
paul@39 | 116 | print l[-1] == (1997, 12, 23, 9, 0, 0), (1997, 12, 23, 9, 0, 0), l[-1] |
paul@33 | 117 | print |
paul@33 | 118 | |
paul@33 | 119 | qualifiers = [ |
paul@1361 | 120 | ("DAILY", {"interval" : 10}), |
paul@1361 | 121 | ("COUNT", {"values" : [5]}) |
paul@33 | 122 | ] |
paul@33 | 123 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 124 | s = select(dt, qualifiers) |
paul@1404 | 125 | |
paul@1361 | 126 | l = s.materialise(dt, (1997, 12, 24, 0, 0, 0)) |
paul@39 | 127 | print len(l) == 5, 5, len(l) |
paul@39 | 128 | print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0] |
paul@39 | 129 | print l[-1] == (1997, 10, 12, 9, 0, 0), (1997, 10, 12, 9, 0, 0), l[-1] |
paul@33 | 130 | print |
paul@33 | 131 | |
paul@33 | 132 | qualifiers = [ |
paul@33 | 133 | ("YEARLY", {"interval" : 1}), |
paul@33 | 134 | ("BYMONTH", {"values" : [1]}), |
paul@34 | 135 | ("BYDAY", {"values" : [(1, None), (2, None), (3, None), (4, None), (5, None), (6, None), (7, None)]}) |
paul@33 | 136 | ] |
paul@33 | 137 | dt = (1998, 1, 1, 9, 0, 0) |
paul@1411 | 138 | s = select(dt, qualifiers) |
paul@1404 | 139 | |
paul@35 | 140 | l = s.materialise(dt, (2000, 1, 31, 14, 0, 0)) |
paul@39 | 141 | print len(l) == 93, 93, len(l) |
paul@39 | 142 | print l[0] == (1998, 1, 1, 9, 0, 0), (1998, 1, 1, 9, 0, 0), l[0] |
paul@39 | 143 | print l[-1] == (2000, 1, 31, 9, 0, 0), (2000, 1, 31, 9, 0, 0), l[-1] |
paul@33 | 144 | print |
paul@33 | 145 | |
paul@33 | 146 | qualifiers = [ |
paul@33 | 147 | ("DAILY", {"interval" : 1}), |
paul@33 | 148 | ("BYMONTH", {"values" : [1]}) |
paul@33 | 149 | ] |
paul@33 | 150 | dt = (1998, 1, 1, 9, 0, 0) |
paul@1411 | 151 | s = select(dt, qualifiers) |
paul@1404 | 152 | |
paul@35 | 153 | l = s.materialise(dt, (2000, 1, 31, 14, 0, 0)) |
paul@39 | 154 | print len(l) == 93, 93, len(l) |
paul@39 | 155 | print l[0] == (1998, 1, 1, 9, 0, 0), (1998, 1, 1, 9, 0, 0), l[0] |
paul@39 | 156 | print l[-1] == (2000, 1, 31, 9, 0, 0), (2000, 1, 31, 9, 0, 0), l[-1] |
paul@33 | 157 | print |
paul@33 | 158 | |
paul@33 | 159 | qualifiers = [ |
paul@1361 | 160 | ("WEEKLY", {"interval" : 1}), |
paul@1361 | 161 | ("COUNT", {"values" : [10]}) |
paul@33 | 162 | ] |
paul@33 | 163 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 164 | s = select(dt, qualifiers) |
paul@1404 | 165 | |
paul@1361 | 166 | l = s.materialise(dt, (1997, 12, 24, 0, 0, 0)) |
paul@39 | 167 | print len(l) == 10, 10, len(l) |
paul@39 | 168 | print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0] |
paul@39 | 169 | print l[-1] == (1997, 11, 4, 9, 0, 0), (1997, 11, 4, 9, 0, 0), l[-1] |
paul@33 | 170 | print |
paul@33 | 171 | |
paul@33 | 172 | qualifiers = [ |
paul@33 | 173 | ("WEEKLY", {"interval" : 1}) |
paul@33 | 174 | ] |
paul@33 | 175 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 176 | s = select(dt, qualifiers) |
paul@1404 | 177 | |
paul@35 | 178 | l = s.materialise(dt, (1997, 12, 24, 0, 0, 0)) |
paul@39 | 179 | print len(l) == 17, 17, len(l) |
paul@39 | 180 | print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0] |
paul@39 | 181 | print l[-1] == (1997, 12, 23, 9, 0, 0), (1997, 12, 23, 9, 0, 0), l[-1] |
paul@33 | 182 | print |
paul@33 | 183 | |
paul@33 | 184 | qualifiers = [ |
paul@1361 | 185 | ("WEEKLY", {"interval" : 1}) |
paul@1361 | 186 | ] |
paul@1361 | 187 | dt = (1997, 9, 2) |
paul@1411 | 188 | s = select(dt, qualifiers) |
paul@1404 | 189 | |
paul@1361 | 190 | l = s.materialise(dt, (1997, 12, 24, 0, 0, 0)) |
paul@1361 | 191 | print len(l) == 17, 17, len(l) |
paul@1361 | 192 | print l[0] == (1997, 9, 2), (1997, 9, 2), l[0] |
paul@1361 | 193 | print l[-1] == (1997, 12, 23), (1997, 12, 23), l[-1] |
paul@1361 | 194 | print |
paul@1361 | 195 | |
paul@1361 | 196 | qualifiers = [ |
paul@33 | 197 | ("WEEKLY", {"interval" : 2}) |
paul@33 | 198 | ] |
paul@33 | 199 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 200 | s = select(dt, qualifiers) |
paul@1404 | 201 | |
paul@35 | 202 | l = s.materialise(dt, (1998, 2, 20, 0, 0, 0)) |
paul@39 | 203 | print len(l) == 13, 13, len(l) |
paul@39 | 204 | print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0] |
paul@39 | 205 | print l[-1] == (1998, 2, 17, 9, 0, 0), (1998, 2, 17, 9, 0, 0), l[-1] |
paul@33 | 206 | print |
paul@33 | 207 | |
paul@33 | 208 | qualifiers = [ |
paul@33 | 209 | ("WEEKLY", {"interval" : 1}), |
paul@34 | 210 | ("BYDAY", {"values" : [(2, None), (4, None)]}) |
paul@33 | 211 | ] |
paul@33 | 212 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 213 | s = select(dt, qualifiers) |
paul@1404 | 214 | |
paul@35 | 215 | l = s.materialise(dt, (1997, 10, 7, 9, 0, 0)) |
paul@39 | 216 | print len(l) == 10, 10, len(l) |
paul@39 | 217 | print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0] |
paul@39 | 218 | print l[-1] == (1997, 10, 2, 9, 0, 0), (1997, 10, 2, 9, 0, 0), l[-1] |
paul@33 | 219 | print |
paul@33 | 220 | |
paul@33 | 221 | qualifiers = [ |
paul@33 | 222 | ("WEEKLY", {"interval" : 1}), |
paul@1361 | 223 | ("BYDAY", {"values" : [(2, None), (4, None)]}), |
paul@1361 | 224 | ("COUNT", {"values" : [10]}) |
paul@33 | 225 | ] |
paul@33 | 226 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 227 | s = select(dt, qualifiers) |
paul@1404 | 228 | |
paul@1361 | 229 | l = s.materialise(dt, (1997, 12, 24, 0, 0, 0)) |
paul@39 | 230 | print len(l) == 10, 10, len(l) |
paul@39 | 231 | print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0] |
paul@39 | 232 | print l[-1] == (1997, 10, 2, 9, 0, 0), (1997, 10, 2, 9, 0, 0), l[-1] |
paul@33 | 233 | print |
paul@33 | 234 | |
paul@33 | 235 | qualifiers = [ |
paul@33 | 236 | ("WEEKLY", {"interval" : 2}), |
paul@34 | 237 | ("BYDAY", {"values" : [(1, None), (3, None), (5, None)]}) |
paul@33 | 238 | ] |
paul@33 | 239 | dt = (1997, 9, 1, 9, 0, 0) |
paul@1411 | 240 | s = select(dt, qualifiers) |
paul@1404 | 241 | |
paul@35 | 242 | l = s.materialise(dt, (1997, 12, 24, 0, 0, 0)) |
paul@39 | 243 | print len(l) == 25, 25, len(l) |
paul@39 | 244 | print l[0] == (1997, 9, 1, 9, 0, 0), (1997, 9, 1, 9, 0, 0), l[0] |
paul@39 | 245 | print l[-1] == (1997, 12, 22, 9, 0, 0), (1997, 12, 22, 9, 0, 0), l[-1] |
paul@33 | 246 | print |
paul@33 | 247 | |
paul@34 | 248 | qualifiers = [ |
paul@34 | 249 | ("WEEKLY", {"interval" : 2}), |
paul@1361 | 250 | ("BYDAY", {"values" : [(2, None), (4, None)]}), |
paul@1361 | 251 | ("COUNT", {"values" : [8]}) |
paul@34 | 252 | ] |
paul@34 | 253 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 254 | s = select(dt, qualifiers) |
paul@1404 | 255 | |
paul@1361 | 256 | l = s.materialise(dt, (1997, 12, 24, 0, 0, 0)) |
paul@39 | 257 | print len(l) == 8, 8, len(l) |
paul@39 | 258 | print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0] |
paul@39 | 259 | print l[-1] == (1997, 10, 16, 9, 0, 0), (1997, 10, 16, 9, 0, 0), l[-1] |
paul@34 | 260 | print |
paul@34 | 261 | |
paul@34 | 262 | qualifiers = [ |
paul@34 | 263 | ("MONTHLY", {"interval" : 1}), |
paul@1361 | 264 | ("BYDAY", {"values" : [(5, 1)]}), |
paul@1361 | 265 | ("COUNT", {"values" : [10]}) |
paul@34 | 266 | ] |
paul@34 | 267 | dt = (1997, 9, 5, 9, 0, 0) |
paul@1411 | 268 | s = select(dt, qualifiers) |
paul@1404 | 269 | |
paul@1361 | 270 | l = s.materialise(dt, (1998, 12, 24, 0, 0, 0)) |
paul@39 | 271 | print len(l) == 10, 10, len(l) |
paul@39 | 272 | print l[0] == (1997, 9, 5, 9, 0, 0), (1997, 9, 5, 9, 0, 0), l[0] |
paul@39 | 273 | print l[-1] == (1998, 6, 5, 9, 0, 0), (1998, 6, 5, 9, 0, 0), l[-1] |
paul@34 | 274 | print |
paul@34 | 275 | |
paul@34 | 276 | qualifiers = [ |
paul@34 | 277 | ("MONTHLY", {"interval" : 1}), |
paul@39 | 278 | ("BYDAY", {"values" : [(5, 1)]}) |
paul@34 | 279 | ] |
paul@34 | 280 | dt = (1997, 9, 5, 9, 0, 0) |
paul@1411 | 281 | s = select(dt, qualifiers) |
paul@1404 | 282 | |
paul@35 | 283 | l = s.materialise(dt, (1997, 12, 24, 0, 0, 0)) |
paul@39 | 284 | print len(l) == 4, 4, len(l) |
paul@39 | 285 | print l[0] == (1997, 9, 5, 9, 0, 0), (1997, 9, 5, 9, 0, 0), l[0] |
paul@39 | 286 | print l[-1] == (1997, 12, 5, 9, 0, 0), (1997, 12, 5, 9, 0, 0), l[-1] |
paul@34 | 287 | print |
paul@34 | 288 | |
paul@34 | 289 | qualifiers = [ |
paul@34 | 290 | ("MONTHLY", {"interval" : 2}), |
paul@1361 | 291 | ("BYDAY", {"values" : [(7, 1), (7, -1)]}), |
paul@1361 | 292 | ("COUNT", {"values" : [10]}) |
paul@34 | 293 | ] |
paul@34 | 294 | dt = (1997, 9, 7, 9, 0, 0) |
paul@1411 | 295 | s = select(dt, qualifiers) |
paul@1404 | 296 | |
paul@1361 | 297 | l = s.materialise(dt, (1998, 12, 24, 0, 0, 0)) |
paul@39 | 298 | print len(l) == 10, 10, len(l) |
paul@39 | 299 | print l[0] == (1997, 9, 7, 9, 0, 0), (1997, 9, 7, 9, 0, 0), l[0] |
paul@39 | 300 | print l[-1] == (1998, 5, 31, 9, 0, 0), (1998, 5, 31, 9, 0, 0), l[-1] |
paul@34 | 301 | print |
paul@34 | 302 | |
paul@34 | 303 | qualifiers = [ |
paul@34 | 304 | ("MONTHLY", {"interval" : 1}), |
paul@1361 | 305 | ("BYDAY", {"values" : [(1, -2)]}), |
paul@1361 | 306 | ("COUNT", {"values" : [6]}) |
paul@34 | 307 | ] |
paul@34 | 308 | dt = (1997, 9, 22, 9, 0, 0) |
paul@1411 | 309 | s = select(dt, qualifiers) |
paul@1404 | 310 | |
paul@1361 | 311 | l = s.materialise(dt, (1998, 12, 24, 0, 0, 0)) |
paul@39 | 312 | print len(l) == 6, 6, len(l) |
paul@39 | 313 | print l[0] == (1997, 9, 22, 9, 0, 0), (1997, 9, 22, 9, 0, 0), l[0] |
paul@39 | 314 | print l[-1] == (1998, 2, 16, 9, 0, 0), (1998, 2, 16, 9, 0, 0), l[-1] |
paul@34 | 315 | print |
paul@34 | 316 | |
paul@35 | 317 | qualifiers = [ |
paul@35 | 318 | ("MONTHLY", {"interval" : 1}), |
paul@1361 | 319 | ("BYMONTHDAY", {"values" : [-3]}), |
paul@1361 | 320 | ("COUNT", {"values" : [6]}) |
paul@35 | 321 | ] |
paul@35 | 322 | dt = (1997, 9, 28, 9, 0, 0) |
paul@1411 | 323 | s = select(dt, qualifiers) |
paul@1404 | 324 | |
paul@1361 | 325 | l = s.materialise(dt, (1998, 12, 24, 0, 0, 0)) |
paul@39 | 326 | print len(l) == 6, 6, len(l) |
paul@39 | 327 | print l[0] == (1997, 9, 28, 9, 0, 0), (1997, 9, 28, 9, 0, 0), l[0] |
paul@39 | 328 | print l[-1] == (1998, 2, 26, 9, 0, 0), (1998, 2, 26, 9, 0, 0), l[-1] |
paul@35 | 329 | print |
paul@35 | 330 | |
paul@35 | 331 | qualifiers = [ |
paul@35 | 332 | ("MONTHLY", {"interval" : 1}), |
paul@1361 | 333 | ("BYMONTHDAY", {"values" : [15, 2]}), # test ordering |
paul@1361 | 334 | ("COUNT", {"values" : [10]}) |
paul@35 | 335 | ] |
paul@35 | 336 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 337 | s = select(dt, qualifiers) |
paul@1404 | 338 | |
paul@1361 | 339 | l = s.materialise(dt, (1998, 12, 24, 0, 0, 0)) |
paul@39 | 340 | print len(l) == 10, 10, len(l) |
paul@39 | 341 | print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0] |
paul@39 | 342 | print l[-1] == (1998, 1, 15, 9, 0, 0), (1998, 1, 15, 9, 0, 0), l[-1] |
paul@35 | 343 | print |
paul@35 | 344 | |
paul@35 | 345 | qualifiers = [ |
paul@35 | 346 | ("MONTHLY", {"interval" : 1}), |
paul@1361 | 347 | ("BYMONTHDAY", {"values" : [1, -1]}), |
paul@1361 | 348 | ("COUNT", {"values" : [10]}) |
paul@35 | 349 | ] |
paul@35 | 350 | dt = (1997, 9, 30, 9, 0, 0) |
paul@1411 | 351 | s = select(dt, qualifiers) |
paul@1404 | 352 | |
paul@1361 | 353 | l = s.materialise(dt, (1998, 12, 24, 0, 0, 0)) |
paul@39 | 354 | print len(l) == 10, 10, len(l) |
paul@39 | 355 | print l[0] == (1997, 9, 30, 9, 0, 0), (1997, 9, 30, 9, 0, 0), l[0] |
paul@39 | 356 | print l[-1] == (1998, 2, 1, 9, 0, 0), (1998, 2, 1, 9, 0, 0), l[-1] |
paul@35 | 357 | print |
paul@35 | 358 | |
paul@36 | 359 | qualifiers = [ |
paul@36 | 360 | ("MONTHLY", {"interval" : 18}), |
paul@1361 | 361 | ("BYMONTHDAY", {"values" : [10, 11, 12, 13, 14, 15]}), |
paul@1361 | 362 | ("COUNT", {"values" : [10]}) |
paul@36 | 363 | ] |
paul@36 | 364 | dt = (1997, 9, 10, 9, 0, 0) |
paul@1411 | 365 | s = select(dt, qualifiers) |
paul@1404 | 366 | |
paul@1361 | 367 | l = s.materialise(dt, (1999, 12, 24, 0, 0, 0)) |
paul@39 | 368 | print len(l) == 10, 10, len(l) |
paul@39 | 369 | print l[0] == (1997, 9, 10, 9, 0, 0), (1997, 9, 10, 9, 0, 0), l[0] |
paul@39 | 370 | print l[-1] == (1999, 3, 13, 9, 0, 0), (1999, 3, 13, 9, 0, 0), l[-1] |
paul@36 | 371 | print |
paul@36 | 372 | |
paul@36 | 373 | qualifiers = [ |
paul@36 | 374 | ("MONTHLY", {"interval" : 2}), |
paul@36 | 375 | ("BYDAY", {"values" : [(2, None)]}) |
paul@36 | 376 | ] |
paul@36 | 377 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 378 | s = select(dt, qualifiers) |
paul@1404 | 379 | |
paul@36 | 380 | l = s.materialise(dt, (1998, 4, 1, 0, 0, 0)) |
paul@39 | 381 | print len(l) == 18, 18, len(l) |
paul@39 | 382 | print l[0] == (1997, 9, 2, 9, 0, 0), (1997, 9, 2, 9, 0, 0), l[0] |
paul@39 | 383 | print l[-1] == (1998, 3, 31, 9, 0, 0), (1998, 3, 31, 9, 0, 0), l[-1] |
paul@36 | 384 | print |
paul@36 | 385 | |
paul@36 | 386 | qualifiers = [ |
paul@36 | 387 | ("YEARLY", {"interval" : 1}), |
paul@1361 | 388 | ("BYMONTH", {"values" : [6, 7]}), |
paul@1361 | 389 | ("COUNT", {"values" : [10]}) |
paul@36 | 390 | ] |
paul@36 | 391 | dt = (1997, 6, 10, 9, 0, 0) |
paul@1411 | 392 | s = select(dt, qualifiers) |
paul@1404 | 393 | |
paul@1361 | 394 | l = s.materialise(dt, (2001, 12, 24, 0, 0, 0)) |
paul@39 | 395 | print len(l) == 10, 10, len(l) |
paul@39 | 396 | print l[0] == (1997, 6, 10, 9, 0, 0), (1997, 6, 10, 9, 0, 0), l[0] |
paul@39 | 397 | print l[-1] == (2001, 7, 10, 9, 0, 0), (2001, 7, 10, 9, 0, 0), l[-1] |
paul@36 | 398 | print |
paul@36 | 399 | |
paul@36 | 400 | qualifiers = [ |
paul@36 | 401 | ("YEARLY", {"interval" : 2}), |
paul@1361 | 402 | ("BYMONTH", {"values" : [1, 2, 3]}), |
paul@1361 | 403 | ("COUNT", {"values" : [10]}) |
paul@36 | 404 | ] |
paul@36 | 405 | dt = (1997, 3, 10, 9, 0, 0) |
paul@1411 | 406 | s = select(dt, qualifiers) |
paul@1404 | 407 | |
paul@1361 | 408 | l = s.materialise(dt, (2003, 12, 24, 0, 0, 0)) |
paul@39 | 409 | print len(l) == 10, 10, len(l) |
paul@39 | 410 | print l[0] == (1997, 3, 10, 9, 0, 0), (1997, 3, 10, 9, 0, 0), l[0] |
paul@39 | 411 | print l[-1] == (2003, 3, 10, 9, 0, 0), (2003, 3, 10, 9, 0, 0), l[-1] |
paul@36 | 412 | print |
paul@36 | 413 | |
paul@37 | 414 | qualifiers = [ |
paul@37 | 415 | ("YEARLY", {"interval" : 3}), |
paul@1361 | 416 | ("BYYEARDAY", {"values" : [1, 100, 200]}), |
paul@1361 | 417 | ("COUNT", {"values" : [10]}) |
paul@37 | 418 | ] |
paul@37 | 419 | dt = (1997, 1, 1, 9, 0, 0) |
paul@1411 | 420 | s = select(dt, qualifiers) |
paul@1404 | 421 | |
paul@1361 | 422 | l = s.materialise(dt, (2006, 2, 1, 0, 0, 0)) |
paul@39 | 423 | print len(l) == 10, 10, len(l) |
paul@39 | 424 | print l[0] == (1997, 1, 1, 9, 0, 0), (1997, 1, 1, 9, 0, 0), l[0] |
paul@39 | 425 | print l[-1] == (2006, 1, 1, 9, 0, 0), (2006, 1, 1, 9, 0, 0), l[-1] |
paul@39 | 426 | print |
paul@39 | 427 | |
paul@39 | 428 | qualifiers = [ |
paul@39 | 429 | ("YEARLY", {"interval" : 1}), |
paul@39 | 430 | ("BYDAY", {"values" : [(1, 20)]}) |
paul@39 | 431 | ] |
paul@39 | 432 | dt = (1997, 5, 19, 9, 0, 0) |
paul@1411 | 433 | s = select(dt, qualifiers) |
paul@1404 | 434 | |
paul@39 | 435 | l = s.materialise(dt, (1999, 12, 24, 0, 0, 0)) |
paul@39 | 436 | print len(l) == 3, 3, len(l) |
paul@39 | 437 | print l[0] == (1997, 5, 19, 9, 0, 0), (1997, 5, 19, 9, 0, 0), l[0] |
paul@39 | 438 | print l[-1] == (1999, 5, 17, 9, 0, 0), (1999, 5, 17, 9, 0, 0), l[-1] |
paul@37 | 439 | print |
paul@37 | 440 | |
paul@40 | 441 | """ |
paul@40 | 442 | qualifiers = [ |
paul@40 | 443 | ("YEARLY", {"interval" : 1}), |
paul@40 | 444 | ("BYWEEKNO", {"values" : [20]}), |
paul@40 | 445 | ("BYDAY", {"values" : [(1, None)]}) |
paul@40 | 446 | ] |
paul@40 | 447 | dt = (1997, 5, 12, 9, 0, 0) |
paul@1411 | 448 | s = select(dt, qualifiers) |
paul@1404 | 449 | |
paul@40 | 450 | l = s.materialise(dt, (1999, 12, 24, 0, 0, 0)) |
paul@40 | 451 | print len(l) == 3, 3, len(l) |
paul@40 | 452 | print l[0] == (1997, 5, 12, 9, 0, 0), (1997, 5, 12, 9, 0, 0), l[0] |
paul@40 | 453 | print l[-1] == (1999, 5, 17, 9, 0, 0), (1999, 5, 17, 9, 0, 0), l[-1] |
paul@40 | 454 | print |
paul@40 | 455 | """ |
paul@40 | 456 | |
paul@40 | 457 | qualifiers = [ |
paul@40 | 458 | ("YEARLY", {"interval" : 1}), |
paul@40 | 459 | ("BYMONTH", {"values" : [3]}), |
paul@40 | 460 | ("BYDAY", {"values" : [(4, None)]}) |
paul@40 | 461 | ] |
paul@40 | 462 | dt = (1997, 3, 13, 9, 0, 0) |
paul@1411 | 463 | s = select(dt, qualifiers) |
paul@1404 | 464 | |
paul@40 | 465 | l = s.materialise(dt, (1999, 12, 24, 0, 0, 0)) |
paul@40 | 466 | print len(l) == 11, 11, len(l) |
paul@40 | 467 | print l[0] == (1997, 3, 13, 9, 0, 0), (1997, 3, 13, 9, 0, 0), l[0] |
paul@40 | 468 | print l[-1] == (1999, 3, 25, 9, 0, 0), (1999, 3, 25, 9, 0, 0), l[-1] |
paul@40 | 469 | print |
paul@40 | 470 | |
paul@40 | 471 | qualifiers = [ |
paul@40 | 472 | ("YEARLY", {"interval" : 1}), |
paul@40 | 473 | ("BYMONTH", {"values" : [6, 7, 8]}), |
paul@40 | 474 | ("BYDAY", {"values" : [(4, None)]}) |
paul@40 | 475 | ] |
paul@40 | 476 | dt = (1997, 6, 5, 9, 0, 0) |
paul@1411 | 477 | s = select(dt, qualifiers) |
paul@1404 | 478 | |
paul@40 | 479 | l = s.materialise(dt, (1999, 12, 24, 0, 0, 0)) |
paul@40 | 480 | print len(l) == 39, 39, len(l) |
paul@40 | 481 | print l[0] == (1997, 6, 5, 9, 0, 0), (1997, 6, 5, 9, 0, 0), l[0] |
paul@40 | 482 | print l[-1] == (1999, 8, 26, 9, 0, 0), (1999, 8, 26, 9, 0, 0), l[-1] |
paul@40 | 483 | print |
paul@40 | 484 | |
paul@40 | 485 | qualifiers = [ |
paul@40 | 486 | ("MONTHLY", {"interval" : 1}), |
paul@40 | 487 | ("BYMONTHDAY", {"values" : [13]}), |
paul@40 | 488 | ("BYDAY", {"values" : [(5, None)]}) |
paul@40 | 489 | ] |
paul@40 | 490 | dt = (1997, 9, 2, 9, 0, 0) |
paul@1411 | 491 | s = select(dt, qualifiers) |
paul@1404 | 492 | |
paul@40 | 493 | l = s.materialise(dt, (2000, 12, 24, 0, 0, 0)) |
paul@1404 | 494 | print len(l) == 6, 6, len(l) |
paul@1404 | 495 | print l[1] == (1998, 2, 13, 9, 0, 0), (1998, 2, 13, 9, 0, 0), l[1] |
paul@40 | 496 | print l[-1] == (2000, 10, 13, 9, 0, 0), (2000, 10, 13, 9, 0, 0), l[-1] |
paul@40 | 497 | print |
paul@40 | 498 | |
paul@40 | 499 | qualifiers = [ |
paul@40 | 500 | ("MONTHLY", {"interval" : 1}), |
paul@40 | 501 | ("BYMONTHDAY", {"values" : [7, 8, 9, 10, 11, 12, 13]}), |
paul@40 | 502 | ("BYDAY", {"values" : [(6, None)]}) |
paul@40 | 503 | ] |
paul@40 | 504 | dt = (1997, 9, 13, 9, 0, 0) |
paul@1411 | 505 | s = select(dt, qualifiers) |
paul@1404 | 506 | |
paul@40 | 507 | l = s.materialise(dt, (1998, 6, 30, 0, 0, 0)) |
paul@40 | 508 | print len(l) == 10, 10, len(l) |
paul@40 | 509 | print l[0] == (1997, 9, 13, 9, 0, 0), (1997, 9, 13, 9, 0, 0), l[0] |
paul@40 | 510 | print l[-1] == (1998, 6, 13, 9, 0, 0), (1998, 6, 13, 9, 0, 0), l[-1] |
paul@40 | 511 | print |
paul@40 | 512 | |
paul@40 | 513 | qualifiers = [ |
paul@40 | 514 | ("YEARLY", {"interval" : 4}), |
paul@40 | 515 | ("BYMONTH", {"values" : [11]}), |
paul@40 | 516 | ("BYMONTHDAY", {"values" : [2, 3, 4, 5, 6, 7, 8]}), |
paul@40 | 517 | ("BYDAY", {"values" : [(2, None)]}) |
paul@40 | 518 | ] |
paul@40 | 519 | dt = (1996, 11, 5, 9, 0, 0) |
paul@1411 | 520 | s = select(dt, qualifiers) |
paul@1404 | 521 | |
paul@40 | 522 | l = s.materialise(dt, (2004, 12, 24, 0, 0, 0)) |
paul@40 | 523 | print len(l) == 3, 3, len(l) |
paul@40 | 524 | print l[0] == (1996, 11, 5, 9, 0, 0), (1996, 11, 5, 9, 0, 0), l[0] |
paul@40 | 525 | print l[-1] == (2004, 11, 2, 9, 0, 0), (2004, 11, 2, 9, 0, 0), l[-1] |
paul@40 | 526 | print |
paul@40 | 527 | |
paul@45 | 528 | qualifiers = [ |
paul@45 | 529 | ("MONTHLY", {"interval" : 1}), |
paul@1361 | 530 | ("BYDAY", {"values" : [(2, None), (3, None), (4, None)]}), |
paul@1361 | 531 | ("BYSETPOS", {"values" : [3]}), |
paul@1361 | 532 | ("COUNT", {"values" : [3]}) |
paul@45 | 533 | ] |
paul@45 | 534 | dt = (1997, 9, 4, 9, 0, 0) |
paul@1411 | 535 | s = select(dt, qualifiers) |
paul@1404 | 536 | |
paul@1361 | 537 | l = s.materialise(dt, (1997, 12, 24, 0, 0, 0)) |
paul@45 | 538 | print len(l) == 3, 3, len(l) |
paul@45 | 539 | print l[0] == (1997, 9, 4, 9, 0, 0), (1997, 9, 4, 9, 0, 0), l[0] |
paul@45 | 540 | print l[-1] == (1997, 11, 6, 9, 0, 0), (1997, 11, 6, 9, 0, 0), l[-1] |
paul@45 | 541 | print |
paul@45 | 542 | |
paul@45 | 543 | l2 = l |
paul@45 | 544 | |
paul@45 | 545 | qualifiers = [ |
paul@45 | 546 | ("MONTHLY", {"interval" : 1}), |
paul@1361 | 547 | ("BYDAY", {"values" : [(1, None), (2, None), (3, None), (4, None), (5, None)]}), |
paul@1361 | 548 | ("BYSETPOS", {"values" : [-2]}) |
paul@45 | 549 | ] |
paul@45 | 550 | dt = (1997, 9, 29, 9, 0, 0) |
paul@1411 | 551 | s = select(dt, qualifiers) |
paul@1404 | 552 | |
paul@1361 | 553 | l = s.materialise(dt, (1998, 4, 1, 0, 0, 0)) |
paul@45 | 554 | print len(l) == 7, 7, len(l) |
paul@45 | 555 | print l[0] == (1997, 9, 29, 9, 0, 0), (1997, 9, 29, 9, 0, 0), l[0] |
paul@45 | 556 | print l[-1] == (1998, 3, 30, 9, 0, 0), (1998, 3, 30, 9, 0, 0), l[-1] |
paul@45 | 557 | print |
paul@45 | 558 | |
paul@1404 | 559 | qualifiers = get_qualifiers(["BYMONTHDAY=5", "FREQ=HOURLY", "INTERVAL=12"]) |
paul@1241 | 560 | dt = (2017, 6, 13) |
paul@1411 | 561 | s = select(dt, qualifiers) |
paul@1404 | 562 | |
paul@1241 | 563 | l = s.materialise(dt, (2019, 1, 1)) |
paul@1404 | 564 | print len(l) == 37, 37, len(l) |
paul@1404 | 565 | print l[1] == (2017, 7, 5, 0), (2017, 7, 5, 0), l[1] |
paul@1241 | 566 | print l[-1] == (2018, 12, 5, 12), (2018, 12, 5, 12), l[-1] |
paul@1241 | 567 | |
paul@1241 | 568 | qualifiers = get_qualifiers(["FREQ=DAILY", "BYMONTH=1"]) |
paul@1241 | 569 | dt = (2017, 6, 13) |
paul@1411 | 570 | s = select(dt, qualifiers) |
paul@1404 | 571 | |
paul@1241 | 572 | l = s.materialise(dt, (2019, 1, 1)) |
paul@1404 | 573 | print len(l) == 32, 32, len(l) |
paul@1404 | 574 | print l[1] == (2018, 1, 1), (2018, 1, 1), l[1] |
paul@1241 | 575 | print l[-1] == (2018, 1, 31), (2018, 1, 31), l[-1] |
paul@1241 | 576 | |
paul@1359 | 577 | qualifiers = get_qualifiers(["FREQ=MONTHLY", "BYDAY=WE,1FR,2MO,2FR"]) |
paul@1359 | 578 | dt = (2017, 10, 15) |
paul@1411 | 579 | s = select(dt, qualifiers) |
paul@1404 | 580 | |
paul@1359 | 581 | l = s.materialise(dt, (2018, 1, 1)) |
paul@1404 | 582 | print len(l) == 18, 18, len(l) |
paul@1404 | 583 | print l[1] == (2017, 10, 18), (2017, 10, 18), l[1] |
paul@1359 | 584 | print l[-1] == (2017, 12, 27), (2017, 12, 27), l[-1] |
paul@1359 | 585 | |
paul@33 | 586 | # vim: tabstop=4 expandtab shiftwidth=4 |