1/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3/*
4 Copyright (C) 2003, 2004, 2008 StatPro Italia srl
5 Copyright (C) 2005 Ferdinando Ametrano
6 Copyright (C) 2006 Piter Dias
7 Copyright (C) 2008 Charles Chongseok Hyun
8 Copyright (C) 2015 Dmitri Nesteruk
9 Copyright (C) 2020 Piotr Siejda
10 Copyright (C) 2020 Leonardo Arcari
11 Copyright (C) 2020 Kline s.r.l.
12 Copyright (C) 2022 Skandinaviska Enskilda Banken AB (publ)
13 Copyright (C) 2023 Jonghee Lee
14
15 This file is part of QuantLib, a free-software/open-source library
16 for financial quantitative analysts and developers - http://quantlib.org/
17
18 QuantLib is free software: you can redistribute it and/or modify it
19 under the terms of the QuantLib license. You should have received a
20 copy of the license along with this program; if not, please email
21 <quantlib-dev@lists.sf.net>. The license is also available online at
22 <http://quantlib.org/license.shtml>.
23
24 This program is distributed in the hope that it will be useful, but WITHOUT
25 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
26 FOR A PARTICULAR PURPOSE. See the license for more details.
27*/
28
29#include "calendars.hpp"
30#include "utilities.hpp"
31#include <ql/errors.hpp>
32#include <ql/time/calendar.hpp>
33#include <ql/time/calendars/bespokecalendar.hpp>
34#include <ql/time/calendars/brazil.hpp>
35#include <ql/time/calendars/china.hpp>
36#include <ql/time/calendars/denmark.hpp>
37#include <ql/time/calendars/germany.hpp>
38#include <ql/time/calendars/italy.hpp>
39#include <ql/time/calendars/japan.hpp>
40#include <ql/time/calendars/jointcalendar.hpp>
41#include <ql/time/calendars/russia.hpp>
42#include <ql/time/calendars/southkorea.hpp>
43#include <ql/time/calendars/target.hpp>
44#include <ql/time/calendars/unitedkingdom.hpp>
45#include <ql/time/calendars/unitedstates.hpp>
46#include <ql/indexes/ibor/sofr.hpp>
47#include <fstream>
48
49using namespace QuantLib;
50using namespace boost::unit_test_framework;
51
52void CalendarTest::testModifiedCalendars() {
53
54 BOOST_TEST_MESSAGE("Testing calendar modification...");
55
56 Calendar c1 = TARGET();
57 Calendar c2 = UnitedStates(UnitedStates::NYSE);
58 Date d1(1, May, 2004); // holiday for both calendars
59 Date d2(26, April, 2004); // business day
60
61 QL_REQUIRE(c1.isHoliday(d1), "wrong assumption---correct the test");
62 QL_REQUIRE(c1.isBusinessDay(d2), "wrong assumption---correct the test");
63
64 QL_REQUIRE(c2.isHoliday(d1), "wrong assumption---correct the test");
65 QL_REQUIRE(c2.isBusinessDay(d2), "wrong assumption---correct the test");
66
67 // modify the TARGET calendar
68 c1.removeHoliday(d1);
69 c1.addHoliday(d2);
70
71 // test
72 std::set<Date> addedHolidays(c1.addedHolidays());
73 std::set<Date> removedHolidays(c1.removedHolidays());
74
75 QL_REQUIRE(addedHolidays.find(d1) == addedHolidays.end(),
76 "did not expect to find date in addedHolidays");
77 QL_REQUIRE(addedHolidays.find(d2) != addedHolidays.end(),
78 "expected to find date in addedHolidays");
79 QL_REQUIRE(removedHolidays.find(d1) != removedHolidays.end(),
80 "expected to find date in removedHolidays");
81 QL_REQUIRE(removedHolidays.find(d2) == removedHolidays.end(),
82 "did not expect to find date in removedHolidays");
83
84 if (c1.isHoliday(d: d1))
85 BOOST_FAIL(d1 << " still a holiday for original TARGET instance");
86 if (c1.isBusinessDay(d: d2))
87 BOOST_FAIL(d2 << " still a business day for original TARGET instance");
88
89 // any instance of TARGET should be modified...
90 Calendar c3 = TARGET();
91 if (c3.isHoliday(d: d1))
92 BOOST_FAIL(d1 << " still a holiday for generic TARGET instance");
93 if (c3.isBusinessDay(d: d2))
94 BOOST_FAIL(d2 << " still a business day for generic TARGET instance");
95
96 // ...but not other calendars
97 if (c2.isBusinessDay(d: d1))
98 BOOST_FAIL(d1 << " business day for New York");
99 if (c2.isHoliday(d: d2))
100 BOOST_FAIL(d2 << " holiday for New York");
101
102 // restore original holiday set---test the other way around
103 c3.addHoliday(d1);
104 c3.removeHoliday(d2);
105
106 if (c1.isBusinessDay(d: d1))
107 BOOST_FAIL(d1 << " still a business day");
108 if (c1.isHoliday(d: d2))
109 BOOST_FAIL(d2 << " still a holiday");
110}
111
112
113void CalendarTest::testJointCalendars() {
114
115 BOOST_TEST_MESSAGE("Testing joint calendars...");
116
117 Calendar c1 = TARGET(), c2 = UnitedKingdom(), c3 = UnitedStates(UnitedStates::NYSE),
118 c4 = Japan(), c5 = Germany();
119
120 std::vector<Calendar> calendar_vect;
121 calendar_vect.reserve(n: 5);
122 calendar_vect.push_back(x: c1);
123 calendar_vect.push_back(x: c2);
124 calendar_vect.push_back(x: c3);
125 calendar_vect.push_back(x: c4);
126 calendar_vect.push_back(x: c5);
127
128 Calendar c12h = JointCalendar(c1, c2, JoinHolidays),
129 c12b = JointCalendar(c1, c2, JoinBusinessDays),
130 c123h = JointCalendar(c1, c2, c3, JoinHolidays),
131 c123b = JointCalendar(c1, c2, c3, JoinBusinessDays),
132 c1234h = JointCalendar(c1, c2, c3, c4, JoinHolidays),
133 c1234b = JointCalendar(c1, c2, c3, c4, JoinBusinessDays),
134 cvh = JointCalendar(calendar_vect, JoinHolidays);
135
136 // test one year, starting today
137 Date firstDate = Date::todaysDate(), endDate = firstDate + 1 * Years;
138
139 for (Date d = firstDate; d < endDate; d++) {
140
141 bool b1 = c1.isBusinessDay(d), b2 = c2.isBusinessDay(d), b3 = c3.isBusinessDay(d),
142 b4 = c4.isBusinessDay(d), b5 = c5.isBusinessDay(d);
143
144 if ((b1 && b2) != c12h.isBusinessDay(d))
145 BOOST_FAIL("At date " << d << ":\n"
146 << " inconsistency between joint calendar " << c12h.name()
147 << " (joining holidays)\n"
148 << " and its components");
149
150 if ((b1 || b2) != c12b.isBusinessDay(d))
151 BOOST_FAIL("At date " << d << ":\n"
152 << " inconsistency between joint calendar " << c12b.name()
153 << " (joining business days)\n"
154 << " and its components");
155
156 if ((b1 && b2 && b3) != c123h.isBusinessDay(d))
157 BOOST_FAIL("At date " << d << ":\n"
158 << " inconsistency between joint calendar " << c123h.name()
159 << " (joining holidays)\n"
160 << " and its components");
161
162 if ((b1 || b2 || b3) != c123b.isBusinessDay(d))
163 BOOST_FAIL("At date " << d << ":\n"
164 << " inconsistency between joint calendar " << c123b.name()
165 << " (joining business days)\n"
166 << " and its components");
167
168 if ((b1 && b2 && b3 && b4) != c1234h.isBusinessDay(d))
169 BOOST_FAIL("At date " << d << ":\n"
170 << " inconsistency between joint calendar " << c1234h.name()
171 << " (joining holidays)\n"
172 << " and its components");
173
174 if ((b1 || b2 || b3 || b4) != c1234b.isBusinessDay(d))
175 BOOST_FAIL("At date " << d << ":\n"
176 << " inconsistency between joint calendar " << c1234b.name()
177 << " (joining business days)\n"
178 << " and its components");
179
180 if ((b1 && b2 && b3 && b4 && b5) != cvh.isBusinessDay(d))
181 BOOST_FAIL("At date " << d << ":\n"
182 << " inconsistency between joint calendar " << cvh.name()
183 << " (joining holidays)\n"
184 << " and its components");
185 }
186}
187
188void CalendarTest::testUSSettlement() {
189 BOOST_TEST_MESSAGE("Testing US settlement holiday list...");
190
191 std::vector<Date> expectedHol;
192 expectedHol.emplace_back(args: 1, args: January, args: 2004);
193 expectedHol.emplace_back(args: 19, args: January, args: 2004);
194 expectedHol.emplace_back(args: 16, args: February, args: 2004);
195 expectedHol.emplace_back(args: 31, args: May, args: 2004);
196 expectedHol.emplace_back(args: 5, args: July, args: 2004);
197 expectedHol.emplace_back(args: 6, args: September, args: 2004);
198 expectedHol.emplace_back(args: 11, args: October, args: 2004);
199 expectedHol.emplace_back(args: 11, args: November, args: 2004);
200 expectedHol.emplace_back(args: 25, args: November, args: 2004);
201 expectedHol.emplace_back(args: 24, args: December, args: 2004);
202
203 expectedHol.emplace_back(args: 31, args: December, args: 2004);
204 expectedHol.emplace_back(args: 17, args: January, args: 2005);
205 expectedHol.emplace_back(args: 21, args: February, args: 2005);
206 expectedHol.emplace_back(args: 30, args: May, args: 2005);
207 expectedHol.emplace_back(args: 4, args: July, args: 2005);
208 expectedHol.emplace_back(args: 5, args: September, args: 2005);
209 expectedHol.emplace_back(args: 10, args: October, args: 2005);
210 expectedHol.emplace_back(args: 11, args: November, args: 2005);
211 expectedHol.emplace_back(args: 24, args: November, args: 2005);
212 expectedHol.emplace_back(args: 26, args: December, args: 2005);
213
214 Calendar c = UnitedStates(UnitedStates::Settlement);
215 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2004), to: Date(31, December, 2005));
216 if (hol.size() != expectedHol.size())
217 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
218 << hol.size() << " calculated holidays");
219 for (Size i = 0; i < hol.size(); i++) {
220 if (hol[i] != expectedHol[i])
221 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
222 << hol[i]);
223 }
224
225 // before Uniform Monday Holiday Act
226 expectedHol = std::vector<Date>();
227 expectedHol.emplace_back(args: 2, args: January, args: 1961);
228 expectedHol.emplace_back(args: 22, args: February, args: 1961);
229 expectedHol.emplace_back(args: 30, args: May, args: 1961);
230 expectedHol.emplace_back(args: 4, args: July, args: 1961);
231 expectedHol.emplace_back(args: 4, args: September, args: 1961);
232 expectedHol.emplace_back(args: 10, args: November, args: 1961);
233 expectedHol.emplace_back(args: 23, args: November, args: 1961);
234 expectedHol.emplace_back(args: 25, args: December, args: 1961);
235
236 hol = c.holidayList(from: Date(1, January, 1961), to: Date(31, December, 1961));
237 if (hol.size() != expectedHol.size())
238 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
239 << hol.size() << " calculated holidays");
240 for (Size i = 0; i < hol.size(); i++) {
241 if (hol[i] != expectedHol[i])
242 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
243 << hol[i]);
244 }
245}
246
247void CalendarTest::testUSGovernmentBondMarket() {
248 BOOST_TEST_MESSAGE("Testing US government bond market holiday list...");
249
250 std::vector<Date> expectedHol;
251 expectedHol.emplace_back(args: 1, args: January, args: 2004);
252 expectedHol.emplace_back(args: 19, args: January, args: 2004);
253 expectedHol.emplace_back(args: 16, args: February, args: 2004);
254 expectedHol.emplace_back(args: 9, args: April, args: 2004);
255 expectedHol.emplace_back(args: 31, args: May, args: 2004);
256 expectedHol.emplace_back(args: 11, args: June, args: 2004); // Reagan's funeral
257 expectedHol.emplace_back(args: 5, args: July, args: 2004);
258 expectedHol.emplace_back(args: 6, args: September, args: 2004);
259 expectedHol.emplace_back(args: 11, args: October, args: 2004);
260 expectedHol.emplace_back(args: 11, args: November, args: 2004);
261 expectedHol.emplace_back(args: 25, args: November, args: 2004);
262 expectedHol.emplace_back(args: 24, args: December, args: 2004);
263
264 Calendar c = UnitedStates(UnitedStates::GovernmentBond);
265 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2004), to: Date(31, December, 2004));
266
267 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
268 if (hol[i] != expectedHol[i])
269 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
270 << hol[i]);
271 }
272 if (hol.size() != expectedHol.size())
273 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
274 << hol.size() << " calculated holidays");
275}
276
277void CalendarTest::testUSNewYorkStockExchange() {
278 BOOST_TEST_MESSAGE("Testing New York Stock Exchange holiday list...");
279
280 std::vector<Date> expectedHol;
281 expectedHol.emplace_back(args: 1, args: January, args: 2004);
282 expectedHol.emplace_back(args: 19, args: January, args: 2004);
283 expectedHol.emplace_back(args: 16, args: February, args: 2004);
284 expectedHol.emplace_back(args: 9, args: April, args: 2004);
285 expectedHol.emplace_back(args: 31, args: May, args: 2004);
286 expectedHol.emplace_back(args: 11, args: June, args: 2004);
287 expectedHol.emplace_back(args: 5, args: July, args: 2004);
288 expectedHol.emplace_back(args: 6, args: September, args: 2004);
289 expectedHol.emplace_back(args: 25, args: November, args: 2004);
290 expectedHol.emplace_back(args: 24, args: December, args: 2004);
291
292 expectedHol.emplace_back(args: 17, args: January, args: 2005);
293 expectedHol.emplace_back(args: 21, args: February, args: 2005);
294 expectedHol.emplace_back(args: 25, args: March, args: 2005);
295 expectedHol.emplace_back(args: 30, args: May, args: 2005);
296 expectedHol.emplace_back(args: 4, args: July, args: 2005);
297 expectedHol.emplace_back(args: 5, args: September, args: 2005);
298 expectedHol.emplace_back(args: 24, args: November, args: 2005);
299 expectedHol.emplace_back(args: 26, args: December, args: 2005);
300
301 expectedHol.emplace_back(args: 2, args: January, args: 2006);
302 expectedHol.emplace_back(args: 16, args: January, args: 2006);
303 expectedHol.emplace_back(args: 20, args: February, args: 2006);
304 expectedHol.emplace_back(args: 14, args: April, args: 2006);
305 expectedHol.emplace_back(args: 29, args: May, args: 2006);
306 expectedHol.emplace_back(args: 4, args: July, args: 2006);
307 expectedHol.emplace_back(args: 4, args: September, args: 2006);
308 expectedHol.emplace_back(args: 23, args: November, args: 2006);
309 expectedHol.emplace_back(args: 25, args: December, args: 2006);
310
311 Calendar c = UnitedStates(UnitedStates::NYSE);
312 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2004), to: Date(31, December, 2006));
313
314 Size i;
315 for (i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
316 if (hol[i] != expectedHol[i])
317 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
318 << hol[i]);
319 }
320 if (hol.size() != expectedHol.size())
321 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
322 << hol.size() << " calculated holidays");
323
324 std::vector<Date> histClose;
325 histClose.emplace_back(args: 30, args: October, args: 2012); // Hurricane Sandy
326 histClose.emplace_back(args: 29, args: October, args: 2012); // Hurricane Sandy
327 histClose.emplace_back(args: 11, args: June, args: 2004); // Reagan's funeral
328 histClose.emplace_back(args: 14, args: September, args: 2001); // September 11, 2001
329 histClose.emplace_back(args: 13, args: September, args: 2001); // September 11, 2001
330 histClose.emplace_back(args: 12, args: September, args: 2001); // September 11, 2001
331 histClose.emplace_back(args: 11, args: September, args: 2001); // September 11, 2001
332 histClose.emplace_back(args: 27, args: April, args: 1994); // Nixon's funeral.
333 histClose.emplace_back(args: 27, args: September, args: 1985); // Hurricane Gloria
334 histClose.emplace_back(args: 14, args: July, args: 1977); // 1977 Blackout
335 histClose.emplace_back(args: 25, args: January, args: 1973); // Johnson's funeral.
336 histClose.emplace_back(args: 28, args: December, args: 1972); // Truman's funeral
337 histClose.emplace_back(args: 21, args: July, args: 1969); // Lunar exploration nat. day
338 histClose.emplace_back(args: 31, args: March, args: 1969); // Eisenhower's funeral
339 histClose.emplace_back(args: 10, args: February, args: 1969); // heavy snow
340 histClose.emplace_back(args: 5, args: July, args: 1968); // Day after Independence Day
341 histClose.emplace_back(args: 9, args: April, args: 1968); // Mourning for MLK
342 histClose.emplace_back(args: 24, args: December, args: 1965); // Christmas Eve
343 histClose.emplace_back(args: 25, args: November, args: 1963); // Kennedy's funeral
344 histClose.emplace_back(args: 29, args: May, args: 1961); // Day before Decoration Day
345 histClose.emplace_back(args: 26, args: December, args: 1958); // Day after Christmas
346 histClose.emplace_back(args: 24, args: December, args: 1956); // Christmas Eve
347 histClose.emplace_back(args: 24, args: December, args: 1954); // Christmas Eve
348 // June 12-Dec. 31, 1968
349 // Four day week (closed on Wednesdays) - Paperwork Crisis
350 histClose.emplace_back(args: 12, args: Jun, args: 1968);
351 histClose.emplace_back(args: 19, args: Jun, args: 1968);
352 histClose.emplace_back(args: 26, args: Jun, args: 1968);
353 histClose.emplace_back(args: 3, args: Jul, args: 1968);
354 histClose.emplace_back(args: 10, args: Jul, args: 1968);
355 histClose.emplace_back(args: 17, args: Jul, args: 1968);
356 histClose.emplace_back(args: 20, args: Nov, args: 1968);
357 histClose.emplace_back(args: 27, args: Nov, args: 1968);
358 histClose.emplace_back(args: 4, args: Dec, args: 1968);
359 histClose.emplace_back(args: 11, args: Dec, args: 1968);
360 histClose.emplace_back(args: 18, args: Dec, args: 1968);
361 // Presidential election days
362 histClose.emplace_back(args: 4, args: Nov, args: 1980);
363 histClose.emplace_back(args: 2, args: Nov, args: 1976);
364 histClose.emplace_back(args: 7, args: Nov, args: 1972);
365 histClose.emplace_back(args: 5, args: Nov, args: 1968);
366 histClose.emplace_back(args: 3, args: Nov, args: 1964);
367 for (i = 0; i < histClose.size(); i++) {
368 if (!c.isHoliday(d: histClose[i]))
369 BOOST_FAIL(histClose[i] << " should be holiday (historical close)");
370 }
371}
372
373
374void CalendarTest::testSOFR() {
375 BOOST_TEST_MESSAGE("Testing extra non-fixing day for SOFR...");
376
377 auto fedCalendar = UnitedStates(UnitedStates::GovernmentBond);
378 auto testDate = Date(7, April, 2023); // Good Friday 2023 was only a half close but SOFR didn't fix
379
380 if (fedCalendar.isHoliday(d: testDate))
381 BOOST_ERROR(testDate << " should not be a holiday for " << fedCalendar.name());
382
383 auto sofr = Sofr();
384 if (sofr.isValidFixingDate(d: testDate))
385 BOOST_ERROR(testDate << " should not be a fixing date for " << sofr.name());
386}
387
388
389void CalendarTest::testTARGET() {
390 BOOST_TEST_MESSAGE("Testing TARGET holiday list...");
391
392 std::vector<Date> expectedHol;
393 expectedHol.emplace_back(args: 1, args: January, args: 1999);
394 expectedHol.emplace_back(args: 31, args: December, args: 1999);
395
396 expectedHol.emplace_back(args: 21, args: April, args: 2000);
397 expectedHol.emplace_back(args: 24, args: April, args: 2000);
398 expectedHol.emplace_back(args: 1, args: May, args: 2000);
399 expectedHol.emplace_back(args: 25, args: December, args: 2000);
400 expectedHol.emplace_back(args: 26, args: December, args: 2000);
401
402 expectedHol.emplace_back(args: 1, args: January, args: 2001);
403 expectedHol.emplace_back(args: 13, args: April, args: 2001);
404 expectedHol.emplace_back(args: 16, args: April, args: 2001);
405 expectedHol.emplace_back(args: 1, args: May, args: 2001);
406 expectedHol.emplace_back(args: 25, args: December, args: 2001);
407 expectedHol.emplace_back(args: 26, args: December, args: 2001);
408 expectedHol.emplace_back(args: 31, args: December, args: 2001);
409
410 expectedHol.emplace_back(args: 1, args: January, args: 2002);
411 expectedHol.emplace_back(args: 29, args: March, args: 2002);
412 expectedHol.emplace_back(args: 1, args: April, args: 2002);
413 expectedHol.emplace_back(args: 1, args: May, args: 2002);
414 expectedHol.emplace_back(args: 25, args: December, args: 2002);
415 expectedHol.emplace_back(args: 26, args: December, args: 2002);
416
417 expectedHol.emplace_back(args: 1, args: January, args: 2003);
418 expectedHol.emplace_back(args: 18, args: April, args: 2003);
419 expectedHol.emplace_back(args: 21, args: April, args: 2003);
420 expectedHol.emplace_back(args: 1, args: May, args: 2003);
421 expectedHol.emplace_back(args: 25, args: December, args: 2003);
422 expectedHol.emplace_back(args: 26, args: December, args: 2003);
423
424 expectedHol.emplace_back(args: 1, args: January, args: 2004);
425 expectedHol.emplace_back(args: 9, args: April, args: 2004);
426 expectedHol.emplace_back(args: 12, args: April, args: 2004);
427
428 expectedHol.emplace_back(args: 25, args: March, args: 2005);
429 expectedHol.emplace_back(args: 28, args: March, args: 2005);
430 expectedHol.emplace_back(args: 26, args: December, args: 2005);
431
432 expectedHol.emplace_back(args: 14, args: April, args: 2006);
433 expectedHol.emplace_back(args: 17, args: April, args: 2006);
434 expectedHol.emplace_back(args: 1, args: May, args: 2006);
435 expectedHol.emplace_back(args: 25, args: December, args: 2006);
436 expectedHol.emplace_back(args: 26, args: December, args: 2006);
437
438 Calendar c = TARGET();
439 std::vector<Date> hol = c.holidayList(from: Date(1, January, 1999), to: Date(31, December, 2006));
440
441 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
442 if (hol[i] != expectedHol[i])
443 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
444 << hol[i]);
445 }
446 if (hol.size() != expectedHol.size())
447 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
448 << hol.size() << " calculated holidays");
449}
450
451void CalendarTest::testGermanyFrankfurt() {
452 BOOST_TEST_MESSAGE("Testing Frankfurt Stock Exchange holiday list...");
453
454 std::vector<Date> expectedHol;
455
456 expectedHol.emplace_back(args: 1, args: January, args: 2003);
457 expectedHol.emplace_back(args: 18, args: April, args: 2003);
458 expectedHol.emplace_back(args: 21, args: April, args: 2003);
459 expectedHol.emplace_back(args: 1, args: May, args: 2003);
460 expectedHol.emplace_back(args: 24, args: December, args: 2003);
461 expectedHol.emplace_back(args: 25, args: December, args: 2003);
462 expectedHol.emplace_back(args: 26, args: December, args: 2003);
463
464 expectedHol.emplace_back(args: 1, args: January, args: 2004);
465 expectedHol.emplace_back(args: 9, args: April, args: 2004);
466 expectedHol.emplace_back(args: 12, args: April, args: 2004);
467 expectedHol.emplace_back(args: 24, args: December, args: 2004);
468
469 Calendar c = Germany(Germany::FrankfurtStockExchange);
470 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2003), to: Date(31, December, 2004));
471 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
472 if (hol[i] != expectedHol[i])
473 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
474 << hol[i]);
475 }
476 if (hol.size() != expectedHol.size())
477 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
478 << hol.size() << " calculated holidays");
479}
480
481void CalendarTest::testGermanyEurex() {
482 BOOST_TEST_MESSAGE("Testing Eurex holiday list...");
483
484 std::vector<Date> expectedHol;
485
486 expectedHol.emplace_back(args: 1, args: January, args: 2003);
487 expectedHol.emplace_back(args: 18, args: April, args: 2003);
488 expectedHol.emplace_back(args: 21, args: April, args: 2003);
489 expectedHol.emplace_back(args: 1, args: May, args: 2003);
490 expectedHol.emplace_back(args: 24, args: December, args: 2003);
491 expectedHol.emplace_back(args: 25, args: December, args: 2003);
492 expectedHol.emplace_back(args: 26, args: December, args: 2003);
493 expectedHol.emplace_back(args: 31, args: December, args: 2003);
494
495 expectedHol.emplace_back(args: 1, args: January, args: 2004);
496 expectedHol.emplace_back(args: 9, args: April, args: 2004);
497 expectedHol.emplace_back(args: 12, args: April, args: 2004);
498 expectedHol.emplace_back(args: 24, args: December, args: 2004);
499 expectedHol.emplace_back(args: 31, args: December, args: 2004);
500
501 Calendar c = Germany(Germany::Eurex);
502 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2003), to: Date(31, December, 2004));
503 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
504 if (hol[i] != expectedHol[i])
505 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
506 << hol[i]);
507 }
508 if (hol.size() != expectedHol.size())
509 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
510 << hol.size() << " calculated holidays");
511}
512
513void CalendarTest::testGermanyXetra() {
514 BOOST_TEST_MESSAGE("Testing Xetra holiday list...");
515
516 std::vector<Date> expectedHol;
517
518 expectedHol.emplace_back(args: 1, args: January, args: 2003);
519 expectedHol.emplace_back(args: 18, args: April, args: 2003);
520 expectedHol.emplace_back(args: 21, args: April, args: 2003);
521 expectedHol.emplace_back(args: 1, args: May, args: 2003);
522 expectedHol.emplace_back(args: 24, args: December, args: 2003);
523 expectedHol.emplace_back(args: 25, args: December, args: 2003);
524 expectedHol.emplace_back(args: 26, args: December, args: 2003);
525
526 expectedHol.emplace_back(args: 1, args: January, args: 2004);
527 expectedHol.emplace_back(args: 9, args: April, args: 2004);
528 expectedHol.emplace_back(args: 12, args: April, args: 2004);
529 expectedHol.emplace_back(args: 24, args: December, args: 2004);
530
531 Calendar c = Germany(Germany::Xetra);
532 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2003), to: Date(31, December, 2004));
533 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
534 if (hol[i] != expectedHol[i])
535 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
536 << hol[i]);
537 }
538 if (hol.size() != expectedHol.size())
539 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
540 << hol.size() << " calculated holidays");
541}
542
543void CalendarTest::testUKSettlement() {
544 BOOST_TEST_MESSAGE("Testing UK settlement holiday list...");
545
546 std::vector<Date> expectedHol;
547
548 expectedHol.emplace_back(args: 1, args: January, args: 2004);
549 expectedHol.emplace_back(args: 9, args: April, args: 2004);
550 expectedHol.emplace_back(args: 12, args: April, args: 2004);
551 expectedHol.emplace_back(args: 3, args: May, args: 2004);
552 expectedHol.emplace_back(args: 31, args: May, args: 2004);
553 expectedHol.emplace_back(args: 30, args: August, args: 2004);
554 expectedHol.emplace_back(args: 27, args: December, args: 2004);
555 expectedHol.emplace_back(args: 28, args: December, args: 2004);
556
557 expectedHol.emplace_back(args: 3, args: January, args: 2005);
558 expectedHol.emplace_back(args: 25, args: March, args: 2005);
559 expectedHol.emplace_back(args: 28, args: March, args: 2005);
560 expectedHol.emplace_back(args: 2, args: May, args: 2005);
561 expectedHol.emplace_back(args: 30, args: May, args: 2005);
562 expectedHol.emplace_back(args: 29, args: August, args: 2005);
563 expectedHol.emplace_back(args: 26, args: December, args: 2005);
564 expectedHol.emplace_back(args: 27, args: December, args: 2005);
565
566 expectedHol.emplace_back(args: 2, args: January, args: 2006);
567 expectedHol.emplace_back(args: 14, args: April, args: 2006);
568 expectedHol.emplace_back(args: 17, args: April, args: 2006);
569 expectedHol.emplace_back(args: 1, args: May, args: 2006);
570 expectedHol.emplace_back(args: 29, args: May, args: 2006);
571 expectedHol.emplace_back(args: 28, args: August, args: 2006);
572 expectedHol.emplace_back(args: 25, args: December, args: 2006);
573 expectedHol.emplace_back(args: 26, args: December, args: 2006);
574
575 expectedHol.emplace_back(args: 1, args: January, args: 2007);
576 expectedHol.emplace_back(args: 6, args: April, args: 2007);
577 expectedHol.emplace_back(args: 9, args: April, args: 2007);
578 expectedHol.emplace_back(args: 7, args: May, args: 2007);
579 expectedHol.emplace_back(args: 28, args: May, args: 2007);
580 expectedHol.emplace_back(args: 27, args: August, args: 2007);
581 expectedHol.emplace_back(args: 25, args: December, args: 2007);
582 expectedHol.emplace_back(args: 26, args: December, args: 2007);
583
584 Calendar c = UnitedKingdom(UnitedKingdom::Settlement);
585 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2004), to: Date(31, December, 2007));
586 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
587 if (hol[i] != expectedHol[i])
588 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
589 << hol[i]);
590 }
591 if (hol.size() != expectedHol.size())
592 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
593 << hol.size() << " calculated holidays");
594}
595
596void CalendarTest::testUKExchange() {
597 BOOST_TEST_MESSAGE("Testing London Stock Exchange holiday list...");
598
599 std::vector<Date> expectedHol;
600
601 expectedHol.emplace_back(args: 1, args: January, args: 2004);
602 expectedHol.emplace_back(args: 9, args: April, args: 2004);
603 expectedHol.emplace_back(args: 12, args: April, args: 2004);
604 expectedHol.emplace_back(args: 3, args: May, args: 2004);
605 expectedHol.emplace_back(args: 31, args: May, args: 2004);
606 expectedHol.emplace_back(args: 30, args: August, args: 2004);
607 expectedHol.emplace_back(args: 27, args: December, args: 2004);
608 expectedHol.emplace_back(args: 28, args: December, args: 2004);
609
610 expectedHol.emplace_back(args: 3, args: January, args: 2005);
611 expectedHol.emplace_back(args: 25, args: March, args: 2005);
612 expectedHol.emplace_back(args: 28, args: March, args: 2005);
613 expectedHol.emplace_back(args: 2, args: May, args: 2005);
614 expectedHol.emplace_back(args: 30, args: May, args: 2005);
615 expectedHol.emplace_back(args: 29, args: August, args: 2005);
616 expectedHol.emplace_back(args: 26, args: December, args: 2005);
617 expectedHol.emplace_back(args: 27, args: December, args: 2005);
618
619 expectedHol.emplace_back(args: 2, args: January, args: 2006);
620 expectedHol.emplace_back(args: 14, args: April, args: 2006);
621 expectedHol.emplace_back(args: 17, args: April, args: 2006);
622 expectedHol.emplace_back(args: 1, args: May, args: 2006);
623 expectedHol.emplace_back(args: 29, args: May, args: 2006);
624 expectedHol.emplace_back(args: 28, args: August, args: 2006);
625 expectedHol.emplace_back(args: 25, args: December, args: 2006);
626 expectedHol.emplace_back(args: 26, args: December, args: 2006);
627
628 expectedHol.emplace_back(args: 1, args: January, args: 2007);
629 expectedHol.emplace_back(args: 6, args: April, args: 2007);
630 expectedHol.emplace_back(args: 9, args: April, args: 2007);
631 expectedHol.emplace_back(args: 7, args: May, args: 2007);
632 expectedHol.emplace_back(args: 28, args: May, args: 2007);
633 expectedHol.emplace_back(args: 27, args: August, args: 2007);
634 expectedHol.emplace_back(args: 25, args: December, args: 2007);
635 expectedHol.emplace_back(args: 26, args: December, args: 2007);
636
637 Calendar c = UnitedKingdom(UnitedKingdom::Exchange);
638 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2004), to: Date(31, December, 2007));
639 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
640 if (hol[i] != expectedHol[i])
641 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
642 << hol[i]);
643 }
644 if (hol.size() != expectedHol.size())
645 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
646 << hol.size() << " calculated holidays");
647}
648
649void CalendarTest::testUKMetals() {
650 BOOST_TEST_MESSAGE("Testing London Metals Exchange holiday list...");
651
652 std::vector<Date> expectedHol;
653
654 expectedHol.emplace_back(args: 1, args: January, args: 2004);
655 expectedHol.emplace_back(args: 9, args: April, args: 2004);
656 expectedHol.emplace_back(args: 12, args: April, args: 2004);
657 expectedHol.emplace_back(args: 3, args: May, args: 2004);
658 expectedHol.emplace_back(args: 31, args: May, args: 2004);
659 expectedHol.emplace_back(args: 30, args: August, args: 2004);
660 expectedHol.emplace_back(args: 27, args: December, args: 2004);
661 expectedHol.emplace_back(args: 28, args: December, args: 2004);
662
663 expectedHol.emplace_back(args: 3, args: January, args: 2005);
664 expectedHol.emplace_back(args: 25, args: March, args: 2005);
665 expectedHol.emplace_back(args: 28, args: March, args: 2005);
666 expectedHol.emplace_back(args: 2, args: May, args: 2005);
667 expectedHol.emplace_back(args: 30, args: May, args: 2005);
668 expectedHol.emplace_back(args: 29, args: August, args: 2005);
669 expectedHol.emplace_back(args: 26, args: December, args: 2005);
670 expectedHol.emplace_back(args: 27, args: December, args: 2005);
671
672 expectedHol.emplace_back(args: 2, args: January, args: 2006);
673 expectedHol.emplace_back(args: 14, args: April, args: 2006);
674 expectedHol.emplace_back(args: 17, args: April, args: 2006);
675 expectedHol.emplace_back(args: 1, args: May, args: 2006);
676 expectedHol.emplace_back(args: 29, args: May, args: 2006);
677 expectedHol.emplace_back(args: 28, args: August, args: 2006);
678 expectedHol.emplace_back(args: 25, args: December, args: 2006);
679 expectedHol.emplace_back(args: 26, args: December, args: 2006);
680
681 expectedHol.emplace_back(args: 1, args: January, args: 2007);
682 expectedHol.emplace_back(args: 6, args: April, args: 2007);
683 expectedHol.emplace_back(args: 9, args: April, args: 2007);
684 expectedHol.emplace_back(args: 7, args: May, args: 2007);
685 expectedHol.emplace_back(args: 28, args: May, args: 2007);
686 expectedHol.emplace_back(args: 27, args: August, args: 2007);
687 expectedHol.emplace_back(args: 25, args: December, args: 2007);
688 expectedHol.emplace_back(args: 26, args: December, args: 2007);
689
690 Calendar c = UnitedKingdom(UnitedKingdom::Metals);
691 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2004), to: Date(31, December, 2007));
692 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
693 if (hol[i] != expectedHol[i])
694 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
695 << hol[i]);
696 }
697 if (hol.size() != expectedHol.size())
698 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
699 << hol.size() << " calculated holidays");
700}
701
702void CalendarTest::testItalyExchange() {
703 BOOST_TEST_MESSAGE("Testing Milan Stock Exchange holiday list...");
704
705 std::vector<Date> expectedHol;
706
707 expectedHol.emplace_back(args: 1, args: January, args: 2002);
708 expectedHol.emplace_back(args: 29, args: March, args: 2002);
709 expectedHol.emplace_back(args: 1, args: April, args: 2002);
710 expectedHol.emplace_back(args: 1, args: May, args: 2002);
711 expectedHol.emplace_back(args: 15, args: August, args: 2002);
712 expectedHol.emplace_back(args: 24, args: December, args: 2002);
713 expectedHol.emplace_back(args: 25, args: December, args: 2002);
714 expectedHol.emplace_back(args: 26, args: December, args: 2002);
715 expectedHol.emplace_back(args: 31, args: December, args: 2002);
716
717 expectedHol.emplace_back(args: 1, args: January, args: 2003);
718 expectedHol.emplace_back(args: 18, args: April, args: 2003);
719 expectedHol.emplace_back(args: 21, args: April, args: 2003);
720 expectedHol.emplace_back(args: 1, args: May, args: 2003);
721 expectedHol.emplace_back(args: 15, args: August, args: 2003);
722 expectedHol.emplace_back(args: 24, args: December, args: 2003);
723 expectedHol.emplace_back(args: 25, args: December, args: 2003);
724 expectedHol.emplace_back(args: 26, args: December, args: 2003);
725 expectedHol.emplace_back(args: 31, args: December, args: 2003);
726
727 expectedHol.emplace_back(args: 1, args: January, args: 2004);
728 expectedHol.emplace_back(args: 9, args: April, args: 2004);
729 expectedHol.emplace_back(args: 12, args: April, args: 2004);
730 expectedHol.emplace_back(args: 24, args: December, args: 2004);
731 expectedHol.emplace_back(args: 31, args: December, args: 2004);
732
733 Calendar c = Italy(Italy::Exchange);
734 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2002), to: Date(31, December, 2004));
735 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
736 if (hol[i] != expectedHol[i])
737 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
738 << hol[i]);
739 }
740 if (hol.size() != expectedHol.size())
741 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
742 << hol.size() << " calculated holidays");
743}
744
745void CalendarTest::testRussia() {
746 BOOST_TEST_MESSAGE("Testing Russia holiday list...");
747
748 std::vector<Date> expectedHol;
749
750 // exhaustive holiday list for the year 2012
751 expectedHol.emplace_back(args: 1, args: January, args: 2012);
752 expectedHol.emplace_back(args: 2, args: January, args: 2012);
753 expectedHol.emplace_back(args: 7, args: January, args: 2012);
754 expectedHol.emplace_back(args: 8, args: January, args: 2012);
755 expectedHol.emplace_back(args: 14, args: January, args: 2012);
756 expectedHol.emplace_back(args: 15, args: January, args: 2012);
757 expectedHol.emplace_back(args: 21, args: January, args: 2012);
758 expectedHol.emplace_back(args: 22, args: January, args: 2012);
759 expectedHol.emplace_back(args: 28, args: January, args: 2012);
760 expectedHol.emplace_back(args: 29, args: January, args: 2012);
761 expectedHol.emplace_back(args: 4, args: February, args: 2012);
762 expectedHol.emplace_back(args: 5, args: February, args: 2012);
763 expectedHol.emplace_back(args: 11, args: February, args: 2012);
764 expectedHol.emplace_back(args: 12, args: February, args: 2012);
765 expectedHol.emplace_back(args: 18, args: February, args: 2012);
766 expectedHol.emplace_back(args: 19, args: February, args: 2012);
767 expectedHol.emplace_back(args: 23, args: February, args: 2012);
768 expectedHol.emplace_back(args: 25, args: February, args: 2012);
769 expectedHol.emplace_back(args: 26, args: February, args: 2012);
770 expectedHol.emplace_back(args: 3, args: March, args: 2012);
771 expectedHol.emplace_back(args: 4, args: March, args: 2012);
772 expectedHol.emplace_back(args: 8, args: March, args: 2012);
773 expectedHol.emplace_back(args: 9, args: March, args: 2012);
774 expectedHol.emplace_back(args: 10, args: March, args: 2012);
775 expectedHol.emplace_back(args: 17, args: March, args: 2012);
776 expectedHol.emplace_back(args: 18, args: March, args: 2012);
777 expectedHol.emplace_back(args: 24, args: March, args: 2012);
778 expectedHol.emplace_back(args: 25, args: March, args: 2012);
779 expectedHol.emplace_back(args: 31, args: March, args: 2012);
780 expectedHol.emplace_back(args: 1, args: April, args: 2012);
781 expectedHol.emplace_back(args: 7, args: April, args: 2012);
782 expectedHol.emplace_back(args: 8, args: April, args: 2012);
783 expectedHol.emplace_back(args: 14, args: April, args: 2012);
784 expectedHol.emplace_back(args: 15, args: April, args: 2012);
785 expectedHol.emplace_back(args: 21, args: April, args: 2012);
786 expectedHol.emplace_back(args: 22, args: April, args: 2012);
787 expectedHol.emplace_back(args: 29, args: April, args: 2012);
788 expectedHol.emplace_back(args: 30, args: April, args: 2012);
789 expectedHol.emplace_back(args: 1, args: May, args: 2012);
790 expectedHol.emplace_back(args: 6, args: May, args: 2012);
791 expectedHol.emplace_back(args: 9, args: May, args: 2012);
792 expectedHol.emplace_back(args: 13, args: May, args: 2012);
793 expectedHol.emplace_back(args: 19, args: May, args: 2012);
794 expectedHol.emplace_back(args: 20, args: May, args: 2012);
795 expectedHol.emplace_back(args: 26, args: May, args: 2012);
796 expectedHol.emplace_back(args: 27, args: May, args: 2012);
797 expectedHol.emplace_back(args: 2, args: June, args: 2012);
798 expectedHol.emplace_back(args: 3, args: June, args: 2012);
799 expectedHol.emplace_back(args: 10, args: June, args: 2012);
800 expectedHol.emplace_back(args: 11, args: June, args: 2012);
801 expectedHol.emplace_back(args: 12, args: June, args: 2012);
802 expectedHol.emplace_back(args: 16, args: June, args: 2012);
803 expectedHol.emplace_back(args: 17, args: June, args: 2012);
804 expectedHol.emplace_back(args: 23, args: June, args: 2012);
805 expectedHol.emplace_back(args: 24, args: June, args: 2012);
806 expectedHol.emplace_back(args: 30, args: June, args: 2012);
807 expectedHol.emplace_back(args: 1, args: July, args: 2012);
808 expectedHol.emplace_back(args: 7, args: July, args: 2012);
809 expectedHol.emplace_back(args: 8, args: July, args: 2012);
810 expectedHol.emplace_back(args: 14, args: July, args: 2012);
811 expectedHol.emplace_back(args: 15, args: July, args: 2012);
812 expectedHol.emplace_back(args: 21, args: July, args: 2012);
813 expectedHol.emplace_back(args: 22, args: July, args: 2012);
814 expectedHol.emplace_back(args: 28, args: July, args: 2012);
815 expectedHol.emplace_back(args: 29, args: July, args: 2012);
816 expectedHol.emplace_back(args: 4, args: August, args: 2012);
817 expectedHol.emplace_back(args: 5, args: August, args: 2012);
818 expectedHol.emplace_back(args: 11, args: August, args: 2012);
819 expectedHol.emplace_back(args: 12, args: August, args: 2012);
820 expectedHol.emplace_back(args: 18, args: August, args: 2012);
821 expectedHol.emplace_back(args: 19, args: August, args: 2012);
822 expectedHol.emplace_back(args: 25, args: August, args: 2012);
823 expectedHol.emplace_back(args: 26, args: August, args: 2012);
824 expectedHol.emplace_back(args: 1, args: September, args: 2012);
825 expectedHol.emplace_back(args: 2, args: September, args: 2012);
826 expectedHol.emplace_back(args: 8, args: September, args: 2012);
827 expectedHol.emplace_back(args: 9, args: September, args: 2012);
828 expectedHol.emplace_back(args: 15, args: September, args: 2012);
829 expectedHol.emplace_back(args: 16, args: September, args: 2012);
830 expectedHol.emplace_back(args: 22, args: September, args: 2012);
831 expectedHol.emplace_back(args: 23, args: September, args: 2012);
832 expectedHol.emplace_back(args: 29, args: September, args: 2012);
833 expectedHol.emplace_back(args: 30, args: September, args: 2012);
834 expectedHol.emplace_back(args: 6, args: October, args: 2012);
835 expectedHol.emplace_back(args: 7, args: October, args: 2012);
836 expectedHol.emplace_back(args: 13, args: October, args: 2012);
837 expectedHol.emplace_back(args: 14, args: October, args: 2012);
838 expectedHol.emplace_back(args: 20, args: October, args: 2012);
839 expectedHol.emplace_back(args: 21, args: October, args: 2012);
840 expectedHol.emplace_back(args: 27, args: October, args: 2012);
841 expectedHol.emplace_back(args: 28, args: October, args: 2012);
842 expectedHol.emplace_back(args: 3, args: November, args: 2012);
843 expectedHol.emplace_back(args: 4, args: November, args: 2012);
844 expectedHol.emplace_back(args: 5, args: November, args: 2012);
845 expectedHol.emplace_back(args: 10, args: November, args: 2012);
846 expectedHol.emplace_back(args: 11, args: November, args: 2012);
847 expectedHol.emplace_back(args: 17, args: November, args: 2012);
848 expectedHol.emplace_back(args: 18, args: November, args: 2012);
849 expectedHol.emplace_back(args: 24, args: November, args: 2012);
850 expectedHol.emplace_back(args: 25, args: November, args: 2012);
851 expectedHol.emplace_back(args: 1, args: December, args: 2012);
852 expectedHol.emplace_back(args: 2, args: December, args: 2012);
853 expectedHol.emplace_back(args: 8, args: December, args: 2012);
854 expectedHol.emplace_back(args: 9, args: December, args: 2012);
855 expectedHol.emplace_back(args: 15, args: December, args: 2012);
856 expectedHol.emplace_back(args: 16, args: December, args: 2012);
857 expectedHol.emplace_back(args: 22, args: December, args: 2012);
858 expectedHol.emplace_back(args: 23, args: December, args: 2012);
859 expectedHol.emplace_back(args: 29, args: December, args: 2012);
860 expectedHol.emplace_back(args: 30, args: December, args: 2012);
861 expectedHol.emplace_back(args: 31, args: December, args: 2012);
862
863 // exhaustive holiday list for the year 2013
864 expectedHol.emplace_back(args: 1, args: January, args: 2013);
865 expectedHol.emplace_back(args: 2, args: January, args: 2013);
866 expectedHol.emplace_back(args: 3, args: January, args: 2013);
867 expectedHol.emplace_back(args: 4, args: January, args: 2013);
868 expectedHol.emplace_back(args: 5, args: January, args: 2013);
869 expectedHol.emplace_back(args: 6, args: January, args: 2013);
870 expectedHol.emplace_back(args: 7, args: January, args: 2013);
871 expectedHol.emplace_back(args: 12, args: January, args: 2013);
872 expectedHol.emplace_back(args: 13, args: January, args: 2013);
873 expectedHol.emplace_back(args: 19, args: January, args: 2013);
874 expectedHol.emplace_back(args: 20, args: January, args: 2013);
875 expectedHol.emplace_back(args: 26, args: January, args: 2013);
876 expectedHol.emplace_back(args: 27, args: January, args: 2013);
877 expectedHol.emplace_back(args: 2, args: February, args: 2013);
878 expectedHol.emplace_back(args: 3, args: February, args: 2013);
879 expectedHol.emplace_back(args: 9, args: February, args: 2013);
880 expectedHol.emplace_back(args: 10, args: February, args: 2013);
881 expectedHol.emplace_back(args: 16, args: February, args: 2013);
882 expectedHol.emplace_back(args: 17, args: February, args: 2013);
883 expectedHol.emplace_back(args: 23, args: February, args: 2013);
884 expectedHol.emplace_back(args: 24, args: February, args: 2013);
885 expectedHol.emplace_back(args: 2, args: March, args: 2013);
886 expectedHol.emplace_back(args: 3, args: March, args: 2013);
887 expectedHol.emplace_back(args: 8, args: March, args: 2013);
888 expectedHol.emplace_back(args: 9, args: March, args: 2013);
889 expectedHol.emplace_back(args: 10, args: March, args: 2013);
890 expectedHol.emplace_back(args: 16, args: March, args: 2013);
891 expectedHol.emplace_back(args: 17, args: March, args: 2013);
892 expectedHol.emplace_back(args: 23, args: March, args: 2013);
893 expectedHol.emplace_back(args: 24, args: March, args: 2013);
894 expectedHol.emplace_back(args: 30, args: March, args: 2013);
895 expectedHol.emplace_back(args: 31, args: March, args: 2013);
896 expectedHol.emplace_back(args: 6, args: April, args: 2013);
897 expectedHol.emplace_back(args: 7, args: April, args: 2013);
898 expectedHol.emplace_back(args: 13, args: April, args: 2013);
899 expectedHol.emplace_back(args: 14, args: April, args: 2013);
900 expectedHol.emplace_back(args: 20, args: April, args: 2013);
901 expectedHol.emplace_back(args: 21, args: April, args: 2013);
902 expectedHol.emplace_back(args: 27, args: April, args: 2013);
903 expectedHol.emplace_back(args: 28, args: April, args: 2013);
904 expectedHol.emplace_back(args: 1, args: May, args: 2013);
905 expectedHol.emplace_back(args: 4, args: May, args: 2013);
906 expectedHol.emplace_back(args: 5, args: May, args: 2013);
907 expectedHol.emplace_back(args: 9, args: May, args: 2013);
908 expectedHol.emplace_back(args: 11, args: May, args: 2013);
909 expectedHol.emplace_back(args: 12, args: May, args: 2013);
910 expectedHol.emplace_back(args: 18, args: May, args: 2013);
911 expectedHol.emplace_back(args: 19, args: May, args: 2013);
912 expectedHol.emplace_back(args: 25, args: May, args: 2013);
913 expectedHol.emplace_back(args: 26, args: May, args: 2013);
914 expectedHol.emplace_back(args: 1, args: June, args: 2013);
915 expectedHol.emplace_back(args: 2, args: June, args: 2013);
916 expectedHol.emplace_back(args: 8, args: June, args: 2013);
917 expectedHol.emplace_back(args: 9, args: June, args: 2013);
918 expectedHol.emplace_back(args: 12, args: June, args: 2013);
919 expectedHol.emplace_back(args: 15, args: June, args: 2013);
920 expectedHol.emplace_back(args: 16, args: June, args: 2013);
921 expectedHol.emplace_back(args: 22, args: June, args: 2013);
922 expectedHol.emplace_back(args: 23, args: June, args: 2013);
923 expectedHol.emplace_back(args: 29, args: June, args: 2013);
924 expectedHol.emplace_back(args: 30, args: June, args: 2013);
925 expectedHol.emplace_back(args: 6, args: July, args: 2013);
926 expectedHol.emplace_back(args: 7, args: July, args: 2013);
927 expectedHol.emplace_back(args: 13, args: July, args: 2013);
928 expectedHol.emplace_back(args: 14, args: July, args: 2013);
929 expectedHol.emplace_back(args: 20, args: July, args: 2013);
930 expectedHol.emplace_back(args: 21, args: July, args: 2013);
931 expectedHol.emplace_back(args: 27, args: July, args: 2013);
932 expectedHol.emplace_back(args: 28, args: July, args: 2013);
933 expectedHol.emplace_back(args: 3, args: August, args: 2013);
934 expectedHol.emplace_back(args: 4, args: August, args: 2013);
935 expectedHol.emplace_back(args: 10, args: August, args: 2013);
936 expectedHol.emplace_back(args: 11, args: August, args: 2013);
937 expectedHol.emplace_back(args: 17, args: August, args: 2013);
938 expectedHol.emplace_back(args: 18, args: August, args: 2013);
939 expectedHol.emplace_back(args: 24, args: August, args: 2013);
940 expectedHol.emplace_back(args: 25, args: August, args: 2013);
941 expectedHol.emplace_back(args: 31, args: August, args: 2013);
942 expectedHol.emplace_back(args: 1, args: September, args: 2013);
943 expectedHol.emplace_back(args: 7, args: September, args: 2013);
944 expectedHol.emplace_back(args: 8, args: September, args: 2013);
945 expectedHol.emplace_back(args: 14, args: September, args: 2013);
946 expectedHol.emplace_back(args: 15, args: September, args: 2013);
947 expectedHol.emplace_back(args: 21, args: September, args: 2013);
948 expectedHol.emplace_back(args: 22, args: September, args: 2013);
949 expectedHol.emplace_back(args: 28, args: September, args: 2013);
950 expectedHol.emplace_back(args: 29, args: September, args: 2013);
951 expectedHol.emplace_back(args: 5, args: October, args: 2013);
952 expectedHol.emplace_back(args: 6, args: October, args: 2013);
953 expectedHol.emplace_back(args: 12, args: October, args: 2013);
954 expectedHol.emplace_back(args: 13, args: October, args: 2013);
955 expectedHol.emplace_back(args: 19, args: October, args: 2013);
956 expectedHol.emplace_back(args: 20, args: October, args: 2013);
957 expectedHol.emplace_back(args: 26, args: October, args: 2013);
958 expectedHol.emplace_back(args: 27, args: October, args: 2013);
959 expectedHol.emplace_back(args: 2, args: November, args: 2013);
960 expectedHol.emplace_back(args: 3, args: November, args: 2013);
961 expectedHol.emplace_back(args: 4, args: November, args: 2013);
962 expectedHol.emplace_back(args: 9, args: November, args: 2013);
963 expectedHol.emplace_back(args: 10, args: November, args: 2013);
964 expectedHol.emplace_back(args: 16, args: November, args: 2013);
965 expectedHol.emplace_back(args: 17, args: November, args: 2013);
966 expectedHol.emplace_back(args: 23, args: November, args: 2013);
967 expectedHol.emplace_back(args: 24, args: November, args: 2013);
968 expectedHol.emplace_back(args: 30, args: November, args: 2013);
969 expectedHol.emplace_back(args: 1, args: December, args: 2013);
970 expectedHol.emplace_back(args: 7, args: December, args: 2013);
971 expectedHol.emplace_back(args: 8, args: December, args: 2013);
972 expectedHol.emplace_back(args: 14, args: December, args: 2013);
973 expectedHol.emplace_back(args: 15, args: December, args: 2013);
974 expectedHol.emplace_back(args: 21, args: December, args: 2013);
975 expectedHol.emplace_back(args: 22, args: December, args: 2013);
976 expectedHol.emplace_back(args: 28, args: December, args: 2013);
977 expectedHol.emplace_back(args: 29, args: December, args: 2013);
978 expectedHol.emplace_back(args: 31, args: December, args: 2013);
979
980 // exhaustive holiday list for the year 2014
981 expectedHol.emplace_back(args: 1, args: January, args: 2014);
982 expectedHol.emplace_back(args: 2, args: January, args: 2014);
983 expectedHol.emplace_back(args: 3, args: January, args: 2014);
984 expectedHol.emplace_back(args: 4, args: January, args: 2014);
985 expectedHol.emplace_back(args: 5, args: January, args: 2014);
986 expectedHol.emplace_back(args: 7, args: January, args: 2014);
987 expectedHol.emplace_back(args: 11, args: January, args: 2014);
988 expectedHol.emplace_back(args: 12, args: January, args: 2014);
989 expectedHol.emplace_back(args: 18, args: January, args: 2014);
990 expectedHol.emplace_back(args: 19, args: January, args: 2014);
991 expectedHol.emplace_back(args: 25, args: January, args: 2014);
992 expectedHol.emplace_back(args: 26, args: January, args: 2014);
993 expectedHol.emplace_back(args: 1, args: February, args: 2014);
994 expectedHol.emplace_back(args: 2, args: February, args: 2014);
995 expectedHol.emplace_back(args: 8, args: February, args: 2014);
996 expectedHol.emplace_back(args: 9, args: February, args: 2014);
997 expectedHol.emplace_back(args: 15, args: February, args: 2014);
998 expectedHol.emplace_back(args: 16, args: February, args: 2014);
999 expectedHol.emplace_back(args: 22, args: February, args: 2014);
1000 expectedHol.emplace_back(args: 23, args: February, args: 2014);
1001 expectedHol.emplace_back(args: 1, args: March, args: 2014);
1002 expectedHol.emplace_back(args: 2, args: March, args: 2014);
1003 expectedHol.emplace_back(args: 8, args: March, args: 2014);
1004 expectedHol.emplace_back(args: 9, args: March, args: 2014);
1005 expectedHol.emplace_back(args: 10, args: March, args: 2014);
1006 expectedHol.emplace_back(args: 15, args: March, args: 2014);
1007 expectedHol.emplace_back(args: 16, args: March, args: 2014);
1008 expectedHol.emplace_back(args: 22, args: March, args: 2014);
1009 expectedHol.emplace_back(args: 23, args: March, args: 2014);
1010 expectedHol.emplace_back(args: 29, args: March, args: 2014);
1011 expectedHol.emplace_back(args: 30, args: March, args: 2014);
1012 expectedHol.emplace_back(args: 5, args: April, args: 2014);
1013 expectedHol.emplace_back(args: 6, args: April, args: 2014);
1014 expectedHol.emplace_back(args: 12, args: April, args: 2014);
1015 expectedHol.emplace_back(args: 13, args: April, args: 2014);
1016 expectedHol.emplace_back(args: 19, args: April, args: 2014);
1017 expectedHol.emplace_back(args: 20, args: April, args: 2014);
1018 expectedHol.emplace_back(args: 26, args: April, args: 2014);
1019 expectedHol.emplace_back(args: 27, args: April, args: 2014);
1020 expectedHol.emplace_back(args: 1, args: May, args: 2014);
1021 expectedHol.emplace_back(args: 3, args: May, args: 2014);
1022 expectedHol.emplace_back(args: 4, args: May, args: 2014);
1023 expectedHol.emplace_back(args: 9, args: May, args: 2014);
1024 expectedHol.emplace_back(args: 10, args: May, args: 2014);
1025 expectedHol.emplace_back(args: 11, args: May, args: 2014);
1026 expectedHol.emplace_back(args: 17, args: May, args: 2014);
1027 expectedHol.emplace_back(args: 18, args: May, args: 2014);
1028 expectedHol.emplace_back(args: 24, args: May, args: 2014);
1029 expectedHol.emplace_back(args: 25, args: May, args: 2014);
1030 expectedHol.emplace_back(args: 31, args: May, args: 2014);
1031 expectedHol.emplace_back(args: 1, args: June, args: 2014);
1032 expectedHol.emplace_back(args: 7, args: June, args: 2014);
1033 expectedHol.emplace_back(args: 8, args: June, args: 2014);
1034 expectedHol.emplace_back(args: 12, args: June, args: 2014);
1035 expectedHol.emplace_back(args: 14, args: June, args: 2014);
1036 expectedHol.emplace_back(args: 15, args: June, args: 2014);
1037 expectedHol.emplace_back(args: 21, args: June, args: 2014);
1038 expectedHol.emplace_back(args: 22, args: June, args: 2014);
1039 expectedHol.emplace_back(args: 28, args: June, args: 2014);
1040 expectedHol.emplace_back(args: 29, args: June, args: 2014);
1041 expectedHol.emplace_back(args: 5, args: July, args: 2014);
1042 expectedHol.emplace_back(args: 6, args: July, args: 2014);
1043 expectedHol.emplace_back(args: 12, args: July, args: 2014);
1044 expectedHol.emplace_back(args: 13, args: July, args: 2014);
1045 expectedHol.emplace_back(args: 19, args: July, args: 2014);
1046 expectedHol.emplace_back(args: 20, args: July, args: 2014);
1047 expectedHol.emplace_back(args: 26, args: July, args: 2014);
1048 expectedHol.emplace_back(args: 27, args: July, args: 2014);
1049 expectedHol.emplace_back(args: 2, args: August, args: 2014);
1050 expectedHol.emplace_back(args: 3, args: August, args: 2014);
1051 expectedHol.emplace_back(args: 9, args: August, args: 2014);
1052 expectedHol.emplace_back(args: 10, args: August, args: 2014);
1053 expectedHol.emplace_back(args: 16, args: August, args: 2014);
1054 expectedHol.emplace_back(args: 17, args: August, args: 2014);
1055 expectedHol.emplace_back(args: 23, args: August, args: 2014);
1056 expectedHol.emplace_back(args: 24, args: August, args: 2014);
1057 expectedHol.emplace_back(args: 30, args: August, args: 2014);
1058 expectedHol.emplace_back(args: 31, args: August, args: 2014);
1059 expectedHol.emplace_back(args: 6, args: September, args: 2014);
1060 expectedHol.emplace_back(args: 7, args: September, args: 2014);
1061 expectedHol.emplace_back(args: 13, args: September, args: 2014);
1062 expectedHol.emplace_back(args: 14, args: September, args: 2014);
1063 expectedHol.emplace_back(args: 20, args: September, args: 2014);
1064 expectedHol.emplace_back(args: 21, args: September, args: 2014);
1065 expectedHol.emplace_back(args: 27, args: September, args: 2014);
1066 expectedHol.emplace_back(args: 28, args: September, args: 2014);
1067 expectedHol.emplace_back(args: 4, args: October, args: 2014);
1068 expectedHol.emplace_back(args: 5, args: October, args: 2014);
1069 expectedHol.emplace_back(args: 11, args: October, args: 2014);
1070 expectedHol.emplace_back(args: 12, args: October, args: 2014);
1071 expectedHol.emplace_back(args: 18, args: October, args: 2014);
1072 expectedHol.emplace_back(args: 19, args: October, args: 2014);
1073 expectedHol.emplace_back(args: 25, args: October, args: 2014);
1074 expectedHol.emplace_back(args: 26, args: October, args: 2014);
1075 expectedHol.emplace_back(args: 1, args: November, args: 2014);
1076 expectedHol.emplace_back(args: 2, args: November, args: 2014);
1077 expectedHol.emplace_back(args: 4, args: November, args: 2014);
1078 expectedHol.emplace_back(args: 8, args: November, args: 2014);
1079 expectedHol.emplace_back(args: 9, args: November, args: 2014);
1080 expectedHol.emplace_back(args: 15, args: November, args: 2014);
1081 expectedHol.emplace_back(args: 16, args: November, args: 2014);
1082 expectedHol.emplace_back(args: 22, args: November, args: 2014);
1083 expectedHol.emplace_back(args: 23, args: November, args: 2014);
1084 expectedHol.emplace_back(args: 29, args: November, args: 2014);
1085 expectedHol.emplace_back(args: 30, args: November, args: 2014);
1086 expectedHol.emplace_back(args: 6, args: December, args: 2014);
1087 expectedHol.emplace_back(args: 7, args: December, args: 2014);
1088 expectedHol.emplace_back(args: 13, args: December, args: 2014);
1089 expectedHol.emplace_back(args: 14, args: December, args: 2014);
1090 expectedHol.emplace_back(args: 20, args: December, args: 2014);
1091 expectedHol.emplace_back(args: 21, args: December, args: 2014);
1092 expectedHol.emplace_back(args: 27, args: December, args: 2014);
1093 expectedHol.emplace_back(args: 28, args: December, args: 2014);
1094 expectedHol.emplace_back(args: 31, args: December, args: 2014);
1095
1096 // exhaustive holiday list for the year 2015
1097 expectedHol.emplace_back(args: 1, args: January, args: 2015);
1098 expectedHol.emplace_back(args: 2, args: January, args: 2015);
1099 expectedHol.emplace_back(args: 3, args: January, args: 2015);
1100 expectedHol.emplace_back(args: 4, args: January, args: 2015);
1101 expectedHol.emplace_back(args: 7, args: January, args: 2015);
1102 expectedHol.emplace_back(args: 10, args: January, args: 2015);
1103 expectedHol.emplace_back(args: 11, args: January, args: 2015);
1104 expectedHol.emplace_back(args: 17, args: January, args: 2015);
1105 expectedHol.emplace_back(args: 18, args: January, args: 2015);
1106 expectedHol.emplace_back(args: 24, args: January, args: 2015);
1107 expectedHol.emplace_back(args: 25, args: January, args: 2015);
1108 expectedHol.emplace_back(args: 31, args: January, args: 2015);
1109 expectedHol.emplace_back(args: 1, args: February, args: 2015);
1110 expectedHol.emplace_back(args: 7, args: February, args: 2015);
1111 expectedHol.emplace_back(args: 8, args: February, args: 2015);
1112 expectedHol.emplace_back(args: 14, args: February, args: 2015);
1113 expectedHol.emplace_back(args: 15, args: February, args: 2015);
1114 expectedHol.emplace_back(args: 21, args: February, args: 2015);
1115 expectedHol.emplace_back(args: 22, args: February, args: 2015);
1116 expectedHol.emplace_back(args: 23, args: February, args: 2015);
1117 expectedHol.emplace_back(args: 28, args: February, args: 2015);
1118 expectedHol.emplace_back(args: 1, args: March, args: 2015);
1119 expectedHol.emplace_back(args: 7, args: March, args: 2015);
1120 expectedHol.emplace_back(args: 8, args: March, args: 2015);
1121 expectedHol.emplace_back(args: 9, args: March, args: 2015);
1122 expectedHol.emplace_back(args: 14, args: March, args: 2015);
1123 expectedHol.emplace_back(args: 15, args: March, args: 2015);
1124 expectedHol.emplace_back(args: 21, args: March, args: 2015);
1125 expectedHol.emplace_back(args: 22, args: March, args: 2015);
1126 expectedHol.emplace_back(args: 28, args: March, args: 2015);
1127 expectedHol.emplace_back(args: 29, args: March, args: 2015);
1128 expectedHol.emplace_back(args: 4, args: April, args: 2015);
1129 expectedHol.emplace_back(args: 5, args: April, args: 2015);
1130 expectedHol.emplace_back(args: 11, args: April, args: 2015);
1131 expectedHol.emplace_back(args: 12, args: April, args: 2015);
1132 expectedHol.emplace_back(args: 18, args: April, args: 2015);
1133 expectedHol.emplace_back(args: 19, args: April, args: 2015);
1134 expectedHol.emplace_back(args: 25, args: April, args: 2015);
1135 expectedHol.emplace_back(args: 26, args: April, args: 2015);
1136 expectedHol.emplace_back(args: 1, args: May, args: 2015);
1137 expectedHol.emplace_back(args: 2, args: May, args: 2015);
1138 expectedHol.emplace_back(args: 3, args: May, args: 2015);
1139 expectedHol.emplace_back(args: 9, args: May, args: 2015);
1140 expectedHol.emplace_back(args: 10, args: May, args: 2015);
1141 expectedHol.emplace_back(args: 11, args: May, args: 2015);
1142 expectedHol.emplace_back(args: 16, args: May, args: 2015);
1143 expectedHol.emplace_back(args: 17, args: May, args: 2015);
1144 expectedHol.emplace_back(args: 23, args: May, args: 2015);
1145 expectedHol.emplace_back(args: 24, args: May, args: 2015);
1146 expectedHol.emplace_back(args: 30, args: May, args: 2015);
1147 expectedHol.emplace_back(args: 31, args: May, args: 2015);
1148 expectedHol.emplace_back(args: 6, args: June, args: 2015);
1149 expectedHol.emplace_back(args: 7, args: June, args: 2015);
1150 expectedHol.emplace_back(args: 12, args: June, args: 2015);
1151 expectedHol.emplace_back(args: 13, args: June, args: 2015);
1152 expectedHol.emplace_back(args: 14, args: June, args: 2015);
1153 expectedHol.emplace_back(args: 20, args: June, args: 2015);
1154 expectedHol.emplace_back(args: 21, args: June, args: 2015);
1155 expectedHol.emplace_back(args: 27, args: June, args: 2015);
1156 expectedHol.emplace_back(args: 28, args: June, args: 2015);
1157 expectedHol.emplace_back(args: 4, args: July, args: 2015);
1158 expectedHol.emplace_back(args: 5, args: July, args: 2015);
1159 expectedHol.emplace_back(args: 11, args: July, args: 2015);
1160 expectedHol.emplace_back(args: 12, args: July, args: 2015);
1161 expectedHol.emplace_back(args: 18, args: July, args: 2015);
1162 expectedHol.emplace_back(args: 19, args: July, args: 2015);
1163 expectedHol.emplace_back(args: 25, args: July, args: 2015);
1164 expectedHol.emplace_back(args: 26, args: July, args: 2015);
1165 expectedHol.emplace_back(args: 1, args: August, args: 2015);
1166 expectedHol.emplace_back(args: 2, args: August, args: 2015);
1167 expectedHol.emplace_back(args: 8, args: August, args: 2015);
1168 expectedHol.emplace_back(args: 9, args: August, args: 2015);
1169 expectedHol.emplace_back(args: 15, args: August, args: 2015);
1170 expectedHol.emplace_back(args: 16, args: August, args: 2015);
1171 expectedHol.emplace_back(args: 22, args: August, args: 2015);
1172 expectedHol.emplace_back(args: 23, args: August, args: 2015);
1173 expectedHol.emplace_back(args: 29, args: August, args: 2015);
1174 expectedHol.emplace_back(args: 30, args: August, args: 2015);
1175 expectedHol.emplace_back(args: 5, args: September, args: 2015);
1176 expectedHol.emplace_back(args: 6, args: September, args: 2015);
1177 expectedHol.emplace_back(args: 12, args: September, args: 2015);
1178 expectedHol.emplace_back(args: 13, args: September, args: 2015);
1179 expectedHol.emplace_back(args: 19, args: September, args: 2015);
1180 expectedHol.emplace_back(args: 20, args: September, args: 2015);
1181 expectedHol.emplace_back(args: 26, args: September, args: 2015);
1182 expectedHol.emplace_back(args: 27, args: September, args: 2015);
1183 expectedHol.emplace_back(args: 3, args: October, args: 2015);
1184 expectedHol.emplace_back(args: 4, args: October, args: 2015);
1185 expectedHol.emplace_back(args: 10, args: October, args: 2015);
1186 expectedHol.emplace_back(args: 11, args: October, args: 2015);
1187 expectedHol.emplace_back(args: 17, args: October, args: 2015);
1188 expectedHol.emplace_back(args: 18, args: October, args: 2015);
1189 expectedHol.emplace_back(args: 24, args: October, args: 2015);
1190 expectedHol.emplace_back(args: 25, args: October, args: 2015);
1191 expectedHol.emplace_back(args: 31, args: October, args: 2015);
1192 expectedHol.emplace_back(args: 1, args: November, args: 2015);
1193 expectedHol.emplace_back(args: 4, args: November, args: 2015);
1194 expectedHol.emplace_back(args: 7, args: November, args: 2015);
1195 expectedHol.emplace_back(args: 8, args: November, args: 2015);
1196 expectedHol.emplace_back(args: 14, args: November, args: 2015);
1197 expectedHol.emplace_back(args: 15, args: November, args: 2015);
1198 expectedHol.emplace_back(args: 21, args: November, args: 2015);
1199 expectedHol.emplace_back(args: 22, args: November, args: 2015);
1200 expectedHol.emplace_back(args: 28, args: November, args: 2015);
1201 expectedHol.emplace_back(args: 29, args: November, args: 2015);
1202 expectedHol.emplace_back(args: 5, args: December, args: 2015);
1203 expectedHol.emplace_back(args: 6, args: December, args: 2015);
1204 expectedHol.emplace_back(args: 12, args: December, args: 2015);
1205 expectedHol.emplace_back(args: 13, args: December, args: 2015);
1206 expectedHol.emplace_back(args: 19, args: December, args: 2015);
1207 expectedHol.emplace_back(args: 20, args: December, args: 2015);
1208 expectedHol.emplace_back(args: 26, args: December, args: 2015);
1209 expectedHol.emplace_back(args: 27, args: December, args: 2015);
1210 expectedHol.emplace_back(args: 31, args: December, args: 2015);
1211
1212 // exhaustive holiday list for the year 2016
1213 expectedHol.emplace_back(args: 1, args: January, args: 2016);
1214 expectedHol.emplace_back(args: 2, args: January, args: 2016);
1215 expectedHol.emplace_back(args: 3, args: January, args: 2016);
1216 expectedHol.emplace_back(args: 7, args: January, args: 2016);
1217 expectedHol.emplace_back(args: 8, args: January, args: 2016);
1218 expectedHol.emplace_back(args: 9, args: January, args: 2016);
1219 expectedHol.emplace_back(args: 10, args: January, args: 2016);
1220 expectedHol.emplace_back(args: 16, args: January, args: 2016);
1221 expectedHol.emplace_back(args: 17, args: January, args: 2016);
1222 expectedHol.emplace_back(args: 23, args: January, args: 2016);
1223 expectedHol.emplace_back(args: 24, args: January, args: 2016);
1224 expectedHol.emplace_back(args: 30, args: January, args: 2016);
1225 expectedHol.emplace_back(args: 31, args: January, args: 2016);
1226 expectedHol.emplace_back(args: 6, args: February, args: 2016);
1227 expectedHol.emplace_back(args: 7, args: February, args: 2016);
1228 expectedHol.emplace_back(args: 13, args: February, args: 2016);
1229 expectedHol.emplace_back(args: 14, args: February, args: 2016);
1230 expectedHol.emplace_back(args: 21, args: February, args: 2016);
1231 expectedHol.emplace_back(args: 23, args: February, args: 2016);
1232 expectedHol.emplace_back(args: 27, args: February, args: 2016);
1233 expectedHol.emplace_back(args: 28, args: February, args: 2016);
1234 expectedHol.emplace_back(args: 5, args: March, args: 2016);
1235 expectedHol.emplace_back(args: 6, args: March, args: 2016);
1236 expectedHol.emplace_back(args: 8, args: March, args: 2016);
1237 expectedHol.emplace_back(args: 12, args: March, args: 2016);
1238 expectedHol.emplace_back(args: 13, args: March, args: 2016);
1239 expectedHol.emplace_back(args: 19, args: March, args: 2016);
1240 expectedHol.emplace_back(args: 20, args: March, args: 2016);
1241 expectedHol.emplace_back(args: 26, args: March, args: 2016);
1242 expectedHol.emplace_back(args: 27, args: March, args: 2016);
1243 expectedHol.emplace_back(args: 2, args: April, args: 2016);
1244 expectedHol.emplace_back(args: 3, args: April, args: 2016);
1245 expectedHol.emplace_back(args: 9, args: April, args: 2016);
1246 expectedHol.emplace_back(args: 10, args: April, args: 2016);
1247 expectedHol.emplace_back(args: 16, args: April, args: 2016);
1248 expectedHol.emplace_back(args: 17, args: April, args: 2016);
1249 expectedHol.emplace_back(args: 23, args: April, args: 2016);
1250 expectedHol.emplace_back(args: 24, args: April, args: 2016);
1251 expectedHol.emplace_back(args: 30, args: April, args: 2016);
1252 expectedHol.emplace_back(args: 1, args: May, args: 2016);
1253 expectedHol.emplace_back(args: 2, args: May, args: 2016);
1254 expectedHol.emplace_back(args: 3, args: May, args: 2016);
1255 expectedHol.emplace_back(args: 7, args: May, args: 2016);
1256 expectedHol.emplace_back(args: 8, args: May, args: 2016);
1257 expectedHol.emplace_back(args: 9, args: May, args: 2016);
1258 expectedHol.emplace_back(args: 14, args: May, args: 2016);
1259 expectedHol.emplace_back(args: 15, args: May, args: 2016);
1260 expectedHol.emplace_back(args: 21, args: May, args: 2016);
1261 expectedHol.emplace_back(args: 22, args: May, args: 2016);
1262 expectedHol.emplace_back(args: 28, args: May, args: 2016);
1263 expectedHol.emplace_back(args: 29, args: May, args: 2016);
1264 expectedHol.emplace_back(args: 4, args: June, args: 2016);
1265 expectedHol.emplace_back(args: 5, args: June, args: 2016);
1266 expectedHol.emplace_back(args: 11, args: June, args: 2016);
1267 expectedHol.emplace_back(args: 12, args: June, args: 2016);
1268 expectedHol.emplace_back(args: 13, args: June, args: 2016);
1269 expectedHol.emplace_back(args: 18, args: June, args: 2016);
1270 expectedHol.emplace_back(args: 19, args: June, args: 2016);
1271 expectedHol.emplace_back(args: 25, args: June, args: 2016);
1272 expectedHol.emplace_back(args: 26, args: June, args: 2016);
1273 expectedHol.emplace_back(args: 2, args: July, args: 2016);
1274 expectedHol.emplace_back(args: 3, args: July, args: 2016);
1275 expectedHol.emplace_back(args: 9, args: July, args: 2016);
1276 expectedHol.emplace_back(args: 10, args: July, args: 2016);
1277 expectedHol.emplace_back(args: 16, args: July, args: 2016);
1278 expectedHol.emplace_back(args: 17, args: July, args: 2016);
1279 expectedHol.emplace_back(args: 23, args: July, args: 2016);
1280 expectedHol.emplace_back(args: 24, args: July, args: 2016);
1281 expectedHol.emplace_back(args: 30, args: July, args: 2016);
1282 expectedHol.emplace_back(args: 31, args: July, args: 2016);
1283 expectedHol.emplace_back(args: 6, args: August, args: 2016);
1284 expectedHol.emplace_back(args: 7, args: August, args: 2016);
1285 expectedHol.emplace_back(args: 13, args: August, args: 2016);
1286 expectedHol.emplace_back(args: 14, args: August, args: 2016);
1287 expectedHol.emplace_back(args: 20, args: August, args: 2016);
1288 expectedHol.emplace_back(args: 21, args: August, args: 2016);
1289 expectedHol.emplace_back(args: 27, args: August, args: 2016);
1290 expectedHol.emplace_back(args: 28, args: August, args: 2016);
1291 expectedHol.emplace_back(args: 3, args: September, args: 2016);
1292 expectedHol.emplace_back(args: 4, args: September, args: 2016);
1293 expectedHol.emplace_back(args: 10, args: September, args: 2016);
1294 expectedHol.emplace_back(args: 11, args: September, args: 2016);
1295 expectedHol.emplace_back(args: 17, args: September, args: 2016);
1296 expectedHol.emplace_back(args: 18, args: September, args: 2016);
1297 expectedHol.emplace_back(args: 24, args: September, args: 2016);
1298 expectedHol.emplace_back(args: 25, args: September, args: 2016);
1299 expectedHol.emplace_back(args: 1, args: October, args: 2016);
1300 expectedHol.emplace_back(args: 2, args: October, args: 2016);
1301 expectedHol.emplace_back(args: 8, args: October, args: 2016);
1302 expectedHol.emplace_back(args: 9, args: October, args: 2016);
1303 expectedHol.emplace_back(args: 15, args: October, args: 2016);
1304 expectedHol.emplace_back(args: 16, args: October, args: 2016);
1305 expectedHol.emplace_back(args: 22, args: October, args: 2016);
1306 expectedHol.emplace_back(args: 23, args: October, args: 2016);
1307 expectedHol.emplace_back(args: 29, args: October, args: 2016);
1308 expectedHol.emplace_back(args: 30, args: October, args: 2016);
1309 expectedHol.emplace_back(args: 4, args: November, args: 2016);
1310 expectedHol.emplace_back(args: 5, args: November, args: 2016);
1311 expectedHol.emplace_back(args: 6, args: November, args: 2016);
1312 expectedHol.emplace_back(args: 12, args: November, args: 2016);
1313 expectedHol.emplace_back(args: 13, args: November, args: 2016);
1314 expectedHol.emplace_back(args: 19, args: November, args: 2016);
1315 expectedHol.emplace_back(args: 20, args: November, args: 2016);
1316 expectedHol.emplace_back(args: 26, args: November, args: 2016);
1317 expectedHol.emplace_back(args: 27, args: November, args: 2016);
1318 expectedHol.emplace_back(args: 3, args: December, args: 2016);
1319 expectedHol.emplace_back(args: 4, args: December, args: 2016);
1320 expectedHol.emplace_back(args: 10, args: December, args: 2016);
1321 expectedHol.emplace_back(args: 11, args: December, args: 2016);
1322 expectedHol.emplace_back(args: 17, args: December, args: 2016);
1323 expectedHol.emplace_back(args: 18, args: December, args: 2016);
1324 expectedHol.emplace_back(args: 24, args: December, args: 2016);
1325 expectedHol.emplace_back(args: 25, args: December, args: 2016);
1326 expectedHol.emplace_back(args: 30, args: December, args: 2016);
1327 expectedHol.emplace_back(args: 31, args: December, args: 2016);
1328
1329 Calendar c = Russia(Russia::MOEX);
1330
1331
1332 std::vector<Date> hol =
1333 c.holidayList(from: Date(1, January, 2012),
1334 to: Date(31, December, 2016), // only dates for which calendars are available
1335 includeWeekEnds: true); // include week-ends since lists are exhaustive
1336 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
1337 if (hol[i] != expectedHol[i])
1338 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
1339 << hol[i]);
1340 }
1341 if (hol.size() != expectedHol.size())
1342 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
1343 << hol.size() << " calculated holidays");
1344}
1345
1346void CalendarTest::testBrazil() {
1347 BOOST_TEST_MESSAGE("Testing Brazil holiday list...");
1348
1349 std::vector<Date> expectedHol;
1350
1351 // expectedHol.push_back(Date(1,January,2005)); // Saturday
1352 expectedHol.emplace_back(args: 7, args: February, args: 2005);
1353 expectedHol.emplace_back(args: 8, args: February, args: 2005);
1354 expectedHol.emplace_back(args: 25, args: March, args: 2005);
1355 expectedHol.emplace_back(args: 21, args: April, args: 2005);
1356 // expectedHol.push_back(Date(1,May,2005)); // Sunday
1357 expectedHol.emplace_back(args: 26, args: May, args: 2005);
1358 expectedHol.emplace_back(args: 7, args: September, args: 2005);
1359 expectedHol.emplace_back(args: 12, args: October, args: 2005);
1360 expectedHol.emplace_back(args: 2, args: November, args: 2005);
1361 expectedHol.emplace_back(args: 15, args: November, args: 2005);
1362 // expectedHol.push_back(Date(25,December,2005)); // Sunday
1363
1364 // expectedHol.push_back(Date(1,January,2006)); // Sunday
1365 expectedHol.emplace_back(args: 27, args: February, args: 2006);
1366 expectedHol.emplace_back(args: 28, args: February, args: 2006);
1367 expectedHol.emplace_back(args: 14, args: April, args: 2006);
1368 expectedHol.emplace_back(args: 21, args: April, args: 2006);
1369 expectedHol.emplace_back(args: 1, args: May, args: 2006);
1370 expectedHol.emplace_back(args: 15, args: June, args: 2006);
1371 expectedHol.emplace_back(args: 7, args: September, args: 2006);
1372 expectedHol.emplace_back(args: 12, args: October, args: 2006);
1373 expectedHol.emplace_back(args: 2, args: November, args: 2006);
1374 expectedHol.emplace_back(args: 15, args: November, args: 2006);
1375 expectedHol.emplace_back(args: 25, args: December, args: 2006);
1376
1377 Calendar c = Brazil();
1378 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2005), to: Date(31, December, 2006));
1379 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
1380 if (hol[i] != expectedHol[i])
1381 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
1382 << hol[i]);
1383 }
1384 if (hol.size() != expectedHol.size())
1385 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
1386 << hol.size() << " calculated holidays");
1387}
1388
1389void CalendarTest::testDenmark() {
1390
1391 BOOST_TEST_MESSAGE("Testing Denmark holiday list...");
1392
1393 std::vector<Date> expectedHol;
1394 expectedHol.emplace_back(args: 1, args: January, args: 2020);
1395 expectedHol.emplace_back(args: 9, args: April, args: 2020);
1396 expectedHol.emplace_back(args: 10, args: April, args: 2020);
1397 expectedHol.emplace_back(args: 13, args: April, args: 2020);
1398 expectedHol.emplace_back(args: 8, args: May, args: 2020);
1399 expectedHol.emplace_back(args: 21, args: May, args: 2020);
1400 expectedHol.emplace_back(args: 22, args: May, args: 2020);
1401 expectedHol.emplace_back(args: 1, args: June, args: 2020);
1402 expectedHol.emplace_back(args: 5, args: June, args: 2020);
1403 expectedHol.emplace_back(args: 24, args: December, args: 2020);
1404 expectedHol.emplace_back(args: 25, args: December, args: 2020);
1405 // Saturday: expectedHol.emplace_back(26, December, 2020);
1406 expectedHol.emplace_back(args: 31, args: December, args: 2020);
1407
1408 expectedHol.emplace_back(args: 1, args: January, args: 2021);
1409 expectedHol.emplace_back(args: 1, args: April, args: 2021);
1410 expectedHol.emplace_back(args: 2, args: April, args: 2021);
1411 expectedHol.emplace_back(args: 5, args: April, args: 2021);
1412 expectedHol.emplace_back(args: 30, args: April, args: 2021);
1413 expectedHol.emplace_back(args: 13, args: May, args: 2021);
1414 expectedHol.emplace_back(args: 14, args: May, args: 2021);
1415 expectedHol.emplace_back(args: 24, args: May, args: 2021);
1416 // Saturday: expectedHol.emplace_back(5, June, 2021);
1417 expectedHol.emplace_back(args: 24, args: December, args: 2021);
1418 // Saturday: expectedHol.emplace_back(25, December, 2021);
1419 // Sunday: expectedHol.emplace_back(26, December, 2021);
1420 expectedHol.emplace_back(args: 31, args: December, args: 2021);
1421
1422 // Saturday: expectedHol.emplace_back(1, January, 2022);
1423 expectedHol.emplace_back(args: 14, args: April, args: 2022);
1424 expectedHol.emplace_back(args: 15, args: April, args: 2022);
1425 expectedHol.emplace_back(args: 18, args: April, args: 2022);
1426 expectedHol.emplace_back(args: 13, args: May, args: 2022);
1427 expectedHol.emplace_back(args: 26, args: May, args: 2022);
1428 expectedHol.emplace_back(args: 27, args: May, args: 2022);
1429 // Sunday: expectedHol.emplace_back(5, June, 2022);
1430 expectedHol.emplace_back(args: 6, args: June, args: 2022);
1431 // Saturday: expectedHol.emplace_back(24, December, 2022);
1432 // Sunday: expectedHol.emplace_back(25, December, 2022);
1433 expectedHol.emplace_back(args: 26, args: December, args: 2022);
1434 // Saturday: expectedHol.emplace_back(31, December, 2022);
1435
1436 Calendar c = Denmark();
1437 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2020), to: Date(31, December, 2022));
1438
1439 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
1440 if (hol[i] != expectedHol[i])
1441 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
1442 << hol[i]);
1443 }
1444 if (hol.size() != expectedHol.size())
1445 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
1446 << hol.size() << " calculated holidays");
1447}
1448
1449void CalendarTest::testSouthKoreanSettlement() {
1450 BOOST_TEST_MESSAGE("Testing South-Korean settlement holiday list...");
1451
1452 std::vector<Date> expectedHol;
1453 expectedHol.emplace_back(args: 1, args: January, args: 2004);
1454 expectedHol.emplace_back(args: 21, args: January, args: 2004);
1455 expectedHol.emplace_back(args: 22, args: January, args: 2004);
1456 expectedHol.emplace_back(args: 23, args: January, args: 2004);
1457 expectedHol.emplace_back(args: 1, args: March, args: 2004);
1458 expectedHol.emplace_back(args: 5, args: April, args: 2004);
1459 expectedHol.emplace_back(args: 15, args: April, args: 2004); // election day
1460 // expectedHol.push_back(Date(1,May,2004)); // Saturday
1461 expectedHol.emplace_back(args: 5, args: May, args: 2004);
1462 expectedHol.emplace_back(args: 26, args: May, args: 2004);
1463 // expectedHol.push_back(Date(6,June,2004)); // Sunday
1464 // expectedHol.push_back(Date(17,July,2004)); // Saturday
1465 // expectedHol.push_back(Date(15,August,2004)); // Sunday
1466 expectedHol.emplace_back(args: 27, args: September, args: 2004);
1467 expectedHol.emplace_back(args: 28, args: September, args: 2004);
1468 expectedHol.emplace_back(args: 29, args: September, args: 2004);
1469 // expectedHol.push_back(Date(3,October,2004)); // Sunday
1470 // expectedHol.push_back(Date(25,December,2004)); // Saturday
1471
1472 // expectedHol.push_back(Date(1,January,2005)); // Saturday
1473 expectedHol.emplace_back(args: 8, args: February, args: 2005);
1474 expectedHol.emplace_back(args: 9, args: February, args: 2005);
1475 expectedHol.emplace_back(args: 10, args: February, args: 2005);
1476 expectedHol.emplace_back(args: 1, args: March, args: 2005);
1477 expectedHol.emplace_back(args: 5, args: April, args: 2005);
1478 expectedHol.emplace_back(args: 5, args: May, args: 2005);
1479 // expectedHol.push_back(Date(15,May,2005)); // Sunday
1480 expectedHol.emplace_back(args: 6, args: June, args: 2005);
1481 // expectedHol.push_back(Date(17,July,2005)); // Sunday
1482 expectedHol.emplace_back(args: 15, args: August, args: 2005);
1483 // expectedHol.push_back(Date(17,September,2005)); // Saturday
1484 // expectedHol.push_back(Date(18,September,2005)); // Sunday
1485 expectedHol.emplace_back(args: 19, args: September, args: 2005);
1486 expectedHol.emplace_back(args: 3, args: October, args: 2005);
1487 // expectedHol.push_back(Date(25,December,2005)); // Sunday
1488
1489 // expectedHol.push_back(Date(1,January,2006)); // Sunday
1490 // expectedHol.push_back(Date(28,January,2006)); // Saturday
1491 // expectedHol.push_back(Date(29,January,2006)); // Sunday
1492 expectedHol.emplace_back(args: 30, args: January, args: 2006);
1493 expectedHol.emplace_back(args: 1, args: March, args: 2006);
1494 expectedHol.emplace_back(args: 1, args: May, args: 2006);
1495 expectedHol.emplace_back(args: 5, args: May, args: 2006);
1496 expectedHol.emplace_back(args: 31, args: May, args: 2006); // election
1497 expectedHol.emplace_back(args: 6, args: June, args: 2006);
1498 expectedHol.emplace_back(args: 17, args: July, args: 2006);
1499 expectedHol.emplace_back(args: 15, args: August, args: 2006);
1500 expectedHol.emplace_back(args: 3, args: October, args: 2006);
1501 expectedHol.emplace_back(args: 5, args: October, args: 2006);
1502 expectedHol.emplace_back(args: 6, args: October, args: 2006);
1503 // expectedHol.push_back(Date(7,October,2006)); // Saturday
1504 expectedHol.emplace_back(args: 25, args: December, args: 2006);
1505
1506 expectedHol.emplace_back(args: 1, args: January, args: 2007);
1507 // expectedHol.push_back(Date(17,February,2007)); // Saturday
1508 // expectedHol.push_back(Date(18,February,2007)); // Sunday
1509 expectedHol.emplace_back(args: 19, args: February, args: 2007);
1510 expectedHol.emplace_back(args: 1, args: March, args: 2007);
1511 expectedHol.emplace_back(args: 1, args: May, args: 2007);
1512 // expectedHol.push_back(Date(5,May,2007)); // Saturday
1513 expectedHol.emplace_back(args: 24, args: May, args: 2007);
1514 expectedHol.emplace_back(args: 6, args: June, args: 2007);
1515 expectedHol.emplace_back(args: 17, args: July, args: 2007);
1516 expectedHol.emplace_back(args: 15, args: August, args: 2007);
1517 expectedHol.emplace_back(args: 24, args: September, args: 2007);
1518 expectedHol.emplace_back(args: 25, args: September, args: 2007);
1519 expectedHol.emplace_back(args: 26, args: September, args: 2007);
1520 expectedHol.emplace_back(args: 3, args: October, args: 2007);
1521 expectedHol.emplace_back(args: 19, args: December, args: 2007); // election
1522 expectedHol.emplace_back(args: 25, args: December, args: 2007);
1523 expectedHol.emplace_back(args: 1, args: January, args: 2008);
1524 expectedHol.emplace_back(args: 6, args: February, args: 2008);
1525 expectedHol.emplace_back(args: 7, args: February, args: 2008);
1526 expectedHol.emplace_back(args: 8, args: February, args: 2008);
1527 expectedHol.emplace_back(args: 9, args: April, args: 2008);
1528 expectedHol.emplace_back(args: 1, args: May, args: 2008);
1529 expectedHol.emplace_back(args: 5, args: May, args: 2008);
1530 expectedHol.emplace_back(args: 12, args: May, args: 2008);
1531 expectedHol.emplace_back(args: 6, args: June, args: 2008);
1532 expectedHol.emplace_back(args: 15, args: August, args: 2008);
1533 expectedHol.emplace_back(args: 15, args: September, args: 2008);
1534 expectedHol.emplace_back(args: 3, args: October, args: 2008);
1535 expectedHol.emplace_back(args: 25, args: December, args: 2008);
1536 expectedHol.emplace_back(args: 1, args: January, args: 2009);
1537 expectedHol.emplace_back(args: 26, args: January, args: 2009);
1538 expectedHol.emplace_back(args: 27, args: January, args: 2009);
1539 expectedHol.emplace_back(args: 1, args: May, args: 2009);
1540 expectedHol.emplace_back(args: 5, args: May, args: 2009);
1541 expectedHol.emplace_back(args: 2, args: October, args: 2009);
1542 expectedHol.emplace_back(args: 25, args: December, args: 2009);
1543 expectedHol.emplace_back(args: 1, args: January, args: 2010);
1544 expectedHol.emplace_back(args: 15, args: February, args: 2010);
1545 expectedHol.emplace_back(args: 1, args: March, args: 2010);
1546 expectedHol.emplace_back(args: 5, args: May, args: 2010);
1547 expectedHol.emplace_back(args: 21, args: May, args: 2010);
1548 expectedHol.emplace_back(args: 2, args: June, args: 2010);
1549 expectedHol.emplace_back(args: 21, args: September, args: 2010);
1550 expectedHol.emplace_back(args: 22, args: September, args: 2010);
1551 expectedHol.emplace_back(args: 23, args: September, args: 2010);
1552 expectedHol.emplace_back(args: 2, args: February, args: 2011);
1553 expectedHol.emplace_back(args: 3, args: February, args: 2011);
1554 expectedHol.emplace_back(args: 4, args: February, args: 2011);
1555 expectedHol.emplace_back(args: 1, args: March, args: 2011);
1556 expectedHol.emplace_back(args: 5, args: May, args: 2011);
1557 expectedHol.emplace_back(args: 10, args: May, args: 2011);
1558 expectedHol.emplace_back(args: 6, args: June, args: 2011);
1559 expectedHol.emplace_back(args: 15, args: August, args: 2011);
1560 expectedHol.emplace_back(args: 12, args: September, args: 2011);
1561 expectedHol.emplace_back(args: 13, args: September, args: 2011);
1562 expectedHol.emplace_back(args: 3, args: October, args: 2011);
1563 expectedHol.emplace_back(args: 23, args: January, args: 2012);
1564 expectedHol.emplace_back(args: 24, args: January, args: 2012);
1565 expectedHol.emplace_back(args: 1, args: March, args: 2012);
1566 expectedHol.emplace_back(args: 11, args: April, args: 2012);
1567 expectedHol.emplace_back(args: 1, args: May, args: 2012);
1568 expectedHol.emplace_back(args: 28, args: May, args: 2012);
1569 expectedHol.emplace_back(args: 6, args: June, args: 2012);
1570 expectedHol.emplace_back(args: 15, args: August, args: 2012);
1571 expectedHol.emplace_back(args: 1, args: October, args: 2012);
1572 expectedHol.emplace_back(args: 3, args: October, args: 2012);
1573 expectedHol.emplace_back(args: 19, args: December, args: 2012);
1574 expectedHol.emplace_back(args: 25, args: December, args: 2012);
1575 expectedHol.emplace_back(args: 1, args: January, args: 2013);
1576 expectedHol.emplace_back(args: 11, args: February, args: 2013);
1577 expectedHol.emplace_back(args: 1, args: March, args: 2013);
1578 expectedHol.emplace_back(args: 1, args: May, args: 2013);
1579 expectedHol.emplace_back(args: 17, args: May, args: 2013);
1580 expectedHol.emplace_back(args: 6, args: June, args: 2013);
1581 expectedHol.emplace_back(args: 15, args: August, args: 2013);
1582 expectedHol.emplace_back(args: 18, args: September, args: 2013);
1583 expectedHol.emplace_back(args: 19, args: September, args: 2013);
1584 expectedHol.emplace_back(args: 20, args: September, args: 2013);
1585 expectedHol.emplace_back(args: 3, args: October, args: 2013);
1586 expectedHol.emplace_back(args: 9, args: October, args: 2013);
1587 expectedHol.emplace_back(args: 25, args: December, args: 2013);
1588 expectedHol.emplace_back(args: 1, args: January, args: 2014);
1589 expectedHol.emplace_back(args: 30, args: January, args: 2014);
1590 expectedHol.emplace_back(args: 31, args: January, args: 2014);
1591 expectedHol.emplace_back(args: 1, args: May, args: 2014);
1592 expectedHol.emplace_back(args: 5, args: May, args: 2014);
1593 expectedHol.emplace_back(args: 6, args: May, args: 2014);
1594 expectedHol.emplace_back(args: 4, args: June, args: 2014);
1595 expectedHol.emplace_back(args: 6, args: June, args: 2014);
1596 expectedHol.emplace_back(args: 15, args: August, args: 2014);
1597 expectedHol.emplace_back(args: 8, args: September, args: 2014);
1598 expectedHol.emplace_back(args: 9, args: September, args: 2014);
1599 expectedHol.emplace_back(args: 10, args: September, args: 2014);
1600 expectedHol.emplace_back(args: 3, args: October, args: 2014);
1601 expectedHol.emplace_back(args: 9, args: October, args: 2014);
1602 expectedHol.emplace_back(args: 25, args: December, args: 2014);
1603 expectedHol.emplace_back(args: 1, args: January, args: 2015);
1604 expectedHol.emplace_back(args: 18, args: February, args: 2015);
1605 expectedHol.emplace_back(args: 19, args: February, args: 2015);
1606 expectedHol.emplace_back(args: 20, args: February, args: 2015);
1607 expectedHol.emplace_back(args: 1, args: May, args: 2015);
1608 expectedHol.emplace_back(args: 5, args: May, args: 2015);
1609 expectedHol.emplace_back(args: 25, args: May, args: 2015);
1610 expectedHol.emplace_back(args: 14, args: August, args: 2015);
1611 expectedHol.emplace_back(args: 28, args: September, args: 2015);
1612 expectedHol.emplace_back(args: 29, args: September, args: 2015);
1613 expectedHol.emplace_back(args: 9, args: October, args: 2015);
1614 expectedHol.emplace_back(args: 25, args: December, args: 2015);
1615 expectedHol.emplace_back(args: 1, args: January, args: 2016);
1616 expectedHol.emplace_back(args: 8, args: February, args: 2016);
1617 expectedHol.emplace_back(args: 9, args: February, args: 2016);
1618 expectedHol.emplace_back(args: 10, args: February, args: 2016);
1619 expectedHol.emplace_back(args: 1, args: March, args: 2016);
1620 expectedHol.emplace_back(args: 13, args: April, args: 2016);
1621 expectedHol.emplace_back(args: 5, args: May, args: 2016);
1622 expectedHol.emplace_back(args: 6, args: June, args: 2016);
1623 expectedHol.emplace_back(args: 15, args: August, args: 2016);
1624 expectedHol.emplace_back(args: 14, args: September, args: 2016);
1625 expectedHol.emplace_back(args: 15, args: September, args: 2016);
1626 expectedHol.emplace_back(args: 16, args: September, args: 2016);
1627 expectedHol.emplace_back(args: 3, args: October, args: 2016);
1628 expectedHol.emplace_back(args: 27, args: January, args: 2017);
1629 expectedHol.emplace_back(args: 30, args: January, args: 2017);
1630 expectedHol.emplace_back(args: 1, args: March, args: 2017);
1631 expectedHol.emplace_back(args: 1, args: May, args: 2017);
1632 expectedHol.emplace_back(args: 3, args: May, args: 2017);
1633 expectedHol.emplace_back(args: 5, args: May, args: 2017);
1634 expectedHol.emplace_back(args: 9, args: May, args: 2017);
1635 expectedHol.emplace_back(args: 6, args: June, args: 2017);
1636 expectedHol.emplace_back(args: 15, args: August, args: 2017);
1637 expectedHol.emplace_back(args: 3, args: October, args: 2017);
1638 expectedHol.emplace_back(args: 4, args: October, args: 2017);
1639 expectedHol.emplace_back(args: 5, args: October, args: 2017);
1640 expectedHol.emplace_back(args: 6, args: October, args: 2017);
1641 expectedHol.emplace_back(args: 9, args: October, args: 2017);
1642 expectedHol.emplace_back(args: 25, args: December, args: 2017);
1643 expectedHol.emplace_back(args: 1, args: January, args: 2018);
1644 expectedHol.emplace_back(args: 15, args: February, args: 2018);
1645 expectedHol.emplace_back(args: 16, args: February, args: 2018);
1646 expectedHol.emplace_back(args: 1, args: March, args: 2018);
1647 expectedHol.emplace_back(args: 1, args: May, args: 2018);
1648 expectedHol.emplace_back(args: 7, args: May, args: 2018);
1649 expectedHol.emplace_back(args: 22, args: May, args: 2018);
1650 expectedHol.emplace_back(args: 6, args: June, args: 2018);
1651 expectedHol.emplace_back(args: 13, args: June, args: 2018);
1652 expectedHol.emplace_back(args: 15, args: August, args: 2018);
1653 expectedHol.emplace_back(args: 24, args: September, args: 2018);
1654 expectedHol.emplace_back(args: 25, args: September, args: 2018);
1655 expectedHol.emplace_back(args: 26, args: September, args: 2018);
1656 expectedHol.emplace_back(args: 3, args: October, args: 2018);
1657 expectedHol.emplace_back(args: 9, args: October, args: 2018);
1658 expectedHol.emplace_back(args: 25, args: December, args: 2018);
1659 expectedHol.emplace_back(args: 1, args: January, args: 2019);
1660 expectedHol.emplace_back(args: 4, args: February, args: 2019);
1661 expectedHol.emplace_back(args: 5, args: February, args: 2019);
1662 expectedHol.emplace_back(args: 6, args: February, args: 2019);
1663 expectedHol.emplace_back(args: 1, args: March, args: 2019);
1664 expectedHol.emplace_back(args: 1, args: May, args: 2019);
1665 expectedHol.emplace_back(args: 6, args: May, args: 2019);
1666 expectedHol.emplace_back(args: 6, args: June, args: 2019);
1667 expectedHol.emplace_back(args: 15, args: August, args: 2019);
1668 expectedHol.emplace_back(args: 12, args: September, args: 2019);
1669 expectedHol.emplace_back(args: 13, args: September, args: 2019);
1670 expectedHol.emplace_back(args: 3, args: October, args: 2019);
1671 expectedHol.emplace_back(args: 9, args: October, args: 2019);
1672 expectedHol.emplace_back(args: 25, args: December, args: 2019);
1673 expectedHol.emplace_back(args: 1, args: January, args: 2020);
1674 expectedHol.emplace_back(args: 24, args: January, args: 2020);
1675 expectedHol.emplace_back(args: 27, args: January, args: 2020);
1676 expectedHol.emplace_back(args: 15, args: April, args: 2020);
1677 expectedHol.emplace_back(args: 30, args: April, args: 2020);
1678 expectedHol.emplace_back(args: 1, args: May, args: 2020);
1679 expectedHol.emplace_back(args: 5, args: May, args: 2020);
1680 expectedHol.emplace_back(args: 17, args: August, args: 2020);
1681 expectedHol.emplace_back(args: 30, args: September, args: 2020);
1682 expectedHol.emplace_back(args: 1, args: October, args: 2020);
1683 expectedHol.emplace_back(args: 2, args: October, args: 2020);
1684 expectedHol.emplace_back(args: 9, args: October, args: 2020);
1685 expectedHol.emplace_back(args: 25, args: December, args: 2020);
1686 expectedHol.emplace_back(args: 1, args: January, args: 2021);
1687 expectedHol.emplace_back(args: 11, args: February, args: 2021);
1688 expectedHol.emplace_back(args: 12, args: February, args: 2021);
1689 expectedHol.emplace_back(args: 1, args: March, args: 2021);
1690 expectedHol.emplace_back(args: 5, args: May, args: 2021);
1691 expectedHol.emplace_back(args: 19, args: May, args: 2021);
1692 expectedHol.emplace_back(args: 16, args: August, args: 2021);
1693 expectedHol.emplace_back(args: 20, args: September, args: 2021);
1694 expectedHol.emplace_back(args: 21, args: September, args: 2021);
1695 expectedHol.emplace_back(args: 22, args: September, args: 2021);
1696 expectedHol.emplace_back(args: 4, args: October, args: 2021);
1697 expectedHol.emplace_back(args: 11, args: October, args: 2021);
1698 expectedHol.emplace_back(args: 31, args: January, args: 2022);
1699 expectedHol.emplace_back(args: 1, args: February, args: 2022);
1700 expectedHol.emplace_back(args: 2, args: February, args: 2022);
1701 expectedHol.emplace_back(args: 1, args: March, args: 2022);
1702 expectedHol.emplace_back(args: 9, args: March, args: 2022);
1703 expectedHol.emplace_back(args: 5, args: May, args: 2022);
1704 expectedHol.emplace_back(args: 1, args: June, args: 2022);
1705 expectedHol.emplace_back(args: 6, args: June, args: 2022);
1706 expectedHol.emplace_back(args: 15, args: August, args: 2022);
1707 expectedHol.emplace_back(args: 9, args: September, args: 2022);
1708 expectedHol.emplace_back(args: 12, args: September, args: 2022);
1709 expectedHol.emplace_back(args: 3, args: October, args: 2022);
1710 expectedHol.emplace_back(args: 10, args: October, args: 2022);
1711 // expectedHol.emplace_back(1, January, 2023); // Sunday
1712 // expectedHol.emplace_back(21, January, 2023); // Saturday
1713 expectedHol.emplace_back(args: 23, args: January, args: 2023);
1714 expectedHol.emplace_back(args: 24, args: January, args: 2023);
1715 expectedHol.emplace_back(args: 1, args: March, args: 2023);
1716 expectedHol.emplace_back(args: 1, args: May, args: 2023);
1717 expectedHol.emplace_back(args: 5, args: May, args: 2023);
1718 expectedHol.emplace_back(args: 29, args: May, args: 2023);
1719 expectedHol.emplace_back(args: 6, args: June, args: 2023);
1720 expectedHol.emplace_back(args: 15, args: August, args: 2023);
1721 expectedHol.emplace_back(args: 28, args: September, args: 2023);
1722 expectedHol.emplace_back(args: 29, args: September, args: 2023);
1723 // expectedHol.emplace_back(30, September, 2023); // Saturday
1724 expectedHol.emplace_back(args: 2, args: October, args: 2023);
1725 expectedHol.emplace_back(args: 3, args: October, args: 2023);
1726 expectedHol.emplace_back(args: 9, args: October, args: 2023);
1727 expectedHol.emplace_back(args: 25, args: December, args: 2023);
1728 expectedHol.emplace_back(args: 1, args: January, args: 2024);
1729 expectedHol.emplace_back(args: 9, args: February, args: 2024);
1730 // expectedHol.emplace_back(10, February, 2024); // Saturday
1731 expectedHol.emplace_back(args: 12, args: February, args: 2024);
1732 expectedHol.emplace_back(args: 1, args: March, args: 2024);
1733 expectedHol.emplace_back(args: 10, args: April, args: 2024);
1734 expectedHol.emplace_back(args: 1, args: May, args: 2024);
1735 expectedHol.emplace_back(args: 6, args: May, args: 2024);
1736 expectedHol.emplace_back(args: 15, args: May, args: 2024);
1737 expectedHol.emplace_back(args: 6, args: June, args: 2024);
1738 expectedHol.emplace_back(args: 15, args: August, args: 2024);
1739 expectedHol.emplace_back(args: 16, args: September, args: 2024);
1740 expectedHol.emplace_back(args: 17, args: September, args: 2024);
1741 expectedHol.emplace_back(args: 18, args: September, args: 2024);
1742 expectedHol.emplace_back(args: 3, args: October, args: 2024);
1743 expectedHol.emplace_back(args: 9, args: October, args: 2024);
1744 expectedHol.emplace_back(args: 25, args: December, args: 2024);
1745 expectedHol.emplace_back(args: 1, args: January, args: 2025);
1746 expectedHol.emplace_back(args: 28, args: January, args: 2025);
1747 expectedHol.emplace_back(args: 29, args: January, args: 2025);
1748 expectedHol.emplace_back(args: 30, args: January, args: 2025);
1749 expectedHol.emplace_back(args: 3, args: March, args: 2025);
1750 expectedHol.emplace_back(args: 1, args: May, args: 2025);
1751 expectedHol.emplace_back(args: 5, args: May, args: 2025);
1752 expectedHol.emplace_back(args: 6, args: May, args: 2025);
1753 expectedHol.emplace_back(args: 6, args: June, args: 2025);
1754 expectedHol.emplace_back(args: 15, args: August, args: 2025);
1755 expectedHol.emplace_back(args: 3, args: October, args: 2025);
1756 expectedHol.emplace_back(args: 6, args: October, args: 2025);
1757 expectedHol.emplace_back(args: 7, args: October, args: 2025);
1758 expectedHol.emplace_back(args: 8, args: October, args: 2025);
1759 expectedHol.emplace_back(args: 9, args: October, args: 2025);
1760 expectedHol.emplace_back(args: 25, args: December, args: 2025);
1761 expectedHol.emplace_back(args: 1, args: January, args: 2026);
1762 expectedHol.emplace_back(args: 16, args: February, args: 2026);
1763 expectedHol.emplace_back(args: 17, args: February, args: 2026);
1764 expectedHol.emplace_back(args: 18, args: February, args: 2026);
1765 expectedHol.emplace_back(args: 2, args: March, args: 2026);
1766 expectedHol.emplace_back(args: 1, args: May, args: 2026);
1767 expectedHol.emplace_back(args: 5, args: May, args: 2026);
1768 expectedHol.emplace_back(args: 25, args: May, args: 2026);
1769 // expectedHol.emplace_back(6, June, 2026); // Saturday
1770 expectedHol.emplace_back(args: 17, args: August, args: 2026);
1771 expectedHol.emplace_back(args: 24, args: September, args: 2026);
1772 expectedHol.emplace_back(args: 25, args: September, args: 2026);
1773 // expectedHol.emplace_back(26, September, 2026); // Saturday
1774 expectedHol.emplace_back(args: 5, args: October, args: 2026);
1775 expectedHol.emplace_back(args: 9, args: October, args: 2026);
1776 expectedHol.emplace_back(args: 25, args: December, args: 2026);
1777 expectedHol.emplace_back(args: 1, args: January, args: 2027);
1778 // expectedHol.emplace_back(6, February, 2027); // Saturday
1779 expectedHol.emplace_back(args: 8, args: February, args: 2027);
1780 expectedHol.emplace_back(args: 9, args: February, args: 2027);
1781 expectedHol.emplace_back(args: 1, args: March, args: 2027);
1782 // expectedHol.emplace_back(1, May, 2027); // Saturday
1783 expectedHol.emplace_back(args: 5, args: May, args: 2027);
1784 expectedHol.emplace_back(args: 13, args: May, args: 2027);
1785 // expectedHol.emplace_back(6, June, 2027); // Sunday
1786 expectedHol.emplace_back(args: 16, args: August, args: 2027);
1787 expectedHol.emplace_back(args: 14, args: September, args: 2027);
1788 expectedHol.emplace_back(args: 15, args: September, args: 2027);
1789 expectedHol.emplace_back(args: 16, args: September, args: 2027);
1790 expectedHol.emplace_back(args: 4, args: October, args: 2027);
1791 expectedHol.emplace_back(args: 11, args: October, args: 2027);
1792 expectedHol.emplace_back(args: 27, args: December, args: 2027);
1793 // expectedHol.emplace_back(1, January, 2028); // Saturday
1794 expectedHol.emplace_back(args: 26, args: January, args: 2028);
1795 expectedHol.emplace_back(args: 27, args: January, args: 2028);
1796 expectedHol.emplace_back(args: 28, args: January, args: 2028);
1797 expectedHol.emplace_back(args: 1, args: March, args: 2028);
1798 expectedHol.emplace_back(args: 1, args: May, args: 2028);
1799 expectedHol.emplace_back(args: 2, args: May, args: 2028);
1800 expectedHol.emplace_back(args: 5, args: May, args: 2028);
1801 expectedHol.emplace_back(args: 6, args: June, args: 2028);
1802 expectedHol.emplace_back(args: 15, args: August, args: 2028);
1803 expectedHol.emplace_back(args: 2, args: October, args: 2028);
1804 expectedHol.emplace_back(args: 3, args: October, args: 2028);
1805 expectedHol.emplace_back(args: 4, args: October, args: 2028);
1806 expectedHol.emplace_back(args: 5, args: October, args: 2028);
1807 expectedHol.emplace_back(args: 9, args: October, args: 2028);
1808 expectedHol.emplace_back(args: 25, args: December, args: 2028);
1809 expectedHol.emplace_back(args: 1, args: January, args: 2029);
1810 expectedHol.emplace_back(args: 12, args: February, args: 2029);
1811 expectedHol.emplace_back(args: 13, args: February, args: 2029);
1812 expectedHol.emplace_back(args: 14, args: February, args: 2029);
1813 expectedHol.emplace_back(args: 1, args: March, args: 2029);
1814 expectedHol.emplace_back(args: 1, args: May, args: 2029);
1815 expectedHol.emplace_back(args: 7, args: May, args: 2029);
1816 expectedHol.emplace_back(args: 21, args: May, args: 2029);
1817 expectedHol.emplace_back(args: 6, args: June, args: 2029);
1818 expectedHol.emplace_back(args: 15, args: August, args: 2029);
1819 expectedHol.emplace_back(args: 21, args: September, args: 2029);
1820 // expectedHol.emplace_back(22, September, 2029); // Saturday
1821 expectedHol.emplace_back(args: 24, args: September, args: 2029);
1822 expectedHol.emplace_back(args: 3, args: October, args: 2029);
1823 expectedHol.emplace_back(args: 9, args: October, args: 2029);
1824 expectedHol.emplace_back(args: 25, args: December, args: 2029);
1825 expectedHol.emplace_back(args: 1, args: January, args: 2030);
1826 // expectedHol.emplace_back(2, February, 2030); // Saturday
1827 expectedHol.emplace_back(args: 4, args: February, args: 2030);
1828 expectedHol.emplace_back(args: 5, args: February, args: 2030);
1829 expectedHol.emplace_back(args: 1, args: March, args: 2030);
1830 expectedHol.emplace_back(args: 1, args: May, args: 2030);
1831 expectedHol.emplace_back(args: 6, args: May, args: 2030);
1832 expectedHol.emplace_back(args: 9, args: May, args: 2030);
1833 expectedHol.emplace_back(args: 6, args: June, args: 2030);
1834 expectedHol.emplace_back(args: 15, args: August, args: 2030);
1835 expectedHol.emplace_back(args: 11, args: September, args: 2030);
1836 expectedHol.emplace_back(args: 12, args: September, args: 2030);
1837 expectedHol.emplace_back(args: 13, args: September, args: 2030);
1838 expectedHol.emplace_back(args: 3, args: October, args: 2030);
1839 expectedHol.emplace_back(args: 9, args: October, args: 2030);
1840 expectedHol.emplace_back(args: 25, args: December, args: 2030);
1841 expectedHol.emplace_back(args: 1, args: January, args: 2031);
1842 expectedHol.emplace_back(args: 22, args: January, args: 2031);
1843 expectedHol.emplace_back(args: 23, args: January, args: 2031);
1844 expectedHol.emplace_back(args: 24, args: January, args: 2031);
1845 expectedHol.emplace_back(args: 3, args: March, args: 2031);
1846 expectedHol.emplace_back(args: 1, args: May, args: 2031);
1847 expectedHol.emplace_back(args: 5, args: May, args: 2031);
1848 expectedHol.emplace_back(args: 28, args: May, args: 2031);
1849 expectedHol.emplace_back(args: 6, args: June, args: 2031);
1850 expectedHol.emplace_back(args: 15, args: August, args: 2031);
1851 expectedHol.emplace_back(args: 30, args: September, args: 2031);
1852 expectedHol.emplace_back(args: 1, args: October, args: 2031);
1853 expectedHol.emplace_back(args: 2, args: October, args: 2031);
1854 expectedHol.emplace_back(args: 3, args: October, args: 2031);
1855 expectedHol.emplace_back(args: 9, args: October, args: 2031);
1856 expectedHol.emplace_back(args: 25, args: December, args: 2031);
1857 expectedHol.emplace_back(args: 1, args: January, args: 2032);
1858 expectedHol.emplace_back(args: 10, args: February, args: 2032);
1859 expectedHol.emplace_back(args: 11, args: February, args: 2032);
1860 expectedHol.emplace_back(args: 12, args: February, args: 2032);
1861 expectedHol.emplace_back(args: 1, args: March, args: 2032);
1862 // expectedHol.emplace_back(1, May, 2032); // Saturday
1863 expectedHol.emplace_back(args: 5, args: May, args: 2032);
1864 expectedHol.emplace_back(args: 17, args: May, args: 2032);
1865 // expectedHol.emplace_back(6, June, 2032); // Sunday
1866 expectedHol.emplace_back(args: 16, args: August, args: 2032);
1867 // expectedHol.emplace_back(18, September, 2032); // Saturday
1868 expectedHol.emplace_back(args: 20, args: September, args: 2032);
1869 expectedHol.emplace_back(args: 21, args: September, args: 2032);
1870 expectedHol.emplace_back(args: 4, args: October, args: 2032);
1871 expectedHol.emplace_back(args: 11, args: October, args: 2032);
1872 expectedHol.emplace_back(args: 27, args: December, args: 2032);
1873 // expectedHol.emplace_back(1, January, 2033); // Saturday
1874 expectedHol.emplace_back(args: 31, args: January, args: 2033);
1875 expectedHol.emplace_back(args: 1, args: February, args: 2033);
1876 expectedHol.emplace_back(args: 2, args: February, args: 2033);
1877 expectedHol.emplace_back(args: 1, args: March, args: 2033);
1878 // expectedHol.emplace_back(1, May, 2033); // Sunday
1879 expectedHol.emplace_back(args: 5, args: May, args: 2033);
1880 expectedHol.emplace_back(args: 6, args: May, args: 2033);
1881 expectedHol.emplace_back(args: 6, args: June, args: 2033);
1882 expectedHol.emplace_back(args: 15, args: August, args: 2033);
1883 expectedHol.emplace_back(args: 7, args: September, args: 2033);
1884 expectedHol.emplace_back(args: 8, args: September, args: 2033);
1885 expectedHol.emplace_back(args: 9, args: September, args: 2033);
1886 expectedHol.emplace_back(args: 3, args: October, args: 2033);
1887 expectedHol.emplace_back(args: 10, args: October, args: 2033);
1888 expectedHol.emplace_back(args: 26, args: December, args: 2033);
1889 // expectedHol.emplace_back(1, January, 2034); // Sunday
1890 // expectedHol.emplace_back(18, February, 2034); // Saturday
1891 expectedHol.emplace_back(args: 20, args: February, args: 2034);
1892 expectedHol.emplace_back(args: 21, args: February, args: 2034);
1893 expectedHol.emplace_back(args: 1, args: March, args: 2034);
1894 expectedHol.emplace_back(args: 1, args: May, args: 2034);
1895 expectedHol.emplace_back(args: 5, args: May, args: 2034);
1896 expectedHol.emplace_back(args: 25, args: May, args: 2034);
1897 expectedHol.emplace_back(args: 6, args: June, args: 2034);
1898 expectedHol.emplace_back(args: 15, args: August, args: 2034);
1899 expectedHol.emplace_back(args: 26, args: September, args: 2034);
1900 expectedHol.emplace_back(args: 27, args: September, args: 2034);
1901 expectedHol.emplace_back(args: 28, args: September, args: 2034);
1902 expectedHol.emplace_back(args: 3, args: October, args: 2034);
1903 expectedHol.emplace_back(args: 9, args: October, args: 2034);
1904 expectedHol.emplace_back(args: 25, args: December, args: 2034);
1905 expectedHol.emplace_back(args: 1, args: January, args: 2035);
1906 expectedHol.emplace_back(args: 7, args: February, args: 2035);
1907 expectedHol.emplace_back(args: 8, args: February, args: 2035);
1908 expectedHol.emplace_back(args: 9, args: February, args: 2035);
1909 expectedHol.emplace_back(args: 1, args: March, args: 2035);
1910 expectedHol.emplace_back(args: 1, args: May, args: 2035);
1911 expectedHol.emplace_back(args: 7, args: May, args: 2035);
1912 expectedHol.emplace_back(args: 15, args: May, args: 2035);
1913 expectedHol.emplace_back(args: 6, args: June, args: 2035);
1914 expectedHol.emplace_back(args: 15, args: August, args: 2035);
1915 // expectedHol.emplace_back(15, September, 2035); // Saturday
1916 expectedHol.emplace_back(args: 17, args: September, args: 2035);
1917 expectedHol.emplace_back(args: 18, args: September, args: 2035);
1918 expectedHol.emplace_back(args: 3, args: October, args: 2035);
1919 expectedHol.emplace_back(args: 9, args: October, args: 2035);
1920 expectedHol.emplace_back(args: 25, args: December, args: 2035);
1921 expectedHol.emplace_back(args: 1, args: January, args: 2036);
1922 expectedHol.emplace_back(args: 28, args: January, args: 2036);
1923 expectedHol.emplace_back(args: 29, args: January, args: 2036);
1924 expectedHol.emplace_back(args: 30, args: January, args: 2036);
1925 expectedHol.emplace_back(args: 3, args: March, args: 2036);
1926 expectedHol.emplace_back(args: 1, args: May, args: 2036);
1927 expectedHol.emplace_back(args: 5, args: May, args: 2036);
1928 expectedHol.emplace_back(args: 6, args: May, args: 2036);
1929 expectedHol.emplace_back(args: 6, args: June, args: 2036);
1930 expectedHol.emplace_back(args: 15, args: August, args: 2036);
1931 expectedHol.emplace_back(args: 3, args: October, args: 2036);
1932 // expectedHol.emplace_back(4, October, 2036); // Saturday
1933 expectedHol.emplace_back(args: 6, args: October, args: 2036);
1934 expectedHol.emplace_back(args: 7, args: October, args: 2036);
1935 expectedHol.emplace_back(args: 9, args: October, args: 2036);
1936 expectedHol.emplace_back(args: 25, args: December, args: 2036);
1937 expectedHol.emplace_back(args: 1, args: January, args: 2037);
1938 // expectedHol.emplace_back(14, February, 2037); // Saturday
1939 expectedHol.emplace_back(args: 16, args: February, args: 2037);
1940 expectedHol.emplace_back(args: 17, args: February, args: 2037);
1941 expectedHol.emplace_back(args: 2, args: March, args: 2037);
1942 expectedHol.emplace_back(args: 1, args: May, args: 2037);
1943 expectedHol.emplace_back(args: 5, args: May, args: 2037);
1944 expectedHol.emplace_back(args: 22, args: May, args: 2037);
1945 // expectedHol.emplace_back(6, June, 2037); // Saturday
1946 expectedHol.emplace_back(args: 17, args: August, args: 2037);
1947 expectedHol.emplace_back(args: 23, args: September, args: 2037);
1948 expectedHol.emplace_back(args: 24, args: September, args: 2037);
1949 expectedHol.emplace_back(args: 25, args: September, args: 2037);
1950 expectedHol.emplace_back(args: 5, args: October, args: 2037);
1951 expectedHol.emplace_back(args: 9, args: October, args: 2037);
1952 expectedHol.emplace_back(args: 25, args: December, args: 2037);
1953 expectedHol.emplace_back(args: 1, args: January, args: 2038);
1954 expectedHol.emplace_back(args: 3, args: February, args: 2038);
1955 expectedHol.emplace_back(args: 4, args: February, args: 2038);
1956 expectedHol.emplace_back(args: 5, args: February, args: 2038);
1957 expectedHol.emplace_back(args: 1, args: March, args: 2038);
1958 // expectedHol.emplace_back(1, May, 2038); // Saturday
1959 expectedHol.emplace_back(args: 5, args: May, args: 2038);
1960 expectedHol.emplace_back(args: 11, args: May, args: 2038);
1961 // expectedHol.emplace_back(6, June, 2038); // Sunday
1962 expectedHol.emplace_back(args: 16, args: August, args: 2038);
1963 expectedHol.emplace_back(args: 13, args: September, args: 2038);
1964 expectedHol.emplace_back(args: 14, args: September, args: 2038);
1965 expectedHol.emplace_back(args: 15, args: September, args: 2038);
1966 expectedHol.emplace_back(args: 4, args: October, args: 2038);
1967 expectedHol.emplace_back(args: 11, args: October, args: 2038);
1968 expectedHol.emplace_back(args: 27, args: December, args: 2038);
1969 // expectedHol.emplace_back(1, January, 2039); // Saturday
1970 expectedHol.emplace_back(args: 24, args: January, args: 2039);
1971 expectedHol.emplace_back(args: 25, args: January, args: 2039);
1972 expectedHol.emplace_back(args: 26, args: January, args: 2039);
1973 expectedHol.emplace_back(args: 1, args: March, args: 2039);
1974 // expectedHol.emplace_back(1, May, 2039); // Sunday
1975 expectedHol.emplace_back(args: 2, args: May, args: 2039);
1976 expectedHol.emplace_back(args: 5, args: May, args: 2039);
1977 expectedHol.emplace_back(args: 6, args: June, args: 2039);
1978 expectedHol.emplace_back(args: 15, args: August, args: 2039);
1979 // expectedHol.emplace_back(1, October, 2039); // Saturday
1980 expectedHol.emplace_back(args: 3, args: October, args: 2039);
1981 expectedHol.emplace_back(args: 4, args: October, args: 2039);
1982 expectedHol.emplace_back(args: 5, args: October, args: 2039);
1983 expectedHol.emplace_back(args: 10, args: October, args: 2039);
1984 expectedHol.emplace_back(args: 26, args: December, args: 2039);
1985 // expectedHol.emplace_back(1, January, 2040); // Sunday
1986 // expectedHol.emplace_back(11, February, 2040); // Saturday
1987 expectedHol.emplace_back(args: 13, args: February, args: 2040);
1988 expectedHol.emplace_back(args: 14, args: February, args: 2040);
1989 expectedHol.emplace_back(args: 1, args: March, args: 2040);
1990 expectedHol.emplace_back(args: 1, args: May, args: 2040);
1991 expectedHol.emplace_back(args: 7, args: May, args: 2040);
1992 expectedHol.emplace_back(args: 18, args: May, args: 2040);
1993 expectedHol.emplace_back(args: 6, args: June, args: 2040);
1994 expectedHol.emplace_back(args: 15, args: August, args: 2040);
1995 expectedHol.emplace_back(args: 20, args: September, args: 2040);
1996 expectedHol.emplace_back(args: 21, args: September, args: 2040);
1997 // expectedHol.emplace_back(22, September, 2040); // Saturday
1998 expectedHol.emplace_back(args: 3, args: October, args: 2040);
1999 expectedHol.emplace_back(args: 9, args: October, args: 2040);
2000 expectedHol.emplace_back(args: 25, args: December, args: 2040);
2001 expectedHol.emplace_back(args: 1, args: January, args: 2041);
2002 expectedHol.emplace_back(args: 31, args: January, args: 2041);
2003 expectedHol.emplace_back(args: 1, args: February, args: 2041);
2004 // expectedHol.emplace_back(2, February, 2041); // Saturday
2005 expectedHol.emplace_back(args: 1, args: March, args: 2041);
2006 expectedHol.emplace_back(args: 1, args: May, args: 2041);
2007 expectedHol.emplace_back(args: 6, args: May, args: 2041);
2008 expectedHol.emplace_back(args: 7, args: May, args: 2041);
2009 expectedHol.emplace_back(args: 6, args: June, args: 2041);
2010 expectedHol.emplace_back(args: 15, args: August, args: 2041);
2011 expectedHol.emplace_back(args: 9, args: September, args: 2041);
2012 expectedHol.emplace_back(args: 10, args: September, args: 2041);
2013 expectedHol.emplace_back(args: 11, args: September, args: 2041);
2014 expectedHol.emplace_back(args: 3, args: October, args: 2041);
2015 expectedHol.emplace_back(args: 9, args: October, args: 2041);
2016 expectedHol.emplace_back(args: 25, args: December, args: 2041);
2017 expectedHol.emplace_back(args: 1, args: January, args: 2042);
2018 expectedHol.emplace_back(args: 21, args: January, args: 2042);
2019 expectedHol.emplace_back(args: 22, args: January, args: 2042);
2020 expectedHol.emplace_back(args: 23, args: January, args: 2042);
2021 expectedHol.emplace_back(args: 3, args: March, args: 2042);
2022 expectedHol.emplace_back(args: 1, args: May, args: 2042);
2023 expectedHol.emplace_back(args: 5, args: May, args: 2042);
2024 expectedHol.emplace_back(args: 26, args: May, args: 2042);
2025 expectedHol.emplace_back(args: 6, args: June, args: 2042);
2026 expectedHol.emplace_back(args: 15, args: August, args: 2042);
2027 // expectedHol.emplace_back(27, September, 2042); // Saturday
2028 expectedHol.emplace_back(args: 29, args: September, args: 2042);
2029 expectedHol.emplace_back(args: 30, args: September, args: 2042);
2030 expectedHol.emplace_back(args: 3, args: October, args: 2042);
2031 expectedHol.emplace_back(args: 9, args: October, args: 2042);
2032 expectedHol.emplace_back(args: 25, args: December, args: 2042);
2033 expectedHol.emplace_back(args: 1, args: January, args: 2043);
2034 expectedHol.emplace_back(args: 9, args: February, args: 2043);
2035 expectedHol.emplace_back(args: 10, args: February, args: 2043);
2036 expectedHol.emplace_back(args: 11, args: February, args: 2043);
2037 expectedHol.emplace_back(args: 2, args: March, args: 2043);
2038 expectedHol.emplace_back(args: 1, args: May, args: 2043);
2039 expectedHol.emplace_back(args: 5, args: May, args: 2043);
2040 expectedHol.emplace_back(args: 18, args: May, args: 2043);
2041 // expectedHol.emplace_back(6, June, 2043); // Saturday
2042 expectedHol.emplace_back(args: 17, args: August, args: 2043);
2043 expectedHol.emplace_back(args: 16, args: September, args: 2043);
2044 expectedHol.emplace_back(args: 17, args: September, args: 2043);
2045 expectedHol.emplace_back(args: 18, args: September, args: 2043);
2046 expectedHol.emplace_back(args: 5, args: October, args: 2043);
2047 expectedHol.emplace_back(args: 9, args: October, args: 2043);
2048 expectedHol.emplace_back(args: 25, args: December, args: 2043);
2049 expectedHol.emplace_back(args: 1, args: January, args: 2044);
2050 expectedHol.emplace_back(args: 29, args: January, args: 2044);
2051 // expectedHol.emplace_back(30, January, 2044); // Saturday
2052 expectedHol.emplace_back(args: 1, args: February, args: 2044);
2053 expectedHol.emplace_back(args: 1, args: March, args: 2044);
2054 // expectedHol.emplace_back(1, May, 2044); // Sunday
2055 expectedHol.emplace_back(args: 5, args: May, args: 2044);
2056 expectedHol.emplace_back(args: 6, args: May, args: 2044);
2057 expectedHol.emplace_back(args: 6, args: June, args: 2044);
2058 expectedHol.emplace_back(args: 15, args: August, args: 2044);
2059 expectedHol.emplace_back(args: 3, args: October, args: 2044);
2060 expectedHol.emplace_back(args: 4, args: October, args: 2044);
2061 expectedHol.emplace_back(args: 5, args: October, args: 2044);
2062 expectedHol.emplace_back(args: 6, args: October, args: 2044);
2063 expectedHol.emplace_back(args: 10, args: October, args: 2044);
2064 expectedHol.emplace_back(args: 26, args: December, args: 2044);
2065 // expectedHol.emplace_back(1, January, 2045); // Sunday
2066 expectedHol.emplace_back(args: 16, args: February, args: 2045);
2067 expectedHol.emplace_back(args: 17, args: February, args: 2045);
2068 // expectedHol.emplace_back(18, February, 2045); // Saturday
2069 expectedHol.emplace_back(args: 1, args: March, args: 2045);
2070 expectedHol.emplace_back(args: 1, args: May, args: 2045);
2071 expectedHol.emplace_back(args: 5, args: May, args: 2045);
2072 expectedHol.emplace_back(args: 24, args: May, args: 2045);
2073 expectedHol.emplace_back(args: 6, args: June, args: 2045);
2074 expectedHol.emplace_back(args: 15, args: August, args: 2045);
2075 expectedHol.emplace_back(args: 25, args: September, args: 2045);
2076 expectedHol.emplace_back(args: 26, args: September, args: 2045);
2077 expectedHol.emplace_back(args: 27, args: September, args: 2045);
2078 expectedHol.emplace_back(args: 3, args: October, args: 2045);
2079 expectedHol.emplace_back(args: 9, args: October, args: 2045);
2080 expectedHol.emplace_back(args: 25, args: December, args: 2045);
2081 expectedHol.emplace_back(args: 1, args: January, args: 2046);
2082 expectedHol.emplace_back(args: 5, args: February, args: 2046);
2083 expectedHol.emplace_back(args: 6, args: February, args: 2046);
2084 expectedHol.emplace_back(args: 7, args: February, args: 2046);
2085 expectedHol.emplace_back(args: 1, args: March, args: 2046);
2086 expectedHol.emplace_back(args: 1, args: May, args: 2046);
2087 expectedHol.emplace_back(args: 7, args: May, args: 2046);
2088 expectedHol.emplace_back(args: 14, args: May, args: 2046);
2089 expectedHol.emplace_back(args: 6, args: June, args: 2046);
2090 expectedHol.emplace_back(args: 15, args: August, args: 2046);
2091 expectedHol.emplace_back(args: 14, args: September, args: 2046);
2092 // expectedHol.emplace_back(15, September, 2046); // Saturday
2093 expectedHol.emplace_back(args: 17, args: September, args: 2046);
2094 expectedHol.emplace_back(args: 3, args: October, args: 2046);
2095 expectedHol.emplace_back(args: 9, args: October, args: 2046);
2096 expectedHol.emplace_back(args: 25, args: December, args: 2046);
2097 expectedHol.emplace_back(args: 1, args: January, args: 2047);
2098 expectedHol.emplace_back(args: 25, args: January, args: 2047);
2099 // expectedHol.emplace_back(26, January, 2047); // Saturday
2100 expectedHol.emplace_back(args: 28, args: January, args: 2047);
2101 expectedHol.emplace_back(args: 1, args: March, args: 2047);
2102 expectedHol.emplace_back(args: 1, args: May, args: 2047);
2103 expectedHol.emplace_back(args: 2, args: May, args: 2047);
2104 expectedHol.emplace_back(args: 6, args: May, args: 2047);
2105 expectedHol.emplace_back(args: 6, args: June, args: 2047);
2106 expectedHol.emplace_back(args: 15, args: August, args: 2047);
2107 expectedHol.emplace_back(args: 3, args: October, args: 2047);
2108 expectedHol.emplace_back(args: 4, args: October, args: 2047);
2109 // expectedHol.emplace_back(5, October, 2047); // Saturday
2110 expectedHol.emplace_back(args: 7, args: October, args: 2047);
2111 expectedHol.emplace_back(args: 9, args: October, args: 2047);
2112 expectedHol.emplace_back(args: 25, args: December, args: 2047);
2113 expectedHol.emplace_back(args: 1, args: January, args: 2048);
2114 expectedHol.emplace_back(args: 13, args: February, args: 2048);
2115 expectedHol.emplace_back(args: 14, args: February, args: 2048);
2116 // expectedHol.emplace_back(15, February, 2048); // Saturday
2117 expectedHol.emplace_back(args: 2, args: March, args: 2048);
2118 expectedHol.emplace_back(args: 1, args: May, args: 2048);
2119 expectedHol.emplace_back(args: 5, args: May, args: 2048);
2120 expectedHol.emplace_back(args: 20, args: May, args: 2048);
2121 // expectedHol.emplace_back(6, June, 2048); // Saturday
2122 expectedHol.emplace_back(args: 17, args: August, args: 2048);
2123 expectedHol.emplace_back(args: 21, args: September, args: 2048);
2124 expectedHol.emplace_back(args: 22, args: September, args: 2048);
2125 expectedHol.emplace_back(args: 23, args: September, args: 2048);
2126 expectedHol.emplace_back(args: 5, args: October, args: 2048);
2127 expectedHol.emplace_back(args: 9, args: October, args: 2048);
2128 expectedHol.emplace_back(args: 25, args: December, args: 2048);
2129 expectedHol.emplace_back(args: 1, args: January, args: 2049);
2130 expectedHol.emplace_back(args: 1, args: February, args: 2049);
2131 expectedHol.emplace_back(args: 2, args: February, args: 2049);
2132 expectedHol.emplace_back(args: 3, args: February, args: 2049);
2133 expectedHol.emplace_back(args: 1, args: March, args: 2049);
2134 // expectedHol.emplace_back(1, May, 2049); // Saturday
2135 expectedHol.emplace_back(args: 5, args: May, args: 2049);
2136 expectedHol.emplace_back(args: 10, args: May, args: 2049);
2137 // expectedHol.emplace_back(6, June, 2049); // Sunday
2138 expectedHol.emplace_back(args: 16, args: August, args: 2049);
2139 expectedHol.emplace_back(args: 10, args: September, args: 2049);
2140 // expectedHol.emplace_back(11, September, 2049); // Saturday
2141 expectedHol.emplace_back(args: 13, args: September, args: 2049);
2142 expectedHol.emplace_back(args: 4, args: October, args: 2049);
2143 expectedHol.emplace_back(args: 11, args: October, args: 2049);
2144 expectedHol.emplace_back(args: 27, args: December, args: 2049);
2145 // expectedHol.emplace_back(1, January, 2050); // Saturday
2146 // expectedHol.emplace_back(22, January, 2050); // Saturday
2147 expectedHol.emplace_back(args: 24, args: January, args: 2050);
2148 expectedHol.emplace_back(args: 25, args: January, args: 2050);
2149 expectedHol.emplace_back(args: 1, args: March, args: 2050);
2150 // expectedHol.emplace_back(1, May, 2050); // Sunday
2151 expectedHol.emplace_back(args: 5, args: May, args: 2050);
2152 expectedHol.emplace_back(args: 30, args: May, args: 2050);
2153 expectedHol.emplace_back(args: 6, args: June, args: 2050);
2154 expectedHol.emplace_back(args: 15, args: August, args: 2050);
2155 expectedHol.emplace_back(args: 29, args: September, args: 2050);
2156 expectedHol.emplace_back(args: 30, args: September, args: 2050);
2157 // expectedHol.emplace_back(1, October, 2050); // Saturday
2158 expectedHol.emplace_back(args: 3, args: October, args: 2050);
2159 expectedHol.emplace_back(args: 10, args: October, args: 2050);
2160 expectedHol.emplace_back(args: 26, args: December, args: 2050);
2161
2162 Calendar c = SouthKorea(SouthKorea::Settlement);
2163 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2004), to: Date(31, December, 2050));
2164
2165 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
2166 if (hol[i] != expectedHol[i])
2167 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
2168 << hol[i]);
2169 }
2170 if (hol.size() != expectedHol.size())
2171 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
2172 << hol.size() << " calculated holidays");
2173}
2174
2175void CalendarTest::testKoreaStockExchange() {
2176 BOOST_TEST_MESSAGE("Testing Korea Stock Exchange holiday list...");
2177
2178 std::vector<Date> expectedHol;
2179 expectedHol.emplace_back(args: 1, args: January, args: 2004);
2180 expectedHol.emplace_back(args: 21, args: January, args: 2004);
2181 expectedHol.emplace_back(args: 22, args: January, args: 2004);
2182 expectedHol.emplace_back(args: 23, args: January, args: 2004);
2183 expectedHol.emplace_back(args: 1, args: March, args: 2004);
2184 expectedHol.emplace_back(args: 5, args: April, args: 2004);
2185 expectedHol.emplace_back(args: 15, args: April, args: 2004); // election day
2186 // expectedHol.push_back(Date(1,May,2004)); // Saturday
2187 expectedHol.emplace_back(args: 5, args: May, args: 2004);
2188 expectedHol.emplace_back(args: 26, args: May, args: 2004);
2189 // expectedHol.push_back(Date(6,June,2004)); // Sunday
2190 // expectedHol.push_back(Date(17,July,2004)); // Saturday
2191 // expectedHol.push_back(Date(15,August,2004)); // Sunday
2192 expectedHol.emplace_back(args: 27, args: September, args: 2004);
2193 expectedHol.emplace_back(args: 28, args: September, args: 2004);
2194 expectedHol.emplace_back(args: 29, args: September, args: 2004);
2195 // expectedHol.push_back(Date(3,October,2004)); // Sunday
2196 // expectedHol.push_back(Date(25,December,2004)); // Saturday
2197 expectedHol.emplace_back(args: 31, args: December, args: 2004);
2198
2199 // expectedHol.push_back(Date(1,January,2005)); // Saturday
2200 expectedHol.emplace_back(args: 8, args: February, args: 2005);
2201 expectedHol.emplace_back(args: 9, args: February, args: 2005);
2202 expectedHol.emplace_back(args: 10, args: February, args: 2005);
2203 expectedHol.emplace_back(args: 1, args: March, args: 2005);
2204 expectedHol.emplace_back(args: 5, args: April, args: 2005);
2205 expectedHol.emplace_back(args: 5, args: May, args: 2005);
2206 // expectedHol.push_back(Date(15,May,2005)); // Sunday
2207 expectedHol.emplace_back(args: 6, args: June, args: 2005);
2208 // expectedHol.push_back(Date(17,July,2005)); // Sunday
2209 expectedHol.emplace_back(args: 15, args: August, args: 2005);
2210 // expectedHol.push_back(Date(17,September,2005)); // Saturday
2211 // expectedHol.push_back(Date(18,September,2005)); // Sunday
2212 expectedHol.emplace_back(args: 19, args: September, args: 2005);
2213 expectedHol.emplace_back(args: 3, args: October, args: 2005);
2214 // expectedHol.push_back(Date(25,December,2005)); // Sunday
2215 expectedHol.emplace_back(args: 30, args: December, args: 2005);
2216
2217 // expectedHol.push_back(Date(1,January,2006)); // Sunday
2218 // expectedHol.push_back(Date(28,January,2006)); // Saturday
2219 // expectedHol.push_back(Date(29,January,2006)); // Sunday
2220 expectedHol.emplace_back(args: 30, args: January, args: 2006);
2221 expectedHol.emplace_back(args: 1, args: March, args: 2006);
2222 expectedHol.emplace_back(args: 1, args: May, args: 2006);
2223 expectedHol.emplace_back(args: 5, args: May, args: 2006);
2224 expectedHol.emplace_back(args: 31, args: May, args: 2006); // election
2225 expectedHol.emplace_back(args: 6, args: June, args: 2006);
2226 expectedHol.emplace_back(args: 17, args: July, args: 2006);
2227 expectedHol.emplace_back(args: 15, args: August, args: 2006);
2228 expectedHol.emplace_back(args: 3, args: October, args: 2006);
2229 expectedHol.emplace_back(args: 5, args: October, args: 2006);
2230 expectedHol.emplace_back(args: 6, args: October, args: 2006);
2231 // expectedHol.push_back(Date(7,October,2006)); // Saturday
2232 expectedHol.emplace_back(args: 25, args: December, args: 2006);
2233 expectedHol.emplace_back(args: 29, args: December, args: 2006);
2234
2235 expectedHol.emplace_back(args: 1, args: January, args: 2007);
2236 // expectedHol.push_back(Date(17,February,2007)); // Saturday
2237 // expectedHol.push_back(Date(18,February,2007)); // Sunday
2238 expectedHol.emplace_back(args: 19, args: February, args: 2007);
2239 expectedHol.emplace_back(args: 1, args: March, args: 2007);
2240 expectedHol.emplace_back(args: 1, args: May, args: 2007);
2241 // expectedHol.push_back(Date(5,May,2007)); // Saturday
2242 expectedHol.emplace_back(args: 24, args: May, args: 2007);
2243 expectedHol.emplace_back(args: 6, args: June, args: 2007);
2244 expectedHol.emplace_back(args: 17, args: July, args: 2007);
2245 expectedHol.emplace_back(args: 15, args: August, args: 2007);
2246 expectedHol.emplace_back(args: 24, args: September, args: 2007);
2247 expectedHol.emplace_back(args: 25, args: September, args: 2007);
2248 expectedHol.emplace_back(args: 26, args: September, args: 2007);
2249 expectedHol.emplace_back(args: 3, args: October, args: 2007);
2250 expectedHol.emplace_back(args: 19, args: December, args: 2007); // election
2251 expectedHol.emplace_back(args: 25, args: December, args: 2007);
2252 expectedHol.emplace_back(args: 31, args: December, args: 2007);
2253 expectedHol.emplace_back(args: 1, args: January, args: 2008);
2254 expectedHol.emplace_back(args: 6, args: February, args: 2008);
2255 expectedHol.emplace_back(args: 7, args: February, args: 2008);
2256 expectedHol.emplace_back(args: 8, args: February, args: 2008);
2257 expectedHol.emplace_back(args: 9, args: April, args: 2008);
2258 expectedHol.emplace_back(args: 1, args: May, args: 2008);
2259 expectedHol.emplace_back(args: 5, args: May, args: 2008);
2260 expectedHol.emplace_back(args: 12, args: May, args: 2008);
2261 expectedHol.emplace_back(args: 6, args: June, args: 2008);
2262 expectedHol.emplace_back(args: 15, args: August, args: 2008);
2263 expectedHol.emplace_back(args: 15, args: September, args: 2008);
2264 expectedHol.emplace_back(args: 3, args: October, args: 2008);
2265 expectedHol.emplace_back(args: 25, args: December, args: 2008);
2266 expectedHol.emplace_back(args: 31, args: December, args: 2008);
2267 expectedHol.emplace_back(args: 1, args: January, args: 2009);
2268 expectedHol.emplace_back(args: 26, args: January, args: 2009);
2269 expectedHol.emplace_back(args: 27, args: January, args: 2009);
2270 expectedHol.emplace_back(args: 1, args: May, args: 2009);
2271 expectedHol.emplace_back(args: 5, args: May, args: 2009);
2272 expectedHol.emplace_back(args: 2, args: October, args: 2009);
2273 expectedHol.emplace_back(args: 25, args: December, args: 2009);
2274 expectedHol.emplace_back(args: 31, args: December, args: 2009);
2275 expectedHol.emplace_back(args: 1, args: January, args: 2010);
2276 expectedHol.emplace_back(args: 15, args: February, args: 2010);
2277 expectedHol.emplace_back(args: 1, args: March, args: 2010);
2278 expectedHol.emplace_back(args: 5, args: May, args: 2010);
2279 expectedHol.emplace_back(args: 21, args: May, args: 2010);
2280 expectedHol.emplace_back(args: 2, args: June, args: 2010);
2281 expectedHol.emplace_back(args: 21, args: September, args: 2010);
2282 expectedHol.emplace_back(args: 22, args: September, args: 2010);
2283 expectedHol.emplace_back(args: 23, args: September, args: 2010);
2284 expectedHol.emplace_back(args: 31, args: December, args: 2010);
2285 expectedHol.emplace_back(args: 2, args: February, args: 2011);
2286 expectedHol.emplace_back(args: 3, args: February, args: 2011);
2287 expectedHol.emplace_back(args: 4, args: February, args: 2011);
2288 expectedHol.emplace_back(args: 1, args: March, args: 2011);
2289 expectedHol.emplace_back(args: 5, args: May, args: 2011);
2290 expectedHol.emplace_back(args: 10, args: May, args: 2011);
2291 expectedHol.emplace_back(args: 6, args: June, args: 2011);
2292 expectedHol.emplace_back(args: 15, args: August, args: 2011);
2293 expectedHol.emplace_back(args: 12, args: September, args: 2011);
2294 expectedHol.emplace_back(args: 13, args: September, args: 2011);
2295 expectedHol.emplace_back(args: 3, args: October, args: 2011);
2296 expectedHol.emplace_back(args: 30, args: December, args: 2011);
2297 expectedHol.emplace_back(args: 23, args: January, args: 2012);
2298 expectedHol.emplace_back(args: 24, args: January, args: 2012);
2299 expectedHol.emplace_back(args: 1, args: March, args: 2012);
2300 expectedHol.emplace_back(args: 11, args: April, args: 2012);
2301 expectedHol.emplace_back(args: 1, args: May, args: 2012);
2302 expectedHol.emplace_back(args: 28, args: May, args: 2012);
2303 expectedHol.emplace_back(args: 6, args: June, args: 2012);
2304 expectedHol.emplace_back(args: 15, args: August, args: 2012);
2305 expectedHol.emplace_back(args: 1, args: October, args: 2012);
2306 expectedHol.emplace_back(args: 3, args: October, args: 2012);
2307 expectedHol.emplace_back(args: 19, args: December, args: 2012);
2308 expectedHol.emplace_back(args: 25, args: December, args: 2012);
2309 expectedHol.emplace_back(args: 31, args: December, args: 2012);
2310 expectedHol.emplace_back(args: 1, args: January, args: 2013);
2311 expectedHol.emplace_back(args: 11, args: February, args: 2013);
2312 expectedHol.emplace_back(args: 1, args: March, args: 2013);
2313 expectedHol.emplace_back(args: 1, args: May, args: 2013);
2314 expectedHol.emplace_back(args: 17, args: May, args: 2013);
2315 expectedHol.emplace_back(args: 6, args: June, args: 2013);
2316 expectedHol.emplace_back(args: 15, args: August, args: 2013);
2317 expectedHol.emplace_back(args: 18, args: September, args: 2013);
2318 expectedHol.emplace_back(args: 19, args: September, args: 2013);
2319 expectedHol.emplace_back(args: 20, args: September, args: 2013);
2320 expectedHol.emplace_back(args: 3, args: October, args: 2013);
2321 expectedHol.emplace_back(args: 9, args: October, args: 2013);
2322 expectedHol.emplace_back(args: 25, args: December, args: 2013);
2323 expectedHol.emplace_back(args: 31, args: December, args: 2013);
2324 expectedHol.emplace_back(args: 1, args: January, args: 2014);
2325 expectedHol.emplace_back(args: 30, args: January, args: 2014);
2326 expectedHol.emplace_back(args: 31, args: January, args: 2014);
2327 expectedHol.emplace_back(args: 1, args: May, args: 2014);
2328 expectedHol.emplace_back(args: 5, args: May, args: 2014);
2329 expectedHol.emplace_back(args: 6, args: May, args: 2014);
2330 expectedHol.emplace_back(args: 4, args: June, args: 2014);
2331 expectedHol.emplace_back(args: 6, args: June, args: 2014);
2332 expectedHol.emplace_back(args: 15, args: August, args: 2014);
2333 expectedHol.emplace_back(args: 8, args: September, args: 2014);
2334 expectedHol.emplace_back(args: 9, args: September, args: 2014);
2335 expectedHol.emplace_back(args: 10, args: September, args: 2014);
2336 expectedHol.emplace_back(args: 3, args: October, args: 2014);
2337 expectedHol.emplace_back(args: 9, args: October, args: 2014);
2338 expectedHol.emplace_back(args: 25, args: December, args: 2014);
2339 expectedHol.emplace_back(args: 31, args: December, args: 2014);
2340 expectedHol.emplace_back(args: 1, args: January, args: 2015);
2341 expectedHol.emplace_back(args: 18, args: February, args: 2015);
2342 expectedHol.emplace_back(args: 19, args: February, args: 2015);
2343 expectedHol.emplace_back(args: 20, args: February, args: 2015);
2344 expectedHol.emplace_back(args: 1, args: May, args: 2015);
2345 expectedHol.emplace_back(args: 5, args: May, args: 2015);
2346 expectedHol.emplace_back(args: 25, args: May, args: 2015);
2347 expectedHol.emplace_back(args: 14, args: August, args: 2015);
2348 expectedHol.emplace_back(args: 28, args: September, args: 2015);
2349 expectedHol.emplace_back(args: 29, args: September, args: 2015);
2350 expectedHol.emplace_back(args: 9, args: October, args: 2015);
2351 expectedHol.emplace_back(args: 25, args: December, args: 2015);
2352 expectedHol.emplace_back(args: 31, args: December, args: 2015);
2353 expectedHol.emplace_back(args: 1, args: January, args: 2016);
2354 expectedHol.emplace_back(args: 8, args: February, args: 2016);
2355 expectedHol.emplace_back(args: 9, args: February, args: 2016);
2356 expectedHol.emplace_back(args: 10, args: February, args: 2016);
2357 expectedHol.emplace_back(args: 1, args: March, args: 2016);
2358 expectedHol.emplace_back(args: 13, args: April, args: 2016);
2359 expectedHol.emplace_back(args: 5, args: May, args: 2016);
2360 expectedHol.emplace_back(args: 6, args: May, args: 2016);
2361 expectedHol.emplace_back(args: 6, args: June, args: 2016);
2362 expectedHol.emplace_back(args: 15, args: August, args: 2016);
2363 expectedHol.emplace_back(args: 14, args: September, args: 2016);
2364 expectedHol.emplace_back(args: 15, args: September, args: 2016);
2365 expectedHol.emplace_back(args: 16, args: September, args: 2016);
2366 expectedHol.emplace_back(args: 3, args: October, args: 2016);
2367 expectedHol.emplace_back(args: 30, args: December, args: 2016);
2368 expectedHol.emplace_back(args: 27, args: January, args: 2017);
2369 expectedHol.emplace_back(args: 30, args: January, args: 2017);
2370 expectedHol.emplace_back(args: 1, args: March, args: 2017);
2371 expectedHol.emplace_back(args: 1, args: May, args: 2017);
2372 expectedHol.emplace_back(args: 3, args: May, args: 2017);
2373 expectedHol.emplace_back(args: 5, args: May, args: 2017);
2374 expectedHol.emplace_back(args: 9, args: May, args: 2017);
2375 expectedHol.emplace_back(args: 6, args: June, args: 2017);
2376 expectedHol.emplace_back(args: 15, args: August, args: 2017);
2377 expectedHol.emplace_back(args: 2, args: October, args: 2017);
2378 expectedHol.emplace_back(args: 3, args: October, args: 2017);
2379 expectedHol.emplace_back(args: 4, args: October, args: 2017);
2380 expectedHol.emplace_back(args: 5, args: October, args: 2017);
2381 expectedHol.emplace_back(args: 6, args: October, args: 2017);
2382 expectedHol.emplace_back(args: 9, args: October, args: 2017);
2383 expectedHol.emplace_back(args: 25, args: December, args: 2017);
2384 expectedHol.emplace_back(args: 29, args: December, args: 2017);
2385 expectedHol.emplace_back(args: 1, args: January, args: 2018);
2386 expectedHol.emplace_back(args: 15, args: February, args: 2018);
2387 expectedHol.emplace_back(args: 16, args: February, args: 2018);
2388 expectedHol.emplace_back(args: 1, args: March, args: 2018);
2389 expectedHol.emplace_back(args: 1, args: May, args: 2018);
2390 expectedHol.emplace_back(args: 7, args: May, args: 2018);
2391 expectedHol.emplace_back(args: 22, args: May, args: 2018);
2392 expectedHol.emplace_back(args: 6, args: June, args: 2018);
2393 expectedHol.emplace_back(args: 13, args: June, args: 2018);
2394 expectedHol.emplace_back(args: 15, args: August, args: 2018);
2395 expectedHol.emplace_back(args: 24, args: September, args: 2018);
2396 expectedHol.emplace_back(args: 25, args: September, args: 2018);
2397 expectedHol.emplace_back(args: 26, args: September, args: 2018);
2398 expectedHol.emplace_back(args: 3, args: October, args: 2018);
2399 expectedHol.emplace_back(args: 9, args: October, args: 2018);
2400 expectedHol.emplace_back(args: 25, args: December, args: 2018);
2401 expectedHol.emplace_back(args: 31, args: December, args: 2018);
2402 expectedHol.emplace_back(args: 1, args: January, args: 2019);
2403 expectedHol.emplace_back(args: 4, args: February, args: 2019);
2404 expectedHol.emplace_back(args: 5, args: February, args: 2019);
2405 expectedHol.emplace_back(args: 6, args: February, args: 2019);
2406 expectedHol.emplace_back(args: 1, args: March, args: 2019);
2407 expectedHol.emplace_back(args: 1, args: May, args: 2019);
2408 expectedHol.emplace_back(args: 6, args: May, args: 2019);
2409 expectedHol.emplace_back(args: 6, args: June, args: 2019);
2410 expectedHol.emplace_back(args: 15, args: August, args: 2019);
2411 expectedHol.emplace_back(args: 12, args: September, args: 2019);
2412 expectedHol.emplace_back(args: 13, args: September, args: 2019);
2413 expectedHol.emplace_back(args: 3, args: October, args: 2019);
2414 expectedHol.emplace_back(args: 9, args: October, args: 2019);
2415 expectedHol.emplace_back(args: 25, args: December, args: 2019);
2416 expectedHol.emplace_back(args: 31, args: December, args: 2019);
2417 expectedHol.emplace_back(args: 1, args: January, args: 2020);
2418 expectedHol.emplace_back(args: 24, args: January, args: 2020);
2419 expectedHol.emplace_back(args: 27, args: January, args: 2020);
2420 expectedHol.emplace_back(args: 15, args: April, args: 2020);
2421 expectedHol.emplace_back(args: 30, args: April, args: 2020);
2422 expectedHol.emplace_back(args: 1, args: May, args: 2020);
2423 expectedHol.emplace_back(args: 5, args: May, args: 2020);
2424 expectedHol.emplace_back(args: 17, args: August, args: 2020);
2425 expectedHol.emplace_back(args: 30, args: September, args: 2020);
2426 expectedHol.emplace_back(args: 1, args: October, args: 2020);
2427 expectedHol.emplace_back(args: 2, args: October, args: 2020);
2428 expectedHol.emplace_back(args: 9, args: October, args: 2020);
2429 expectedHol.emplace_back(args: 25, args: December, args: 2020);
2430 expectedHol.emplace_back(args: 31, args: December, args: 2020);
2431 expectedHol.emplace_back(args: 1, args: January, args: 2021);
2432 expectedHol.emplace_back(args: 11, args: February, args: 2021);
2433 expectedHol.emplace_back(args: 12, args: February, args: 2021);
2434 expectedHol.emplace_back(args: 1, args: March, args: 2021);
2435 expectedHol.emplace_back(args: 5, args: May, args: 2021);
2436 expectedHol.emplace_back(args: 19, args: May, args: 2021);
2437 expectedHol.emplace_back(args: 16, args: August, args: 2021);
2438 expectedHol.emplace_back(args: 20, args: September, args: 2021);
2439 expectedHol.emplace_back(args: 21, args: September, args: 2021);
2440 expectedHol.emplace_back(args: 22, args: September, args: 2021);
2441 expectedHol.emplace_back( args: 4, args: October, args: 2021);
2442 expectedHol.emplace_back(args: 11, args: October, args: 2021);
2443 expectedHol.emplace_back(args: 31, args: December, args: 2021);
2444 expectedHol.emplace_back(args: 31, args: January, args: 2022);
2445 expectedHol.emplace_back(args: 1, args: February, args: 2022);
2446 expectedHol.emplace_back(args: 2, args: February, args: 2022);
2447 expectedHol.emplace_back(args: 1, args: March, args: 2022);
2448 expectedHol.emplace_back(args: 9, args: March, args: 2022);
2449 expectedHol.emplace_back(args: 5, args: May, args: 2022);
2450 expectedHol.emplace_back(args: 1, args: June, args: 2022);
2451 expectedHol.emplace_back(args: 6, args: June, args: 2022);
2452 expectedHol.emplace_back(args: 15, args: August, args: 2022);
2453 expectedHol.emplace_back(args: 9, args: September, args: 2022);
2454 expectedHol.emplace_back(args: 12, args: September, args: 2022);
2455 expectedHol.emplace_back(args: 3, args: October, args: 2022);
2456 expectedHol.emplace_back(args: 10, args: October, args: 2022);
2457 expectedHol.emplace_back(args: 30, args: December, args: 2022);
2458 // expectedHol.emplace_back(1, January, 2023); // Sunday
2459 // expectedHol.emplace_back(21, January, 2023); // Saturday
2460 expectedHol.emplace_back(args: 23, args: January, args: 2023);
2461 expectedHol.emplace_back(args: 24, args: January, args: 2023);
2462 expectedHol.emplace_back(args: 1, args: March, args: 2023);
2463 expectedHol.emplace_back(args: 1, args: May, args: 2023);
2464 expectedHol.emplace_back(args: 5, args: May, args: 2023);
2465 expectedHol.emplace_back(args: 29, args: May, args: 2023);
2466 expectedHol.emplace_back(args: 6, args: June, args: 2023);
2467 expectedHol.emplace_back(args: 15, args: August, args: 2023);
2468 expectedHol.emplace_back(args: 28, args: September, args: 2023);
2469 expectedHol.emplace_back(args: 29, args: September, args: 2023);
2470 // expectedHol.emplace_back(30, September, 2023); // Saturday
2471 expectedHol.emplace_back(args: 2, args: October, args: 2023);
2472 expectedHol.emplace_back(args: 3, args: October, args: 2023);
2473 expectedHol.emplace_back(args: 9, args: October, args: 2023);
2474 expectedHol.emplace_back(args: 25, args: December, args: 2023);
2475 expectedHol.emplace_back(args: 29, args: December, args: 2023);
2476 expectedHol.emplace_back(args: 1, args: January, args: 2024);
2477 expectedHol.emplace_back(args: 9, args: February, args: 2024);
2478 // expectedHol.emplace_back(10, February, 2024); // Saturday
2479 expectedHol.emplace_back(args: 12, args: February, args: 2024);
2480 expectedHol.emplace_back(args: 1, args: March, args: 2024);
2481 expectedHol.emplace_back(args: 10, args: April, args: 2024);
2482 expectedHol.emplace_back(args: 1, args: May, args: 2024);
2483 expectedHol.emplace_back(args: 6, args: May, args: 2024);
2484 expectedHol.emplace_back(args: 15, args: May, args: 2024);
2485 expectedHol.emplace_back(args: 6, args: June, args: 2024);
2486 expectedHol.emplace_back(args: 15, args: August, args: 2024);
2487 expectedHol.emplace_back(args: 16, args: September, args: 2024);
2488 expectedHol.emplace_back(args: 17, args: September, args: 2024);
2489 expectedHol.emplace_back(args: 18, args: September, args: 2024);
2490 expectedHol.emplace_back(args: 3, args: October, args: 2024);
2491 expectedHol.emplace_back(args: 9, args: October, args: 2024);
2492 expectedHol.emplace_back(args: 25, args: December, args: 2024);
2493 expectedHol.emplace_back(args: 31, args: December, args: 2024);
2494 expectedHol.emplace_back(args: 1, args: January, args: 2025);
2495 expectedHol.emplace_back(args: 28, args: January, args: 2025);
2496 expectedHol.emplace_back(args: 29, args: January, args: 2025);
2497 expectedHol.emplace_back(args: 30, args: January, args: 2025);
2498 expectedHol.emplace_back(args: 3, args: March, args: 2025);
2499 expectedHol.emplace_back(args: 1, args: May, args: 2025);
2500 expectedHol.emplace_back(args: 5, args: May, args: 2025);
2501 expectedHol.emplace_back(args: 6, args: May, args: 2025);
2502 expectedHol.emplace_back(args: 6, args: June, args: 2025);
2503 expectedHol.emplace_back(args: 15, args: August, args: 2025);
2504 expectedHol.emplace_back(args: 3, args: October, args: 2025);
2505 expectedHol.emplace_back(args: 6, args: October, args: 2025);
2506 expectedHol.emplace_back(args: 7, args: October, args: 2025);
2507 expectedHol.emplace_back(args: 8, args: October, args: 2025);
2508 expectedHol.emplace_back(args: 9, args: October, args: 2025);
2509 expectedHol.emplace_back(args: 25, args: December, args: 2025);
2510 expectedHol.emplace_back(args: 31, args: December, args: 2025);
2511 expectedHol.emplace_back(args: 1, args: January, args: 2026);
2512 expectedHol.emplace_back(args: 16, args: February, args: 2026);
2513 expectedHol.emplace_back(args: 17, args: February, args: 2026);
2514 expectedHol.emplace_back(args: 18, args: February, args: 2026);
2515 expectedHol.emplace_back(args: 2, args: March, args: 2026);
2516 expectedHol.emplace_back(args: 1, args: May, args: 2026);
2517 expectedHol.emplace_back(args: 5, args: May, args: 2026);
2518 expectedHol.emplace_back(args: 25, args: May, args: 2026);
2519 // expectedHol.emplace_back(6, June, 2026); // Saturday
2520 expectedHol.emplace_back(args: 17, args: August, args: 2026);
2521 expectedHol.emplace_back(args: 24, args: September, args: 2026);
2522 expectedHol.emplace_back(args: 25, args: September, args: 2026);
2523 // expectedHol.emplace_back(26, September, 2026); // Saturday
2524 expectedHol.emplace_back(args: 5, args: October, args: 2026);
2525 expectedHol.emplace_back(args: 9, args: October, args: 2026);
2526 expectedHol.emplace_back(args: 25, args: December, args: 2026);
2527 expectedHol.emplace_back(args: 31, args: December, args: 2026);
2528 expectedHol.emplace_back(args: 1, args: January, args: 2027);
2529 // expectedHol.emplace_back(6, February, 2027); // Saturday
2530 expectedHol.emplace_back(args: 8, args: February, args: 2027);
2531 expectedHol.emplace_back(args: 9, args: February, args: 2027);
2532 expectedHol.emplace_back(args: 1, args: March, args: 2027);
2533 // expectedHol.emplace_back(1, May, 2027); // Saturday
2534 expectedHol.emplace_back(args: 5, args: May, args: 2027);
2535 expectedHol.emplace_back(args: 13, args: May, args: 2027);
2536 // expectedHol.emplace_back(6, June, 2027); // Sunday
2537 expectedHol.emplace_back(args: 16, args: August, args: 2027);
2538 expectedHol.emplace_back(args: 14, args: September, args: 2027);
2539 expectedHol.emplace_back(args: 15, args: September, args: 2027);
2540 expectedHol.emplace_back(args: 16, args: September, args: 2027);
2541 expectedHol.emplace_back(args: 4, args: October, args: 2027);
2542 expectedHol.emplace_back(args: 11, args: October, args: 2027);
2543 expectedHol.emplace_back(args: 27, args: December, args: 2027);
2544 expectedHol.emplace_back(args: 31, args: December, args: 2027);
2545 // expectedHol.emplace_back(1, January, 2028); // Saturday
2546 expectedHol.emplace_back(args: 26, args: January, args: 2028);
2547 expectedHol.emplace_back(args: 27, args: January, args: 2028);
2548 expectedHol.emplace_back(args: 28, args: January, args: 2028);
2549 expectedHol.emplace_back(args: 1, args: March, args: 2028);
2550 expectedHol.emplace_back(args: 1, args: May, args: 2028);
2551 expectedHol.emplace_back(args: 2, args: May, args: 2028);
2552 expectedHol.emplace_back(args: 5, args: May, args: 2028);
2553 expectedHol.emplace_back(args: 6, args: June, args: 2028);
2554 expectedHol.emplace_back(args: 15, args: August, args: 2028);
2555 expectedHol.emplace_back(args: 2, args: October, args: 2028);
2556 expectedHol.emplace_back(args: 3, args: October, args: 2028);
2557 expectedHol.emplace_back(args: 4, args: October, args: 2028);
2558 expectedHol.emplace_back(args: 5, args: October, args: 2028);
2559 expectedHol.emplace_back(args: 9, args: October, args: 2028);
2560 expectedHol.emplace_back(args: 25, args: December, args: 2028);
2561 expectedHol.emplace_back(args: 29, args: December, args: 2028);
2562 expectedHol.emplace_back(args: 1, args: January, args: 2029);
2563 expectedHol.emplace_back(args: 12, args: February, args: 2029);
2564 expectedHol.emplace_back(args: 13, args: February, args: 2029);
2565 expectedHol.emplace_back(args: 14, args: February, args: 2029);
2566 expectedHol.emplace_back(args: 1, args: March, args: 2029);
2567 expectedHol.emplace_back(args: 1, args: May, args: 2029);
2568 expectedHol.emplace_back(args: 7, args: May, args: 2029);
2569 expectedHol.emplace_back(args: 21, args: May, args: 2029);
2570 expectedHol.emplace_back(args: 6, args: June, args: 2029);
2571 expectedHol.emplace_back(args: 15, args: August, args: 2029);
2572 expectedHol.emplace_back(args: 21, args: September, args: 2029);
2573 // expectedHol.emplace_back(22, September, 2029); // Saturday
2574 expectedHol.emplace_back(args: 24, args: September, args: 2029);
2575 expectedHol.emplace_back(args: 3, args: October, args: 2029);
2576 expectedHol.emplace_back(args: 9, args: October, args: 2029);
2577 expectedHol.emplace_back(args: 25, args: December, args: 2029);
2578 expectedHol.emplace_back(args: 31, args: December, args: 2029);
2579 expectedHol.emplace_back(args: 1, args: January, args: 2030);
2580 // expectedHol.emplace_back(2, February, 2030); // Saturday
2581 expectedHol.emplace_back(args: 4, args: February, args: 2030);
2582 expectedHol.emplace_back(args: 5, args: February, args: 2030);
2583 expectedHol.emplace_back(args: 1, args: March, args: 2030);
2584 expectedHol.emplace_back(args: 1, args: May, args: 2030);
2585 expectedHol.emplace_back(args: 6, args: May, args: 2030);
2586 expectedHol.emplace_back(args: 9, args: May, args: 2030);
2587 expectedHol.emplace_back(args: 6, args: June, args: 2030);
2588 expectedHol.emplace_back(args: 15, args: August, args: 2030);
2589 expectedHol.emplace_back(args: 11, args: September, args: 2030);
2590 expectedHol.emplace_back(args: 12, args: September, args: 2030);
2591 expectedHol.emplace_back(args: 13, args: September, args: 2030);
2592 expectedHol.emplace_back(args: 3, args: October, args: 2030);
2593 expectedHol.emplace_back(args: 9, args: October, args: 2030);
2594 expectedHol.emplace_back(args: 25, args: December, args: 2030);
2595 expectedHol.emplace_back(args: 31, args: December, args: 2030);
2596 expectedHol.emplace_back(args: 1, args: January, args: 2031);
2597 expectedHol.emplace_back(args: 22, args: January, args: 2031);
2598 expectedHol.emplace_back(args: 23, args: January, args: 2031);
2599 expectedHol.emplace_back(args: 24, args: January, args: 2031);
2600 expectedHol.emplace_back(args: 3, args: March, args: 2031);
2601 expectedHol.emplace_back(args: 1, args: May, args: 2031);
2602 expectedHol.emplace_back(args: 5, args: May, args: 2031);
2603 expectedHol.emplace_back(args: 28, args: May, args: 2031);
2604 expectedHol.emplace_back(args: 6, args: June, args: 2031);
2605 expectedHol.emplace_back(args: 15, args: August, args: 2031);
2606 expectedHol.emplace_back(args: 30, args: September, args: 2031);
2607 expectedHol.emplace_back(args: 1, args: October, args: 2031);
2608 expectedHol.emplace_back(args: 2, args: October, args: 2031);
2609 expectedHol.emplace_back(args: 3, args: October, args: 2031);
2610 expectedHol.emplace_back(args: 9, args: October, args: 2031);
2611 expectedHol.emplace_back(args: 25, args: December, args: 2031);
2612 expectedHol.emplace_back(args: 31, args: December, args: 2031);
2613 expectedHol.emplace_back(args: 1, args: January, args: 2032);
2614 expectedHol.emplace_back(args: 10, args: February, args: 2032);
2615 expectedHol.emplace_back(args: 11, args: February, args: 2032);
2616 expectedHol.emplace_back(args: 12, args: February, args: 2032);
2617 expectedHol.emplace_back(args: 1, args: March, args: 2032);
2618 // expectedHol.emplace_back(1, May, 2032); // Saturday
2619 expectedHol.emplace_back(args: 5, args: May, args: 2032);
2620 expectedHol.emplace_back(args: 17, args: May, args: 2032);
2621 // expectedHol.emplace_back(6, June, 2032); // Sunday
2622 expectedHol.emplace_back(args: 16, args: August, args: 2032);
2623 // expectedHol.emplace_back(18, September, 2032); // Saturday
2624 expectedHol.emplace_back(args: 20, args: September, args: 2032);
2625 expectedHol.emplace_back(args: 21, args: September, args: 2032);
2626 expectedHol.emplace_back(args: 4, args: October, args: 2032);
2627 expectedHol.emplace_back(args: 11, args: October, args: 2032);
2628 expectedHol.emplace_back(args: 27, args: December, args: 2032);
2629 expectedHol.emplace_back(args: 31, args: December, args: 2032);
2630 // expectedHol.emplace_back(1, January, 2033); // Saturday
2631 expectedHol.emplace_back(args: 31, args: January, args: 2033);
2632 expectedHol.emplace_back(args: 1, args: February, args: 2033);
2633 expectedHol.emplace_back(args: 2, args: February, args: 2033);
2634 expectedHol.emplace_back(args: 1, args: March, args: 2033);
2635 // expectedHol.emplace_back(1, May, 2033); // Sunday
2636 expectedHol.emplace_back(args: 5, args: May, args: 2033);
2637 expectedHol.emplace_back(args: 6, args: May, args: 2033);
2638 expectedHol.emplace_back(args: 6, args: June, args: 2033);
2639 expectedHol.emplace_back(args: 15, args: August, args: 2033);
2640 expectedHol.emplace_back(args: 7, args: September, args: 2033);
2641 expectedHol.emplace_back(args: 8, args: September, args: 2033);
2642 expectedHol.emplace_back(args: 9, args: September, args: 2033);
2643 expectedHol.emplace_back(args: 3, args: October, args: 2033);
2644 expectedHol.emplace_back(args: 10, args: October, args: 2033);
2645 expectedHol.emplace_back(args: 26, args: December, args: 2033);
2646 expectedHol.emplace_back(args: 30, args: December, args: 2033);
2647 // expectedHol.emplace_back(1, January, 2034); // Sunday
2648 // expectedHol.emplace_back(18, February, 2034); // Saturday
2649 expectedHol.emplace_back(args: 20, args: February, args: 2034);
2650 expectedHol.emplace_back(args: 21, args: February, args: 2034);
2651 expectedHol.emplace_back(args: 1, args: March, args: 2034);
2652 expectedHol.emplace_back(args: 1, args: May, args: 2034);
2653 expectedHol.emplace_back(args: 5, args: May, args: 2034);
2654 expectedHol.emplace_back(args: 25, args: May, args: 2034);
2655 expectedHol.emplace_back(args: 6, args: June, args: 2034);
2656 expectedHol.emplace_back(args: 15, args: August, args: 2034);
2657 expectedHol.emplace_back(args: 26, args: September, args: 2034);
2658 expectedHol.emplace_back(args: 27, args: September, args: 2034);
2659 expectedHol.emplace_back(args: 28, args: September, args: 2034);
2660 expectedHol.emplace_back(args: 3, args: October, args: 2034);
2661 expectedHol.emplace_back(args: 9, args: October, args: 2034);
2662 expectedHol.emplace_back(args: 25, args: December, args: 2034);
2663 expectedHol.emplace_back(args: 29, args: December, args: 2034);
2664 expectedHol.emplace_back(args: 1, args: January, args: 2035);
2665 expectedHol.emplace_back(args: 7, args: February, args: 2035);
2666 expectedHol.emplace_back(args: 8, args: February, args: 2035);
2667 expectedHol.emplace_back(args: 9, args: February, args: 2035);
2668 expectedHol.emplace_back(args: 1, args: March, args: 2035);
2669 expectedHol.emplace_back(args: 1, args: May, args: 2035);
2670 expectedHol.emplace_back(args: 7, args: May, args: 2035);
2671 expectedHol.emplace_back(args: 15, args: May, args: 2035);
2672 expectedHol.emplace_back(args: 6, args: June, args: 2035);
2673 expectedHol.emplace_back(args: 15, args: August, args: 2035);
2674 // expectedHol.emplace_back(15, September, 2035); // Saturday
2675 expectedHol.emplace_back(args: 17, args: September, args: 2035);
2676 expectedHol.emplace_back(args: 18, args: September, args: 2035);
2677 expectedHol.emplace_back(args: 3, args: October, args: 2035);
2678 expectedHol.emplace_back(args: 9, args: October, args: 2035);
2679 expectedHol.emplace_back(args: 25, args: December, args: 2035);
2680 expectedHol.emplace_back(args: 31, args: December, args: 2035);
2681 expectedHol.emplace_back(args: 1, args: January, args: 2036);
2682 expectedHol.emplace_back(args: 28, args: January, args: 2036);
2683 expectedHol.emplace_back(args: 29, args: January, args: 2036);
2684 expectedHol.emplace_back(args: 30, args: January, args: 2036);
2685 expectedHol.emplace_back(args: 3, args: March, args: 2036);
2686 expectedHol.emplace_back(args: 1, args: May, args: 2036);
2687 expectedHol.emplace_back(args: 5, args: May, args: 2036);
2688 expectedHol.emplace_back(args: 6, args: May, args: 2036);
2689 expectedHol.emplace_back(args: 6, args: June, args: 2036);
2690 expectedHol.emplace_back(args: 15, args: August, args: 2036);
2691 expectedHol.emplace_back(args: 3, args: October, args: 2036);
2692 // expectedHol.emplace_back(4, October, 2036); // Saturday
2693 expectedHol.emplace_back(args: 6, args: October, args: 2036);
2694 expectedHol.emplace_back(args: 7, args: October, args: 2036);
2695 expectedHol.emplace_back(args: 9, args: October, args: 2036);
2696 expectedHol.emplace_back(args: 25, args: December, args: 2036);
2697 expectedHol.emplace_back(args: 31, args: December, args: 2036);
2698 expectedHol.emplace_back(args: 1, args: January, args: 2037);
2699 // expectedHol.emplace_back(14, February, 2037); // Saturday
2700 expectedHol.emplace_back(args: 16, args: February, args: 2037);
2701 expectedHol.emplace_back(args: 17, args: February, args: 2037);
2702 expectedHol.emplace_back(args: 2, args: March, args: 2037);
2703 expectedHol.emplace_back(args: 1, args: May, args: 2037);
2704 expectedHol.emplace_back(args: 5, args: May, args: 2037);
2705 expectedHol.emplace_back(args: 22, args: May, args: 2037);
2706 // expectedHol.emplace_back(6, June, 2037); // Saturday
2707 expectedHol.emplace_back(args: 17, args: August, args: 2037);
2708 expectedHol.emplace_back(args: 23, args: September, args: 2037);
2709 expectedHol.emplace_back(args: 24, args: September, args: 2037);
2710 expectedHol.emplace_back(args: 25, args: September, args: 2037);
2711 expectedHol.emplace_back(args: 5, args: October, args: 2037);
2712 expectedHol.emplace_back(args: 9, args: October, args: 2037);
2713 expectedHol.emplace_back(args: 25, args: December, args: 2037);
2714 expectedHol.emplace_back(args: 31, args: December, args: 2037);
2715 expectedHol.emplace_back(args: 1, args: January, args: 2038);
2716 expectedHol.emplace_back(args: 3, args: February, args: 2038);
2717 expectedHol.emplace_back(args: 4, args: February, args: 2038);
2718 expectedHol.emplace_back(args: 5, args: February, args: 2038);
2719 expectedHol.emplace_back(args: 1, args: March, args: 2038);
2720 // expectedHol.emplace_back(1, May, 2038); // Saturday
2721 expectedHol.emplace_back(args: 5, args: May, args: 2038);
2722 expectedHol.emplace_back(args: 11, args: May, args: 2038);
2723 // expectedHol.emplace_back(6, June, 2038); // Sunday
2724 expectedHol.emplace_back(args: 16, args: August, args: 2038);
2725 expectedHol.emplace_back(args: 13, args: September, args: 2038);
2726 expectedHol.emplace_back(args: 14, args: September, args: 2038);
2727 expectedHol.emplace_back(args: 15, args: September, args: 2038);
2728 expectedHol.emplace_back(args: 4, args: October, args: 2038);
2729 expectedHol.emplace_back(args: 11, args: October, args: 2038);
2730 expectedHol.emplace_back(args: 27, args: December, args: 2038);
2731 expectedHol.emplace_back(args: 31, args: December, args: 2038);
2732 // expectedHol.emplace_back(1, January, 2039); // Saturday
2733 expectedHol.emplace_back(args: 24, args: January, args: 2039);
2734 expectedHol.emplace_back(args: 25, args: January, args: 2039);
2735 expectedHol.emplace_back(args: 26, args: January, args: 2039);
2736 expectedHol.emplace_back(args: 1, args: March, args: 2039);
2737 // expectedHol.emplace_back(1, May, 2039); // Sunday
2738 expectedHol.emplace_back(args: 2, args: May, args: 2039);
2739 expectedHol.emplace_back(args: 5, args: May, args: 2039);
2740 expectedHol.emplace_back(args: 6, args: June, args: 2039);
2741 expectedHol.emplace_back(args: 15, args: August, args: 2039);
2742 // expectedHol.emplace_back(1, October, 2039); // Saturday
2743 expectedHol.emplace_back(args: 3, args: October, args: 2039);
2744 expectedHol.emplace_back(args: 4, args: October, args: 2039);
2745 expectedHol.emplace_back(args: 5, args: October, args: 2039);
2746 expectedHol.emplace_back(args: 10, args: October, args: 2039);
2747 expectedHol.emplace_back(args: 26, args: December, args: 2039);
2748 expectedHol.emplace_back(args: 30, args: December, args: 2039);
2749 // expectedHol.emplace_back(1, January, 2040); // Sunday
2750 // expectedHol.emplace_back(11, February, 2040); // Saturday
2751 expectedHol.emplace_back(args: 13, args: February, args: 2040);
2752 expectedHol.emplace_back(args: 14, args: February, args: 2040);
2753 expectedHol.emplace_back(args: 1, args: March, args: 2040);
2754 expectedHol.emplace_back(args: 1, args: May, args: 2040);
2755 expectedHol.emplace_back(args: 7, args: May, args: 2040);
2756 expectedHol.emplace_back(args: 18, args: May, args: 2040);
2757 expectedHol.emplace_back(args: 6, args: June, args: 2040);
2758 expectedHol.emplace_back(args: 15, args: August, args: 2040);
2759 expectedHol.emplace_back(args: 20, args: September, args: 2040);
2760 expectedHol.emplace_back(args: 21, args: September, args: 2040);
2761 // expectedHol.emplace_back(22, September, 2040); // Saturday
2762 expectedHol.emplace_back(args: 3, args: October, args: 2040);
2763 expectedHol.emplace_back(args: 9, args: October, args: 2040);
2764 expectedHol.emplace_back(args: 25, args: December, args: 2040);
2765 expectedHol.emplace_back(args: 31, args: December, args: 2040);
2766 expectedHol.emplace_back(args: 1, args: January, args: 2041);
2767 expectedHol.emplace_back(args: 31, args: January, args: 2041);
2768 expectedHol.emplace_back(args: 1, args: February, args: 2041);
2769 // expectedHol.emplace_back(2, February, 2041); // Saturday
2770 expectedHol.emplace_back(args: 1, args: March, args: 2041);
2771 expectedHol.emplace_back(args: 1, args: May, args: 2041);
2772 expectedHol.emplace_back(args: 6, args: May, args: 2041);
2773 expectedHol.emplace_back(args: 7, args: May, args: 2041);
2774 expectedHol.emplace_back(args: 6, args: June, args: 2041);
2775 expectedHol.emplace_back(args: 15, args: August, args: 2041);
2776 expectedHol.emplace_back(args: 9, args: September, args: 2041);
2777 expectedHol.emplace_back(args: 10, args: September, args: 2041);
2778 expectedHol.emplace_back(args: 11, args: September, args: 2041);
2779 expectedHol.emplace_back(args: 3, args: October, args: 2041);
2780 expectedHol.emplace_back(args: 9, args: October, args: 2041);
2781 expectedHol.emplace_back(args: 25, args: December, args: 2041);
2782 expectedHol.emplace_back(args: 31, args: December, args: 2041);
2783 expectedHol.emplace_back(args: 1, args: January, args: 2042);
2784 expectedHol.emplace_back(args: 21, args: January, args: 2042);
2785 expectedHol.emplace_back(args: 22, args: January, args: 2042);
2786 expectedHol.emplace_back(args: 23, args: January, args: 2042);
2787 expectedHol.emplace_back(args: 3, args: March, args: 2042);
2788 expectedHol.emplace_back(args: 1, args: May, args: 2042);
2789 expectedHol.emplace_back(args: 5, args: May, args: 2042);
2790 expectedHol.emplace_back(args: 26, args: May, args: 2042);
2791 expectedHol.emplace_back(args: 6, args: June, args: 2042);
2792 expectedHol.emplace_back(args: 15, args: August, args: 2042);
2793 // expectedHol.emplace_back(27, September, 2042); // Saturday
2794 expectedHol.emplace_back(args: 29, args: September, args: 2042);
2795 expectedHol.emplace_back(args: 30, args: September, args: 2042);
2796 expectedHol.emplace_back(args: 3, args: October, args: 2042);
2797 expectedHol.emplace_back(args: 9, args: October, args: 2042);
2798 expectedHol.emplace_back(args: 25, args: December, args: 2042);
2799 expectedHol.emplace_back(args: 31, args: December, args: 2042);
2800 expectedHol.emplace_back(args: 1, args: January, args: 2043);
2801 expectedHol.emplace_back(args: 9, args: February, args: 2043);
2802 expectedHol.emplace_back(args: 10, args: February, args: 2043);
2803 expectedHol.emplace_back(args: 11, args: February, args: 2043);
2804 expectedHol.emplace_back(args: 2, args: March, args: 2043);
2805 expectedHol.emplace_back(args: 1, args: May, args: 2043);
2806 expectedHol.emplace_back(args: 5, args: May, args: 2043);
2807 expectedHol.emplace_back(args: 18, args: May, args: 2043);
2808 // expectedHol.emplace_back(6, June, 2043); // Saturday
2809 expectedHol.emplace_back(args: 17, args: August, args: 2043);
2810 expectedHol.emplace_back(args: 16, args: September, args: 2043);
2811 expectedHol.emplace_back(args: 17, args: September, args: 2043);
2812 expectedHol.emplace_back(args: 18, args: September, args: 2043);
2813 expectedHol.emplace_back(args: 5, args: October, args: 2043);
2814 expectedHol.emplace_back(args: 9, args: October, args: 2043);
2815 expectedHol.emplace_back(args: 25, args: December, args: 2043);
2816 expectedHol.emplace_back(args: 31, args: December, args: 2043);
2817 expectedHol.emplace_back(args: 1, args: January, args: 2044);
2818 expectedHol.emplace_back(args: 29, args: January, args: 2044);
2819 // expectedHol.emplace_back(30, January, 2044); // Saturday
2820 expectedHol.emplace_back(args: 1, args: February, args: 2044);
2821 expectedHol.emplace_back(args: 1, args: March, args: 2044);
2822 // expectedHol.emplace_back(1, May, 2044); // Sunday
2823 expectedHol.emplace_back(args: 5, args: May, args: 2044);
2824 expectedHol.emplace_back(args: 6, args: May, args: 2044);
2825 expectedHol.emplace_back(args: 6, args: June, args: 2044);
2826 expectedHol.emplace_back(args: 15, args: August, args: 2044);
2827 expectedHol.emplace_back(args: 3, args: October, args: 2044);
2828 expectedHol.emplace_back(args: 4, args: October, args: 2044);
2829 expectedHol.emplace_back(args: 5, args: October, args: 2044);
2830 expectedHol.emplace_back(args: 6, args: October, args: 2044);
2831 expectedHol.emplace_back(args: 10, args: October, args: 2044);
2832 expectedHol.emplace_back(args: 26, args: December, args: 2044);
2833 expectedHol.emplace_back(args: 30, args: December, args: 2044);
2834 // expectedHol.emplace_back(1, January, 2045); // Sunday
2835 expectedHol.emplace_back(args: 16, args: February, args: 2045);
2836 expectedHol.emplace_back(args: 17, args: February, args: 2045);
2837 // expectedHol.emplace_back(18, February, 2045); // Saturday
2838 expectedHol.emplace_back(args: 1, args: March, args: 2045);
2839 expectedHol.emplace_back(args: 1, args: May, args: 2045);
2840 expectedHol.emplace_back(args: 5, args: May, args: 2045);
2841 expectedHol.emplace_back(args: 24, args: May, args: 2045);
2842 expectedHol.emplace_back(args: 6, args: June, args: 2045);
2843 expectedHol.emplace_back(args: 15, args: August, args: 2045);
2844 expectedHol.emplace_back(args: 25, args: September, args: 2045);
2845 expectedHol.emplace_back(args: 26, args: September, args: 2045);
2846 expectedHol.emplace_back(args: 27, args: September, args: 2045);
2847 expectedHol.emplace_back(args: 3, args: October, args: 2045);
2848 expectedHol.emplace_back(args: 9, args: October, args: 2045);
2849 expectedHol.emplace_back(args: 25, args: December, args: 2045);
2850 expectedHol.emplace_back(args: 29, args: December, args: 2045);
2851 expectedHol.emplace_back(args: 1, args: January, args: 2046);
2852 expectedHol.emplace_back(args: 5, args: February, args: 2046);
2853 expectedHol.emplace_back(args: 6, args: February, args: 2046);
2854 expectedHol.emplace_back(args: 7, args: February, args: 2046);
2855 expectedHol.emplace_back(args: 1, args: March, args: 2046);
2856 expectedHol.emplace_back(args: 1, args: May, args: 2046);
2857 expectedHol.emplace_back(args: 7, args: May, args: 2046);
2858 expectedHol.emplace_back(args: 14, args: May, args: 2046);
2859 expectedHol.emplace_back(args: 6, args: June, args: 2046);
2860 expectedHol.emplace_back(args: 15, args: August, args: 2046);
2861 expectedHol.emplace_back(args: 14, args: September, args: 2046);
2862 // expectedHol.emplace_back(15, September, 2046); // Saturday
2863 expectedHol.emplace_back(args: 17, args: September, args: 2046);
2864 expectedHol.emplace_back(args: 3, args: October, args: 2046);
2865 expectedHol.emplace_back(args: 9, args: October, args: 2046);
2866 expectedHol.emplace_back(args: 25, args: December, args: 2046);
2867 expectedHol.emplace_back(args: 31, args: December, args: 2046);
2868 expectedHol.emplace_back(args: 1, args: January, args: 2047);
2869 expectedHol.emplace_back(args: 25, args: January, args: 2047);
2870 // expectedHol.emplace_back(26, January, 2047); // Saturday
2871 expectedHol.emplace_back(args: 28, args: January, args: 2047);
2872 expectedHol.emplace_back(args: 1, args: March, args: 2047);
2873 expectedHol.emplace_back(args: 1, args: May, args: 2047);
2874 expectedHol.emplace_back(args: 2, args: May, args: 2047);
2875 expectedHol.emplace_back(args: 6, args: May, args: 2047);
2876 expectedHol.emplace_back(args: 6, args: June, args: 2047);
2877 expectedHol.emplace_back(args: 15, args: August, args: 2047);
2878 expectedHol.emplace_back(args: 3, args: October, args: 2047);
2879 expectedHol.emplace_back(args: 4, args: October, args: 2047);
2880 // expectedHol.emplace_back(5, October, 2047); // Saturday
2881 expectedHol.emplace_back(args: 7, args: October, args: 2047);
2882 expectedHol.emplace_back(args: 9, args: October, args: 2047);
2883 expectedHol.emplace_back(args: 25, args: December, args: 2047);
2884 expectedHol.emplace_back(args: 31, args: December, args: 2047);
2885 expectedHol.emplace_back(args: 1, args: January, args: 2048);
2886 expectedHol.emplace_back(args: 13, args: February, args: 2048);
2887 expectedHol.emplace_back(args: 14, args: February, args: 2048);
2888 // expectedHol.emplace_back(15, February, 2048); // Saturday
2889 expectedHol.emplace_back(args: 2, args: March, args: 2048);
2890 expectedHol.emplace_back(args: 1, args: May, args: 2048);
2891 expectedHol.emplace_back(args: 5, args: May, args: 2048);
2892 expectedHol.emplace_back(args: 20, args: May, args: 2048);
2893 // expectedHol.emplace_back(6, June, 2048); // Saturday
2894 expectedHol.emplace_back(args: 17, args: August, args: 2048);
2895 expectedHol.emplace_back(args: 21, args: September, args: 2048);
2896 expectedHol.emplace_back(args: 22, args: September, args: 2048);
2897 expectedHol.emplace_back(args: 23, args: September, args: 2048);
2898 expectedHol.emplace_back(args: 5, args: October, args: 2048);
2899 expectedHol.emplace_back(args: 9, args: October, args: 2048);
2900 expectedHol.emplace_back(args: 25, args: December, args: 2048);
2901 expectedHol.emplace_back(args: 31, args: December, args: 2048);
2902 expectedHol.emplace_back(args: 1, args: January, args: 2049);
2903 expectedHol.emplace_back(args: 1, args: February, args: 2049);
2904 expectedHol.emplace_back(args: 2, args: February, args: 2049);
2905 expectedHol.emplace_back(args: 3, args: February, args: 2049);
2906 expectedHol.emplace_back(args: 1, args: March, args: 2049);
2907 // expectedHol.emplace_back(1, May, 2049); // Saturday
2908 expectedHol.emplace_back(args: 5, args: May, args: 2049);
2909 expectedHol.emplace_back(args: 10, args: May, args: 2049);
2910 // expectedHol.emplace_back(6, June, 2049); // Sunday
2911 expectedHol.emplace_back(args: 16, args: August, args: 2049);
2912 expectedHol.emplace_back(args: 10, args: September, args: 2049);
2913 // expectedHol.emplace_back(11, September, 2049); // Saturday
2914 expectedHol.emplace_back(args: 13, args: September, args: 2049);
2915 expectedHol.emplace_back(args: 4, args: October, args: 2049);
2916 expectedHol.emplace_back(args: 11, args: October, args: 2049);
2917 expectedHol.emplace_back(args: 27, args: December, args: 2049);
2918 expectedHol.emplace_back(args: 31, args: December, args: 2049);
2919 // expectedHol.emplace_back(1, January, 2050); // Saturday
2920 // expectedHol.emplace_back(22, January, 2050); // Saturday
2921 expectedHol.emplace_back(args: 24, args: January, args: 2050);
2922 expectedHol.emplace_back(args: 25, args: January, args: 2050);
2923 expectedHol.emplace_back(args: 1, args: March, args: 2050);
2924 // expectedHol.emplace_back(1, May, 2050); // Sunday
2925 expectedHol.emplace_back(args: 5, args: May, args: 2050);
2926 expectedHol.emplace_back(args: 30, args: May, args: 2050);
2927 expectedHol.emplace_back(args: 6, args: June, args: 2050);
2928 expectedHol.emplace_back(args: 15, args: August, args: 2050);
2929 expectedHol.emplace_back(args: 29, args: September, args: 2050);
2930 expectedHol.emplace_back(args: 30, args: September, args: 2050);
2931 // expectedHol.emplace_back(1, October, 2050); // Saturday
2932 expectedHol.emplace_back(args: 3, args: October, args: 2050);
2933 expectedHol.emplace_back(args: 10, args: October, args: 2050);
2934 expectedHol.emplace_back(args: 26, args: December, args: 2050);
2935 expectedHol.emplace_back(args: 30, args: December, args: 2050);
2936
2937 Calendar c = SouthKorea(SouthKorea::KRX);
2938 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2004), to: Date(31, December, 2050));
2939
2940 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
2941 if (hol[i] != expectedHol[i])
2942 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
2943 << hol[i]);
2944 }
2945 if (hol.size() != expectedHol.size())
2946 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
2947 << hol.size() << " calculated holidays");
2948}
2949
2950void CalendarTest::testChinaSSE() {
2951 BOOST_TEST_MESSAGE("Testing China Shanghai Stock Exchange holiday list...");
2952
2953 std::vector<Date> expectedHol;
2954
2955 // China Shanghai Securities Exchange holiday list in the year 2014
2956 expectedHol.emplace_back(args: 1, args: Jan, args: 2014);
2957 expectedHol.emplace_back(args: 31, args: Jan, args: 2014);
2958 expectedHol.emplace_back(args: 3, args: Feb, args: 2014);
2959 expectedHol.emplace_back(args: 4, args: Feb, args: 2014);
2960 expectedHol.emplace_back(args: 5, args: Feb, args: 2014);
2961 expectedHol.emplace_back(args: 6, args: Feb, args: 2014);
2962 expectedHol.emplace_back(args: 7, args: Apr, args: 2014);
2963 expectedHol.emplace_back(args: 1, args: May, args: 2014);
2964 expectedHol.emplace_back(args: 2, args: May, args: 2014);
2965 expectedHol.emplace_back(args: 2, args: Jun, args: 2014);
2966 expectedHol.emplace_back(args: 8, args: Sep, args: 2014);
2967 expectedHol.emplace_back(args: 1, args: Oct, args: 2014);
2968 expectedHol.emplace_back(args: 2, args: Oct, args: 2014);
2969 expectedHol.emplace_back(args: 3, args: Oct, args: 2014);
2970 expectedHol.emplace_back(args: 6, args: Oct, args: 2014);
2971 expectedHol.emplace_back(args: 7, args: Oct, args: 2014);
2972
2973 // China Shanghai Securities Exchange holiday list in the year 2015
2974 expectedHol.emplace_back(args: 1, args: Jan, args: 2015);
2975 expectedHol.emplace_back(args: 2, args: Jan, args: 2015);
2976 expectedHol.emplace_back(args: 18, args: Feb, args: 2015);
2977 expectedHol.emplace_back(args: 19, args: Feb, args: 2015);
2978 expectedHol.emplace_back(args: 20, args: Feb, args: 2015);
2979 expectedHol.emplace_back(args: 23, args: Feb, args: 2015);
2980 expectedHol.emplace_back(args: 24, args: Feb, args: 2015);
2981 expectedHol.emplace_back(args: 6, args: Apr, args: 2015);
2982 expectedHol.emplace_back(args: 1, args: May, args: 2015);
2983 expectedHol.emplace_back(args: 22, args: Jun, args: 2015);
2984 expectedHol.emplace_back(args: 3, args: Sep, args: 2015);
2985 expectedHol.emplace_back(args: 4, args: Sep, args: 2015);
2986 expectedHol.emplace_back(args: 1, args: Oct, args: 2015);
2987 expectedHol.emplace_back(args: 2, args: Oct, args: 2015);
2988 expectedHol.emplace_back(args: 5, args: Oct, args: 2015);
2989 expectedHol.emplace_back(args: 6, args: Oct, args: 2015);
2990 expectedHol.emplace_back(args: 7, args: Oct, args: 2015);
2991
2992 // China Shanghai Securities Exchange holiday list in the year 2016
2993 expectedHol.emplace_back(args: 1, args: Jan, args: 2016);
2994 expectedHol.emplace_back(args: 8, args: Feb, args: 2016);
2995 expectedHol.emplace_back(args: 9, args: Feb, args: 2016);
2996 expectedHol.emplace_back(args: 10, args: Feb, args: 2016);
2997 expectedHol.emplace_back(args: 11, args: Feb, args: 2016);
2998 expectedHol.emplace_back(args: 12, args: Feb, args: 2016);
2999 expectedHol.emplace_back(args: 4, args: Apr, args: 2016);
3000 expectedHol.emplace_back(args: 2, args: May, args: 2016);
3001 expectedHol.emplace_back(args: 9, args: Jun, args: 2016);
3002 expectedHol.emplace_back(args: 10, args: Jun, args: 2016);
3003 expectedHol.emplace_back(args: 15, args: Sep, args: 2016);
3004 expectedHol.emplace_back(args: 16, args: Sep, args: 2016);
3005 expectedHol.emplace_back(args: 3, args: Oct, args: 2016);
3006 expectedHol.emplace_back(args: 4, args: Oct, args: 2016);
3007 expectedHol.emplace_back(args: 5, args: Oct, args: 2016);
3008 expectedHol.emplace_back(args: 6, args: Oct, args: 2016);
3009 expectedHol.emplace_back(args: 7, args: Oct, args: 2016);
3010
3011 // China Shanghai Securities Exchange holiday list in the year 2017
3012 expectedHol.emplace_back(args: 2, args: Jan, args: 2017);
3013 expectedHol.emplace_back(args: 27, args: Jan, args: 2017);
3014 expectedHol.emplace_back(args: 30, args: Jan, args: 2017);
3015 expectedHol.emplace_back(args: 31, args: Jan, args: 2017);
3016 expectedHol.emplace_back(args: 1, args: Feb, args: 2017);
3017 expectedHol.emplace_back(args: 2, args: Feb, args: 2017);
3018 expectedHol.emplace_back(args: 3, args: April, args: 2017);
3019 expectedHol.emplace_back(args: 4, args: April, args: 2017);
3020 expectedHol.emplace_back(args: 1, args: May, args: 2017);
3021 expectedHol.emplace_back(args: 29, args: May, args: 2017);
3022 expectedHol.emplace_back(args: 30, args: May, args: 2017);
3023 expectedHol.emplace_back(args: 2, args: Oct, args: 2017);
3024 expectedHol.emplace_back(args: 3, args: Oct, args: 2017);
3025 expectedHol.emplace_back(args: 4, args: Oct, args: 2017);
3026 expectedHol.emplace_back(args: 5, args: Oct, args: 2017);
3027 expectedHol.emplace_back(args: 6, args: Oct, args: 2017);
3028
3029 // China Shanghai Securities Exchange holiday list in the year 2018
3030 expectedHol.emplace_back(args: 1, args: Jan, args: 2018);
3031 expectedHol.emplace_back(args: 15, args: Feb, args: 2018);
3032 expectedHol.emplace_back(args: 16, args: Feb, args: 2018);
3033 expectedHol.emplace_back(args: 19, args: Feb, args: 2018);
3034 expectedHol.emplace_back(args: 20, args: Feb, args: 2018);
3035 expectedHol.emplace_back(args: 21, args: Feb, args: 2018);
3036 expectedHol.emplace_back(args: 5, args: April, args: 2018);
3037 expectedHol.emplace_back(args: 6, args: April, args: 2018);
3038 expectedHol.emplace_back(args: 30, args: April, args: 2018);
3039 expectedHol.emplace_back(args: 1, args: May, args: 2018);
3040 expectedHol.emplace_back(args: 18, args: June, args: 2018);
3041 expectedHol.emplace_back(args: 24, args: September, args: 2018);
3042 expectedHol.emplace_back(args: 1, args: Oct, args: 2018);
3043 expectedHol.emplace_back(args: 2, args: Oct, args: 2018);
3044 expectedHol.emplace_back(args: 3, args: Oct, args: 2018);
3045 expectedHol.emplace_back(args: 4, args: Oct, args: 2018);
3046 expectedHol.emplace_back(args: 5, args: Oct, args: 2018);
3047 expectedHol.emplace_back(args: 31, args: December, args: 2018);
3048
3049 // China Shanghai Securities Exchange holiday list in the year 2019
3050 expectedHol.emplace_back(args: 1, args: Jan, args: 2019);
3051 expectedHol.emplace_back(args: 4, args: Feb, args: 2019);
3052 expectedHol.emplace_back(args: 5, args: Feb, args: 2019);
3053 expectedHol.emplace_back(args: 6, args: Feb, args: 2019);
3054 expectedHol.emplace_back(args: 7, args: Feb, args: 2019);
3055 expectedHol.emplace_back(args: 8, args: Feb, args: 2019);
3056 expectedHol.emplace_back(args: 5, args: April, args: 2019);
3057 expectedHol.emplace_back(args: 1, args: May, args: 2019);
3058 expectedHol.emplace_back(args: 2, args: May, args: 2019);
3059 expectedHol.emplace_back(args: 3, args: May, args: 2019);
3060 expectedHol.emplace_back(args: 7, args: June, args: 2019);
3061 expectedHol.emplace_back(args: 13, args: September, args: 2019);
3062 expectedHol.emplace_back(args: 1, args: October, args: 2019);
3063 expectedHol.emplace_back(args: 2, args: October, args: 2019);
3064 expectedHol.emplace_back(args: 3, args: October, args: 2019);
3065 expectedHol.emplace_back(args: 4, args: October, args: 2019);
3066 expectedHol.emplace_back(args: 7, args: October, args: 2019);
3067
3068 // China Shanghai Securities Exchange holiday list in the year 2020
3069 expectedHol.emplace_back(args: 1, args: Jan, args: 2020);
3070 expectedHol.emplace_back(args: 24, args: Jan, args: 2020);
3071 expectedHol.emplace_back(args: 27, args: Jan, args: 2020);
3072 expectedHol.emplace_back(args: 28, args: Jan, args: 2020);
3073 expectedHol.emplace_back(args: 29, args: Jan, args: 2020);
3074 expectedHol.emplace_back(args: 30, args: Jan, args: 2020);
3075 expectedHol.emplace_back(args: 31, args: Jan, args: 2020);
3076 expectedHol.emplace_back(args: 6, args: April, args: 2020);
3077 expectedHol.emplace_back(args: 1, args: May, args: 2020);
3078 expectedHol.emplace_back(args: 4, args: May, args: 2020);
3079 expectedHol.emplace_back(args: 5, args: May, args: 2020);
3080 expectedHol.emplace_back(args: 25, args: June, args: 2020);
3081 expectedHol.emplace_back(args: 26, args: June, args: 2020);
3082 expectedHol.emplace_back(args: 1, args: October, args: 2020);
3083 expectedHol.emplace_back(args: 2, args: October, args: 2020);
3084 expectedHol.emplace_back(args: 5, args: October, args: 2020);
3085 expectedHol.emplace_back(args: 6, args: October, args: 2020);
3086 expectedHol.emplace_back(args: 7, args: October, args: 2020);
3087 expectedHol.emplace_back(args: 8, args: October, args: 2020);
3088
3089 // China Shanghai Securities Exchange holiday list in the year 2021
3090 expectedHol.emplace_back(args: 1, args: Jan, args: 2021);
3091 expectedHol.emplace_back(args: 11, args: Feb, args: 2021);
3092 expectedHol.emplace_back(args: 12, args: Feb, args: 2021);
3093 expectedHol.emplace_back(args: 15, args: Feb, args: 2021);
3094 expectedHol.emplace_back(args: 16, args: Feb, args: 2021);
3095 expectedHol.emplace_back(args: 17, args: Feb, args: 2021);
3096 expectedHol.emplace_back(args: 5, args: April, args: 2021);
3097 expectedHol.emplace_back(args: 3, args: May, args: 2021);
3098 expectedHol.emplace_back(args: 4, args: May, args: 2021);
3099 expectedHol.emplace_back(args: 5, args: May, args: 2021);
3100 expectedHol.emplace_back(args: 14, args: June, args: 2021);
3101 expectedHol.emplace_back(args: 20, args: September, args: 2021);
3102 expectedHol.emplace_back(args: 21, args: September, args: 2021);
3103 expectedHol.emplace_back(args: 1, args: October, args: 2021);
3104 expectedHol.emplace_back(args: 4, args: October, args: 2021);
3105 expectedHol.emplace_back(args: 5, args: October, args: 2021);
3106 expectedHol.emplace_back(args: 6, args: October, args: 2021);
3107 expectedHol.emplace_back(args: 7, args: October, args: 2021);
3108
3109 // China Shanghai Securities Exchange holiday list in the year 2022
3110 expectedHol.emplace_back(args: 3, args: Jan, args: 2022);
3111 expectedHol.emplace_back(args: 31, args: Jan, args: 2022);
3112 expectedHol.emplace_back(args: 1, args: Feb, args: 2022);
3113 expectedHol.emplace_back(args: 2, args: Feb, args: 2022);
3114 expectedHol.emplace_back(args: 3, args: Feb, args: 2022);
3115 expectedHol.emplace_back(args: 4, args: Feb, args: 2022);
3116 expectedHol.emplace_back(args: 4, args: April, args: 2022);
3117 expectedHol.emplace_back(args: 5, args: April, args: 2022);
3118 expectedHol.emplace_back(args: 2, args: May, args: 2022);
3119 expectedHol.emplace_back(args: 3, args: May, args: 2022);
3120 expectedHol.emplace_back(args: 4, args: May, args: 2022);
3121 expectedHol.emplace_back(args: 3, args: June, args: 2022);
3122 expectedHol.emplace_back(args: 12, args: September, args: 2022);
3123 expectedHol.emplace_back(args: 3, args: October, args: 2022);
3124 expectedHol.emplace_back(args: 4, args: October, args: 2022);
3125 expectedHol.emplace_back(args: 5, args: October, args: 2022);
3126 expectedHol.emplace_back(args: 6, args: October, args: 2022);
3127 expectedHol.emplace_back(args: 7, args: October, args: 2022);
3128
3129 // China Shanghai Securities Exchange holiday list in the year 2023
3130 expectedHol.emplace_back(args: 2, args: Jan, args: 2023);
3131 expectedHol.emplace_back(args: 23, args: Jan, args: 2023);
3132 expectedHol.emplace_back(args: 24, args: Jan, args: 2023);
3133 expectedHol.emplace_back(args: 25, args: Jan, args: 2023);
3134 expectedHol.emplace_back(args: 26, args: Jan, args: 2023);
3135 expectedHol.emplace_back(args: 27, args: Jan, args: 2023);
3136 expectedHol.emplace_back(args: 5, args: April, args: 2023);
3137 expectedHol.emplace_back(args: 1, args: May, args: 2023);
3138 expectedHol.emplace_back(args: 2, args: May, args: 2023);
3139 expectedHol.emplace_back(args: 3, args: May, args: 2023);
3140 expectedHol.emplace_back(args: 22, args: June, args: 2023);
3141 expectedHol.emplace_back(args: 23, args: June, args: 2023);
3142 expectedHol.emplace_back(args: 29, args: September, args: 2023);
3143 expectedHol.emplace_back(args: 2, args: October, args: 2023);
3144 expectedHol.emplace_back(args: 3, args: October, args: 2023);
3145 expectedHol.emplace_back(args: 4, args: October, args: 2023);
3146 expectedHol.emplace_back(args: 5, args: October, args: 2023);
3147 expectedHol.emplace_back(args: 6, args: October, args: 2023);
3148
3149 Calendar c = China(China::SSE);
3150 std::vector<Date> hol = c.holidayList(from: Date(1, January, 2014), to: Date(31, December, 2023));
3151
3152 for (Size i = 0; i < std::min<Size>(a: hol.size(), b: expectedHol.size()); i++) {
3153 if (hol[i] != expectedHol[i])
3154 BOOST_FAIL("expected holiday was " << expectedHol[i] << " while calculated holiday is "
3155 << hol[i]);
3156 }
3157 if (hol.size() != expectedHol.size())
3158 BOOST_FAIL("there were " << expectedHol.size() << " expected holidays, while there are "
3159 << hol.size() << " calculated holidays");
3160}
3161
3162void CalendarTest::testChinaIB() {
3163 BOOST_TEST_MESSAGE("Testing China Inter Bank working weekends list...");
3164
3165 std::vector<Date> expectedWorkingWeekEnds;
3166
3167 // China Inter Bank working weekends list in the year 2014
3168 expectedWorkingWeekEnds.emplace_back(args: 26, args: Jan, args: 2014);
3169 expectedWorkingWeekEnds.emplace_back(args: 8, args: Feb, args: 2014);
3170 expectedWorkingWeekEnds.emplace_back(args: 4, args: May, args: 2014);
3171 expectedWorkingWeekEnds.emplace_back(args: 28, args: Sep, args: 2014);
3172 expectedWorkingWeekEnds.emplace_back(args: 11, args: Oct, args: 2014);
3173
3174 // China Inter Bank working weekends list in the year 2015
3175 expectedWorkingWeekEnds.emplace_back(args: 4, args: Jan, args: 2015);
3176 expectedWorkingWeekEnds.emplace_back(args: 15, args: Feb, args: 2015);
3177 expectedWorkingWeekEnds.emplace_back(args: 28, args: Feb, args: 2015);
3178 expectedWorkingWeekEnds.emplace_back(args: 6, args: Sep, args: 2015);
3179 expectedWorkingWeekEnds.emplace_back(args: 10, args: Oct, args: 2015);
3180
3181 // China Inter Bank working weekends list in the year 2016
3182 expectedWorkingWeekEnds.emplace_back(args: 6, args: Feb, args: 2016);
3183 expectedWorkingWeekEnds.emplace_back(args: 14, args: Feb, args: 2016);
3184 expectedWorkingWeekEnds.emplace_back(args: 12, args: Jun, args: 2016);
3185 expectedWorkingWeekEnds.emplace_back(args: 18, args: Sep, args: 2016);
3186 expectedWorkingWeekEnds.emplace_back(args: 8, args: Oct, args: 2016);
3187 expectedWorkingWeekEnds.emplace_back(args: 9, args: Oct, args: 2016);
3188
3189 // China Inter Bank working weekends list in the year 2017
3190 expectedWorkingWeekEnds.emplace_back(args: 22, args: Jan, args: 2017);
3191 expectedWorkingWeekEnds.emplace_back(args: 4, args: Feb, args: 2017);
3192 expectedWorkingWeekEnds.emplace_back(args: 1, args: April, args: 2017);
3193 expectedWorkingWeekEnds.emplace_back(args: 27, args: May, args: 2017);
3194 expectedWorkingWeekEnds.emplace_back(args: 30, args: Sep, args: 2017);
3195
3196 // China Inter Bank working weekends list in the year 2018
3197 expectedWorkingWeekEnds.emplace_back(args: 11, args: Feb, args: 2018);
3198 expectedWorkingWeekEnds.emplace_back(args: 24, args: Feb, args: 2018);
3199 expectedWorkingWeekEnds.emplace_back(args: 8, args: April, args: 2018);
3200 expectedWorkingWeekEnds.emplace_back(args: 28, args: April, args: 2018);
3201 expectedWorkingWeekEnds.emplace_back(args: 29, args: Sep, args: 2018);
3202 expectedWorkingWeekEnds.emplace_back(args: 30, args: Sep, args: 2018);
3203 expectedWorkingWeekEnds.emplace_back(args: 29, args: December, args: 2018);
3204
3205 // China Inter Bank working weekends list in the year 2019
3206 expectedWorkingWeekEnds.emplace_back(args: 2, args: Feb, args: 2019);
3207 expectedWorkingWeekEnds.emplace_back(args: 3, args: Feb, args: 2019);
3208 expectedWorkingWeekEnds.emplace_back(args: 28, args: April, args: 2019);
3209 expectedWorkingWeekEnds.emplace_back(args: 5, args: May, args: 2019);
3210 expectedWorkingWeekEnds.emplace_back(args: 29, args: September, args: 2019);
3211 expectedWorkingWeekEnds.emplace_back(args: 12, args: October, args: 2019);
3212
3213 // China Inter Bank working weekends list in the year 2020
3214 expectedWorkingWeekEnds.emplace_back(args: 19, args: January, args: 2020);
3215 expectedWorkingWeekEnds.emplace_back(args: 26, args: April, args: 2020);
3216 expectedWorkingWeekEnds.emplace_back(args: 9, args: May, args: 2020);
3217 expectedWorkingWeekEnds.emplace_back(args: 28, args: June, args: 2020);
3218 expectedWorkingWeekEnds.emplace_back(args: 27, args: September, args: 2020);
3219 expectedWorkingWeekEnds.emplace_back(args: 10, args: October, args: 2020);
3220
3221 // China Inter Bank working weekends list in the year 2021
3222 expectedWorkingWeekEnds.emplace_back(args: 7, args: Feb, args: 2021);
3223 expectedWorkingWeekEnds.emplace_back(args: 20, args: Feb, args: 2021);
3224 expectedWorkingWeekEnds.emplace_back(args: 25, args: April, args: 2021);
3225 expectedWorkingWeekEnds.emplace_back(args: 8, args: May, args: 2021);
3226 expectedWorkingWeekEnds.emplace_back(args: 18, args: September, args: 2021);
3227 expectedWorkingWeekEnds.emplace_back(args: 26, args: September, args: 2021);
3228 expectedWorkingWeekEnds.emplace_back(args: 9, args: October, args: 2021);
3229
3230 // China Inter Bank working weekends list in the year 2022
3231 expectedWorkingWeekEnds.emplace_back(args: 29, args: Jan, args: 2022);
3232 expectedWorkingWeekEnds.emplace_back(args: 30, args: Jan, args: 2022);
3233 expectedWorkingWeekEnds.emplace_back(args: 2, args: April, args: 2022);
3234 expectedWorkingWeekEnds.emplace_back(args: 24, args: April, args: 2022);
3235 expectedWorkingWeekEnds.emplace_back(args: 7, args: May, args: 2022);
3236 expectedWorkingWeekEnds.emplace_back(args: 8, args: October, args: 2022);
3237 expectedWorkingWeekEnds.emplace_back(args: 9, args: October, args: 2022);
3238
3239 // China Inter Bank working weekends list in the year 2023
3240 expectedWorkingWeekEnds.emplace_back(args: 28, args: Jan, args: 2023);
3241 expectedWorkingWeekEnds.emplace_back(args: 29, args: Jan, args: 2023);
3242 expectedWorkingWeekEnds.emplace_back(args: 23, args: April, args: 2023);
3243 expectedWorkingWeekEnds.emplace_back(args: 6, args: May, args: 2023);
3244 expectedWorkingWeekEnds.emplace_back(args: 25, args: June, args: 2023);
3245 expectedWorkingWeekEnds.emplace_back(args: 7, args: October, args: 2023);
3246 expectedWorkingWeekEnds.emplace_back(args: 8, args: October, args: 2023);
3247
3248 Calendar c = China(China::IB);
3249 Date start(1, Jan, 2014);
3250 Date end(31, Dec, 2023);
3251
3252 Size k = 0;
3253
3254 while (start <= end) {
3255 if (c.isBusinessDay(d: start) && c.isWeekend(w: start.weekday())) {
3256 if (expectedWorkingWeekEnds[k] != start)
3257 BOOST_FAIL("expected working weekend was "
3258 << expectedWorkingWeekEnds[k] << " while calculated working weekend is "
3259 << start);
3260 ++k;
3261 }
3262 ++start;
3263 }
3264
3265 if (k != (expectedWorkingWeekEnds.size()))
3266 BOOST_FAIL("there were " << expectedWorkingWeekEnds.size()
3267 << " expected working weekends, while there are " << k
3268 << " calculated working weekends");
3269}
3270
3271void CalendarTest::testEndOfMonth() {
3272 BOOST_TEST_MESSAGE("Testing end-of-month calculation...");
3273
3274 Calendar c = TARGET(); // any calendar would be OK
3275
3276 Date eom, counter = Date::minDate();
3277 Date last = Date::maxDate() - 2 * Months;
3278
3279 while (counter <= last) {
3280 eom = c.endOfMonth(d: counter);
3281 // check that eom is eom
3282 if (!c.isEndOfMonth(d: eom))
3283 BOOST_FAIL("\n " << eom.weekday() << " " << eom << " is not the last business day in "
3284 << eom.month() << " " << eom.year() << " according to " << c.name());
3285 // check that eom is in the same month as counter
3286 if (eom.month() != counter.month())
3287 BOOST_FAIL("\n " << eom << " is not in the same month as " << counter);
3288 counter = counter + 1;
3289 }
3290}
3291
3292void CalendarTest::testBusinessDaysBetween() {
3293
3294 BOOST_TEST_MESSAGE("Testing calculation of business days between dates...");
3295
3296 std::vector<Date> testDates;
3297 testDates.emplace_back(args: 1, args: February, args: 2002); // isBusinessDay = true
3298 testDates.emplace_back(args: 4, args: February, args: 2002); // isBusinessDay = true
3299 testDates.emplace_back(args: 16, args: May, args: 2003); // isBusinessDay = true
3300 testDates.emplace_back(args: 17, args: December, args: 2003); // isBusinessDay = true
3301 testDates.emplace_back(args: 17, args: December, args: 2004); // isBusinessDay = true
3302 testDates.emplace_back(args: 19, args: December, args: 2005); // isBusinessDay = true
3303 testDates.emplace_back(args: 2, args: January, args: 2006); // isBusinessDay = true
3304 testDates.emplace_back(args: 13, args: March, args: 2006); // isBusinessDay = true
3305 testDates.emplace_back(args: 15, args: May, args: 2006); // isBusinessDay = true
3306 testDates.emplace_back(args: 17, args: March, args: 2006); // isBusinessDay = true
3307 testDates.emplace_back(args: 15, args: May, args: 2006); // isBusinessDay = true
3308 testDates.emplace_back(args: 26, args: July, args: 2006); // isBusinessDay = true
3309 testDates.emplace_back(args: 26, args: July, args: 2006); // isBusinessDay = true
3310 testDates.emplace_back(args: 27, args: July, args: 2006); // isBusinessDay = true
3311 testDates.emplace_back(args: 29, args: July, args: 2006); // isBusinessDay = false
3312 testDates.emplace_back(args: 29, args: July, args: 2006); // isBusinessDay = false
3313
3314 // default params: from date included, to excluded
3315 Date::serial_type expected[] = {1, 321, 152, 251, 252, 10, 48, 42, -38, 38, 51, 0, 1, 2, 0};
3316
3317 // exclude from, include to
3318 Date::serial_type expected_include_to[] = {1, 321, 152, 251, 252, 10, 48, 42,
3319 -38, 38, 51, 0, 1, 1, 0};
3320
3321 // include both from and to
3322 Date::serial_type expected_include_all[] = {2, 322, 153, 252, 253, 11, 49, 43,
3323 -39, 39, 52, 1, 2, 2, 0};
3324
3325 // exclude both from and to
3326 Date::serial_type expected_exclude_all[] = {0, 320, 151, 250, 251, 9, 47, 41,
3327 -37, 37, 50, 0, 0, 1, 0};
3328
3329 Calendar calendar = Brazil();
3330
3331 for (Size i = 1; i < testDates.size(); i++) {
3332 Integer calculated =
3333 calendar.businessDaysBetween(from: testDates[i - 1], to: testDates[i], includeFirst: true, includeLast: false);
3334 if (calculated != expected[i - 1]) {
3335 BOOST_ERROR("from " << testDates[i - 1] << " included"
3336 << " to " << testDates[i] << " excluded:\n"
3337 << " calculated: " << calculated << "\n"
3338 << " expected: " << expected[i - 1]);
3339 }
3340
3341 calculated = calendar.businessDaysBetween(from: testDates[i - 1], to: testDates[i], includeFirst: false, includeLast: true);
3342 if (calculated != expected_include_to[i - 1]) {
3343 BOOST_ERROR("from " << testDates[i - 1] << " excluded"
3344 << " to " << testDates[i] << " included:\n"
3345 << " calculated: " << calculated << "\n"
3346 << " expected: " << expected_include_to[i - 1]);
3347 }
3348
3349 calculated = calendar.businessDaysBetween(from: testDates[i - 1], to: testDates[i], includeFirst: true, includeLast: true);
3350 if (calculated != expected_include_all[i - 1]) {
3351 BOOST_ERROR("from " << testDates[i - 1] << " included"
3352 << " to " << testDates[i] << " included:\n"
3353 << " calculated: " << calculated << "\n"
3354 << " expected: " << expected_include_all[i - 1]);
3355 }
3356
3357 calculated = calendar.businessDaysBetween(from: testDates[i - 1], to: testDates[i], includeFirst: false, includeLast: false);
3358 if (calculated != expected_exclude_all[i - 1]) {
3359 BOOST_ERROR("from " << testDates[i - 1] << " excluded"
3360 << " to " << testDates[i] << " excluded:\n"
3361 << " calculated: " << calculated << "\n"
3362 << " expected: " << expected_exclude_all[i - 1]);
3363 }
3364 }
3365}
3366
3367
3368void CalendarTest::testBespokeCalendars() {
3369
3370 BOOST_TEST_MESSAGE("Testing bespoke calendars...");
3371
3372 BespokeCalendar a1;
3373 BespokeCalendar b1;
3374
3375 Date testDate1 = Date(4, October, 2008); // Saturday
3376 Date testDate2 = Date(5, October, 2008); // Sunday
3377 Date testDate3 = Date(6, October, 2008); // Monday
3378 Date testDate4 = Date(7, October, 2008); // Tuesday
3379
3380 if (!a1.isBusinessDay(d: testDate1))
3381 BOOST_ERROR(testDate1 << " erroneously detected as holiday");
3382 if (!a1.isBusinessDay(d: testDate2))
3383 BOOST_ERROR(testDate2 << " erroneously detected as holiday");
3384 if (!a1.isBusinessDay(d: testDate3))
3385 BOOST_ERROR(testDate3 << " erroneously detected as holiday");
3386 if (!a1.isBusinessDay(d: testDate4))
3387 BOOST_ERROR(testDate4 << " erroneously detected as holiday");
3388
3389 if (!b1.isBusinessDay(d: testDate1))
3390 BOOST_ERROR(testDate1 << " erroneously detected as holiday");
3391 if (!b1.isBusinessDay(d: testDate2))
3392 BOOST_ERROR(testDate2 << " erroneously detected as holiday");
3393 if (!b1.isBusinessDay(d: testDate3))
3394 BOOST_ERROR(testDate3 << " erroneously detected as holiday");
3395 if (!b1.isBusinessDay(d: testDate4))
3396 BOOST_ERROR(testDate4 << " erroneously detected as holiday");
3397
3398 a1.addWeekend(Sunday);
3399
3400 if (!a1.isBusinessDay(d: testDate1))
3401 BOOST_ERROR(testDate1 << " erroneously detected as holiday");
3402 if (a1.isBusinessDay(d: testDate2))
3403 BOOST_ERROR(testDate2 << " (Sunday) not detected as weekend");
3404 if (!a1.isBusinessDay(d: testDate3))
3405 BOOST_ERROR(testDate3 << " erroneously detected as holiday");
3406 if (!a1.isBusinessDay(d: testDate4))
3407 BOOST_ERROR(testDate4 << " erroneously detected as holiday");
3408
3409 if (!b1.isBusinessDay(d: testDate1))
3410 BOOST_ERROR(testDate1 << " erroneously detected as holiday");
3411 if (!b1.isBusinessDay(d: testDate2))
3412 BOOST_ERROR(testDate2 << " erroneously detected as holiday");
3413 if (!b1.isBusinessDay(d: testDate3))
3414 BOOST_ERROR(testDate3 << " erroneously detected as holiday");
3415 if (!b1.isBusinessDay(d: testDate4))
3416 BOOST_ERROR(testDate4 << " erroneously detected as holiday");
3417
3418 a1.addHoliday(testDate3);
3419
3420 if (!a1.isBusinessDay(d: testDate1))
3421 BOOST_ERROR(testDate1 << " erroneously detected as holiday");
3422 if (a1.isBusinessDay(d: testDate2))
3423 BOOST_ERROR(testDate2 << " (Sunday) not detected as weekend");
3424 if (a1.isBusinessDay(d: testDate3))
3425 BOOST_ERROR(testDate3 << " (marked as holiday) not detected");
3426 if (!a1.isBusinessDay(d: testDate4))
3427 BOOST_ERROR(testDate4 << " erroneously detected as holiday");
3428
3429 if (!b1.isBusinessDay(d: testDate1))
3430 BOOST_ERROR(testDate1 << " erroneously detected as holiday");
3431 if (!b1.isBusinessDay(d: testDate2))
3432 BOOST_ERROR(testDate2 << " erroneously detected as holiday");
3433 if (!b1.isBusinessDay(d: testDate3))
3434 BOOST_ERROR(testDate3 << " erroneously detected as holiday");
3435 if (!b1.isBusinessDay(d: testDate4))
3436 BOOST_ERROR(testDate4 << " erroneously detected as holiday");
3437
3438 BespokeCalendar a2 = a1; // linked to a1
3439
3440 a2.addWeekend(Saturday);
3441
3442 if (a1.isBusinessDay(d: testDate1))
3443 BOOST_ERROR(testDate1 << " (Saturday) not detected as weekend");
3444 if (a1.isBusinessDay(d: testDate2))
3445 BOOST_ERROR(testDate2 << " (Sunday) not detected as weekend");
3446 if (a1.isBusinessDay(d: testDate3))
3447 BOOST_ERROR(testDate3 << " (marked as holiday) not detected");
3448 if (!a1.isBusinessDay(d: testDate4))
3449 BOOST_ERROR(testDate4 << " erroneously detected as holiday");
3450
3451 if (a2.isBusinessDay(d: testDate1))
3452 BOOST_ERROR(testDate1 << " (Saturday) not detected as weekend");
3453 if (a2.isBusinessDay(d: testDate2))
3454 BOOST_ERROR(testDate2 << " (Sunday) not detected as weekend");
3455 if (a2.isBusinessDay(d: testDate3))
3456 BOOST_ERROR(testDate3 << " (marked as holiday) not detected");
3457 if (!a2.isBusinessDay(d: testDate4))
3458 BOOST_ERROR(testDate4 << " erroneously detected as holiday");
3459
3460 a2.addHoliday(testDate4);
3461
3462 if (a1.isBusinessDay(d: testDate1))
3463 BOOST_ERROR(testDate1 << " (Saturday) not detected as weekend");
3464 if (a1.isBusinessDay(d: testDate2))
3465 BOOST_ERROR(testDate2 << " (Sunday) not detected as weekend");
3466 if (a1.isBusinessDay(d: testDate3))
3467 BOOST_ERROR(testDate3 << " (marked as holiday) not detected");
3468 if (a1.isBusinessDay(d: testDate4))
3469 BOOST_ERROR(testDate4 << " (marked as holiday) not detected");
3470
3471 if (a2.isBusinessDay(d: testDate1))
3472 BOOST_ERROR(testDate1 << " (Saturday) not detected as weekend");
3473 if (a2.isBusinessDay(d: testDate2))
3474 BOOST_ERROR(testDate2 << " (Sunday) not detected as weekend");
3475 if (a2.isBusinessDay(d: testDate3))
3476 BOOST_ERROR(testDate3 << " (marked as holiday) not detected");
3477 if (a2.isBusinessDay(d: testDate4))
3478 BOOST_ERROR(testDate4 << " (marked as holiday) not detected");
3479}
3480
3481void CalendarTest::testIntradayAddHolidays() {
3482#ifdef QL_HIGH_RESOLUTION_DATE
3483 BOOST_TEST_MESSAGE("Testing addHolidays with enable-intraday...");
3484
3485 // test cases taken from testModifiedCalendars
3486
3487 Calendar c1 = TARGET();
3488 Calendar c2 = UnitedStates(UnitedStates::NYSE);
3489 Date d1(1, May, 2004); // holiday for both calendars
3490 Date d2(26, April, 2004, 0, 0, 1, 1); // business day
3491
3492 Date d1Mock(1, May, 2004, 1, 1, 0, 0); // holiday for both calendars
3493 Date d2Mock(26, April, 2004); // business day
3494
3495 // this works anyhow because implementation uses day() month() etc
3496 QL_REQUIRE(c1.isHoliday(d1), "wrong assumption---correct the test");
3497 QL_REQUIRE(c1.isBusinessDay(d2), "wrong assumption---correct the test");
3498
3499 QL_REQUIRE(c2.isHoliday(d1), "wrong assumption---correct the test");
3500 QL_REQUIRE(c2.isBusinessDay(d2), "wrong assumption---correct the test");
3501
3502 // now with different hourly/min/sec
3503 QL_REQUIRE(c1.isHoliday(d1Mock), "wrong assumption---correct the test");
3504 QL_REQUIRE(c1.isBusinessDay(d2Mock), "wrong assumption---correct the test");
3505
3506 QL_REQUIRE(c2.isHoliday(d1Mock), "wrong assumption---correct the test");
3507 QL_REQUIRE(c2.isBusinessDay(d2Mock), "wrong assumption---correct the test");
3508
3509
3510 // modify the TARGET calendar
3511 c1.removeHoliday(d1);
3512 c1.addHoliday(d2);
3513
3514 // test
3515 if (c1.isHoliday(d1))
3516 BOOST_FAIL(d1 << " still a holiday for original TARGET instance");
3517 if (c1.isBusinessDay(d2))
3518 BOOST_FAIL(d2 << " still a business day for original TARGET instance");
3519
3520 if (c1.isHoliday(d1Mock))
3521 BOOST_FAIL(d1Mock << " still a holiday for original TARGET instance"
3522 << " and different hours/min/secs");
3523 if (c1.isBusinessDay(d2Mock))
3524 BOOST_FAIL(d2Mock << " still a business day for generic TARGET instance"
3525 << " and different hours/min/secs");
3526
3527 // any instance of TARGET should be modified...
3528 Calendar c3 = TARGET();
3529 if (c3.isHoliday(d1))
3530 BOOST_FAIL(d1 << " still a holiday for generic TARGET instance");
3531 if (c3.isBusinessDay(d2))
3532 BOOST_FAIL(d2 << " still a business day for generic TARGET instance");
3533
3534 if (c3.isHoliday(d1Mock))
3535 BOOST_FAIL(d1Mock << " still a holiday for original TARGET instance"
3536 << " and different hours/min/secs");
3537 if (c3.isBusinessDay(d2Mock))
3538 BOOST_FAIL(d2Mock << " still a business day for generic TARGET instance"
3539 << " and different hours/min/secs");
3540
3541 // ...but not other calendars
3542 if (c2.isBusinessDay(d1))
3543 BOOST_FAIL(d1 << " business day for New York");
3544 if (c2.isHoliday(d2))
3545 BOOST_FAIL(d2 << " holiday for New York");
3546
3547 if (c2.isBusinessDay(d1Mock))
3548 BOOST_FAIL(d1Mock << " business day for New York"
3549 << " and different hours/min/secs");
3550 if (c2.isHoliday(d2Mock))
3551 BOOST_FAIL(d2Mock << " holiday for New York"
3552 << " and different hours/min/secs");
3553
3554 // restore original holiday set---test the other way around
3555 c3.addHoliday(d1Mock);
3556 c3.removeHoliday(d2Mock);
3557
3558 if (c1.isBusinessDay(d1))
3559 BOOST_FAIL(d1 << " still a business day");
3560 if (c1.isHoliday(d2))
3561 BOOST_FAIL(d2 << " still a holiday");
3562
3563 if (c1.isBusinessDay(d1Mock))
3564 BOOST_FAIL(d1Mock << " still a business day"
3565 << " and different hours/min/secs");
3566 if (c1.isHoliday(d2Mock))
3567 BOOST_FAIL(d2Mock << " still a holiday and different hours/min/secs");
3568
3569#endif
3570}
3571
3572void CalendarTest::testDayLists() {
3573
3574 BOOST_TEST_MESSAGE("Testing holidayList and businessDaysList...");
3575 Calendar germany = Germany();
3576 Date firstDate = Settings::instance().evaluationDate(), endDate = firstDate + 1 * Years;
3577
3578 // Test that same day holidayList and businessDayList does not throw an error
3579 germany.holidayList(from: firstDate, to: firstDate, includeWeekEnds: true);
3580 germany.businessDayList(from: firstDate, to: firstDate);
3581
3582 std::vector<Date> holidays = germany.holidayList(from: firstDate, to: endDate, includeWeekEnds: true);
3583 std::vector<Date> businessDays = germany.businessDayList(from: firstDate, to: endDate);
3584
3585 auto it_holidays = holidays.begin(), it_businessDays = businessDays.begin();
3586 for (Date d = firstDate; d < endDate; d++) {
3587 if (it_holidays != holidays.end() && it_businessDays != businessDays.end() &&
3588 d == *it_holidays && d == *it_businessDays) {
3589 BOOST_FAIL("Date " << d << "is both holiday and business day.");
3590 ++it_holidays;
3591 ++it_businessDays;
3592 } else if (it_holidays != holidays.end() && d == *it_holidays) {
3593 ++it_holidays;
3594 } else if (it_businessDays != businessDays.end() && d == *it_businessDays) {
3595 ++it_businessDays;
3596 } else {
3597 BOOST_FAIL("Date " << d << "is neither holiday nor business day.");
3598 }
3599 }
3600}
3601
3602test_suite* CalendarTest::suite() {
3603 auto* suite = BOOST_TEST_SUITE("Calendar tests");
3604
3605 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testBrazil));
3606 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testRussia));
3607
3608 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testItalyExchange));
3609
3610 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testUKSettlement));
3611 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testUKExchange));
3612 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testUKMetals));
3613
3614 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testGermanyFrankfurt));
3615 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testGermanyXetra));
3616 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testGermanyEurex));
3617
3618 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testTARGET));
3619
3620 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testDenmark));
3621
3622 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testUSSettlement));
3623 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testUSGovernmentBondMarket));
3624 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testUSNewYorkStockExchange));
3625 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testSOFR));
3626
3627 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testSouthKoreanSettlement));
3628 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testKoreaStockExchange));
3629
3630 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testChinaSSE));
3631 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testChinaIB));
3632
3633 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testModifiedCalendars));
3634 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testJointCalendars));
3635 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testBespokeCalendars));
3636
3637 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testEndOfMonth));
3638 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testBusinessDaysBetween));
3639
3640 #ifdef QL_HIGH_RESOLUTION_DATE
3641 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testIntradayAddHolidays));
3642 #endif
3643 suite->add(QUANTLIB_TEST_CASE(&CalendarTest::testDayLists));
3644
3645 return suite;
3646}
3647

source code of quantlib/test-suite/calendars.cpp