/*
Copyright (C) 2008
This source code is release under the BSD License.
This file is part of JQuantLib, a free-software/open-source library
for financial quantitative analysts and developers - http://jquantlib.org/
JQuantLib is free software: you can redistribute it and/or modify it
under the terms of the JQuantLib license. You should have received a
copy of the license along with this program; if not, please email
. The license is also available online at
.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the license for more details.
JQuantLib is based on QuantLib. http://quantlib.org/
When applicable, the original copyright notice follows this notice.
*/
package org.jquantlib.testsuite.calendars;
import static org.jquantlib.time.Month.April;
import static org.jquantlib.time.Month.December;
import static org.jquantlib.time.Month.February;
import static org.jquantlib.time.Month.January;
import static org.jquantlib.time.Month.July;
import static org.jquantlib.time.Month.June;
import static org.jquantlib.time.Month.March;
import static org.jquantlib.time.Month.May;
import static org.jquantlib.time.Month.October;
import static org.jquantlib.time.Month.September;
import java.util.ArrayList;
import java.util.List;
import org.jquantlib.QL;
import org.jquantlib.time.Calendar;
import org.jquantlib.time.Date;
import org.jquantlib.time.calendars.HongKong;
import org.junit.Test;
/**
* @author Richard Gomes
*/
public class HongKongCalendarTest {
public HongKongCalendarTest() {
QL.info("::::: "+this.getClass().getSimpleName()+" :::::");
}
// 2009 -- taken from Exchange website http://www.hkex.com.hk
// 1-Jan-09 Thursday The first day of JANUARY
// 26-Jan-09 Monday Lunar New Year's Day
// 27-Jan-09 Tuesday The second day of Lunar New Year
// 28-Jan-09 Wednesday The third day of Lunar New Year
// 10-Apr-09 Friday Good Friday
// 13-Apr-09 Monday Easter Monday
// 1-May-09 Friday Labour Day
// 28-May-09 Thursday Tuen Ng Festival
// 1-Jul-09 Wednesday Hong Kong Special Administrative Region Establishment Day
// 1-Oct-09 Thursday National Day
// 26-Oct-09 Monday Chung Yeung Festival
// 25-Dec-09 Friday Christmas Day
@Test public void testHongKongYear2009() {
final int year = 2009;
QL.info("Testing Hong Kong's holiday list for the year " + year + "...");
final Calendar c = new HongKong(HongKong.Market.HKEx);
final List expectedHol = new ArrayList();
expectedHol.add(new Date(1,January,year)); // The first day of JANUARY
// expectedHol.add(new Date(26,JANUARY,year)); // Lunar New Year's Day
// expectedHol.add(new Date(27,JANUARY,year)); // The second day of Lunar New Year
// expectedHol.add(new Date(28,JANUARY,year)); // The third day of Lunar New Year
expectedHol.add(new Date(10,April,year)); // Good Friday
expectedHol.add(new Date(13,April,year)); // Easter Monday
expectedHol.add(new Date(1,May,year)); // Labour Day
// expectedHol.add(new Date(28,MAY,year)); // Tuen Ng Festival
expectedHol.add(new Date(1,July,year)); // Hong Kong Special Administrative Region Establishment Day
expectedHol.add(new Date(1,October,year)); // National Day
// expectedHol.add(new Date(26,OCTOBER,year)); // Chung Yeung festival
expectedHol.add(new Date(25,December,year)); // Christmas Day
expectedHol.add(new Date(28,December,year));
new CalendarUtil().checkHolidayList(expectedHol, c, year);
}
// 2008 -- taken from Exchange website http://www.hkex.com.hk
// 1-Jan-08 Tuesday The first day of JANUARY
// 7-Feb-08 Thursday Lunar New Year's Day
// 8-Feb-08 Friday The second day of Lunar New Year
// 21-Mar-08 Friday Good Friday
// 24-Mar-08 Monday Easter Monday
// 4-Apr-08 Friday Ching Ming Festival
// 1-May-08 Thursday Labour Day
// 12-May-08 Monday The Buddha's Birthday
// 9-Jun-08 Monday The day following Tuen Ng Festival
// 1-Jul-08 Tuesday Hong Kong Special Administrative Region Establishment Day
// 15-Sep-08 Monday The day following Chinese Mid-Autumn Festival
// 1-Oct-08 Wednesday National Day
// 7-Oct-08 Tuesday Chung Yeung Festival
// 25-Dec-08 Thursday Christmas Day
// 26-Dec-08 Friday The first weekday after Christmas Day
@Test public void testHongKongYear2008() {
final int year = 2008;
QL.info("Testing Hong Kong's holiday list for the year " + year + "...");
final Calendar c = new HongKong(HongKong.Market.HKEx);
final List expectedHol = new ArrayList();
expectedHol.add(new Date(1,January,year)); // The first day of JANUARY
expectedHol.add(new Date(7,February,year)); // Lunar New Year's Day
expectedHol.add(new Date(8,February,year)); // The second day of Lunar New Year
expectedHol.add(new Date(21,March,year)); // Good Friday
expectedHol.add(new Date(24,March,year)); // Easter Monday
expectedHol.add(new Date(4,April,year)); // Ching Ming Festival
expectedHol.add(new Date(1,May,year)); // Labour Day
expectedHol.add(new Date(12,May,year)); // The Buddha's Birthday
expectedHol.add(new Date(9,June,year)); // The day following Tuen Ng Festival
expectedHol.add(new Date(1,July,year)); // Hong Kong Special Administrative Region Establishment Day
expectedHol.add(new Date(15,September,year)); // The day following Chinese Mid-Autumn Festival
expectedHol.add(new Date(1,October,year)); // National Day
expectedHol.add(new Date(7,October,year)); // Chung Yeung festival
expectedHol.add(new Date(25,December,year)); // Christmas Day
expectedHol.add(new Date(26,December,year)); // The first weekday after Christmas Day
new CalendarUtil().checkHolidayList(expectedHol, c, year);
}
// 2007 -- http://www.hkfastfacts.com/Hong-Kong-Festivals-2007.html
// 1-Jan-07 The first day of JANUARY
// 17-Feb-07 Lunar New Year's Day
// 18-Feb-07 The second day of Lunar New Year
// 5-Apr-07 Ching Ming Festival
// 6-Apr-07 Good Friday
// 9-Apr-07 Easter Monday
// 1-May-07 Labour Day
// 24-May-07 The Buddha's Birthday
// 19-Jun-07 The day following Tuen Ng Festival
// 2-Jul-07 Hong Kong Special Administrative Region Establishment Day
// 26-Sep-07 The day following Chinese Mid-Autumn Festival
// 1-Oct-07 National Day
// 19-Oct-07 Chung Yeung Festival
// 25-Dec-07 Christmas Day
// 26-Dec-07 The first weekday after Christmas Day
@Test public void testHongKongYear2007() {
final int year = 2007;
QL.info("Testing Hong Kong's holiday list for the year " + year + "...");
final Calendar c = new HongKong(HongKong.Market.HKEx);
final List expectedHol = new ArrayList();
expectedHol.add(new Date(1,January,year)); // The first day of JANUARY
expectedHol.add(new Date(1,May,year)); // Labour Day
expectedHol.add(new Date(1,October,year)); // National Day
expectedHol.add(new Date(25,December,year)); // Christmas Day
expectedHol.add(new Date(26,December,year)); // The first weekday after Christmas Day
expectedHol.add(new Date(19,February,year)); // 2 Lunar New Year's Day
expectedHol.add(new Date(20,February,year)); // The 3 day of Lunar New Year
expectedHol.add(new Date(5,April,year)); // Ching Ming Festival
expectedHol.add(new Date(6,April,year)); // Good Friday
expectedHol.add(new Date(9,April,year)); // Easter Monday
expectedHol.add(new Date(24,May,year)); // The Buddha's Birthday
expectedHol.add(new Date(19,June,year)); // The day following Tuen Ng Festival
expectedHol.add(new Date(2,July,year)); // day after Hong Kong Special Administrative Region Establishment Day
expectedHol.add(new Date(26,September,year)); // The day following Chinese Mid-Autumn Festival
expectedHol.add(new Date(19,October,year)); // Chung Yeung festival
new CalendarUtil().checkHolidayList(expectedHol, c, year);
}
// 2006 -- http://www.hkfastfacts.com/Hong-Kong-Festivals-2006.html
// 2-Jan-06 The 2 day of JANUARY
// 30-Jan-06 The 2 day Lunar New Year's Day
// 31-Jan-06 The 3 day of Lunar New Year
// 5-Apr-06 Ching Ming Festival
// 14-Apr-06 Good Friday
// 17-Apr-06 Easter Monday
// 1-May-06 Labour Day
// 5-May-06 The Buddha's Birthday
// 31-May-06 The Tuen Ng Festival
// 1-Jul-06 Saturday Hong Kong Special Administrative Region Establishment Day
// 2-Oct-06 The day after National Day
// 7-Oct-06 The day following Chinese Mid-Autumn Festival
// 30-Oct-06 Chung Yeung Festival
// 25-Dec-06 Christmas Day
// 26-Dec-06 The first weekday after Christmas Day
@Test public void testHongKongYear2006() {
final int year = 2006;
QL.info("Testing Hong Kong's holiday list for the year " + year + "...");
final Calendar c = new HongKong(HongKong.Market.HKEx);
final List expectedHol = new ArrayList();
expectedHol.add(new Date(1,January,year)); // The first day of JANUARY
expectedHol.add(new Date(1,May,year)); // Labour Day
expectedHol.add(new Date(1,October,year)); // National Day
expectedHol.add(new Date(25,December,year)); // Christmas Day
expectedHol.add(new Date(26,December,year)); // The first weekday after Christmas Day
expectedHol.remove(new Date(1,January,year));
expectedHol.remove(new Date(1,October,year));
expectedHol.add(new Date(2,January,year)); // 2 of the New Year's Day
expectedHol.add(new Date(30,January,year)); // 2 Lunar New Year's Day
expectedHol.add(new Date(31,January,year)); // The 3 day of Lunar New Year
expectedHol.add(new Date(5,April,year)); // Ching Ming Festival
expectedHol.add(new Date(14,April,year)); // Good Friday
expectedHol.add(new Date(17,April,year)); // Easter Monday
expectedHol.add(new Date(5,May,year)); // The Buddha's Birthday
expectedHol.add(new Date(31,May,year)); // The Tuen Ng Festival
expectedHol.add(new Date(3,July,year)); //Monday // day after Hong Kong Special Administrative Region Establishment Day
expectedHol.add(new Date(2,October,year)); // National Day
//expectedHol.add(new Date(7,OCTOBER,year)); saturday // The day following Chinese Mid-Autumn Festival
expectedHol.add(new Date(30,October,year)); // Chung Yeung festival
new CalendarUtil().checkHolidayList(expectedHol, c, year);
}
// 2005 -- http://www.hkfastfacts.com/Hong-Kong-Festivals-2005.html
// 3-Jan-05 Monday The 3 day of JANUARY
// 9-Feb-05 Lunar New Year's Day
// 10-Feb-05 The 2 day Lunar New Year's Day
// 11-Feb-05 The 3 day of Lunar New Year
// 25-Mar-05 Good Friday
// 28-Mar-05 Easter Monday
// 5-Apr-05 Ching Ming Festival
// 1-May-05 Sunday Labour Day
// 15-May-05 Sunday The Buddha's Birthday
// 11-Jun-05 Saturday The Tuen Ng Festival
// 1-Jul-05 Hong Kong Special Administrative Region Establishment Day
// 19-Sep-05 The Chinese Mid-Autumn Festival
// 1-Oct-05 Saturday The National Day
// 11-Oct-05 Chung Yeung Festival
// 25-Dec-05 Sunday Christmas Day
// 26-Dec-05 The first weekday after Christmas Day
@Test public void testHongKongYear2005() {
final int year = 2005;
QL.info("Testing Hong Kong's holiday list for the year " + year + "...");
final Calendar c = new HongKong(HongKong.Market.HKEx);
final List expectedHol = new ArrayList();
expectedHol.add(new Date(1,January,year)); // The first day of JANUARY
expectedHol.add(new Date(1,May,year)); // Labour Day
expectedHol.add(new Date(1,October,year)); // National Day
expectedHol.add(new Date(25,December,year)); // Christmas Day
expectedHol.add(new Date(26,December,year)); // The first weekday after Christmas Day
expectedHol.remove(new Date(1,January,year));
expectedHol.remove(new Date(1,May,year));
expectedHol.remove(new Date(1,October,year));
expectedHol.remove(new Date(25,December,year));
expectedHol.add(new Date(3,January,year)); // 3 of the New Year's Day
expectedHol.add(new Date(9,February,year)); // Lunar New Year's Day
expectedHol.add(new Date(10,February,year)); // 2 Lunar New Year's Day
expectedHol.add(new Date(11,February,year)); // The 3 day of Lunar New Year
expectedHol.add(new Date(25,March,year)); // Good Friday
expectedHol.add(new Date(28,March,year)); // Easter Monday
expectedHol.add(new Date(5,April,year)); // Ching Ming Festival
expectedHol.remove(new Date(2,May,year)); // Day after labor day
expectedHol.add(new Date(16,May,year)); // The day after Buddha's Birthday
//expectedHol.add(new Date(11,JUNE,year)); // The Tuen Ng Festival
expectedHol.add(new Date(1,July,year)); // Hong Kong Special Administrative Region Establishment Day
expectedHol.add(new Date(19,September,year)); // The day following Chinese Mid-Autumn Festival
expectedHol.add(new Date(3,October,year));
expectedHol.add(new Date(11,October,year)); // Chung Yeung festival
expectedHol.remove(new Date(27,December,year));
new CalendarUtil().checkHolidayList(expectedHol, c, year);
}
// 2005 -- http://www.hkfastfacts.com/Hong-Kong-Festivals-2004.html
// 1-Jan-04 1 day of JANUARY
// 22-Jan-04 Lunar New Year's Day
// 23-Jan-04 The 2 day Lunar New Year's Day
// 24-Jan-04 The 3 day of Lunar New Year
// 5-Apr-04 Ching Ming Festival
// 9-Apr-04 Good Friday
// 12-Apr-04 Easter Monday
// 1-May-04 Saturday Labour Day
// 26-May-04 The Buddha's Birthday
// 22-Jun-04 The Tuen Ng Festival
// 1-Jul-04 Hong Kong Special Administrative Region Establishment Day
// 28-Sep-04 The Chinese Mid-Autumn Festival
// 1-Oct-04 The National Day
// 22-Oct-04 Chung Yeung Festival
// 25-Dec-04 Sunday Christmas Day
// 27-Dec-04 The second weekday after Christmas Day
@Test public void testHongKongYear2004() {
final int year = 2004;
QL.info("Testing Hong Kong's holiday list for the year " + year + "...");
final Calendar c = new HongKong(HongKong.Market.HKEx);
final List expectedHol = new ArrayList();
expectedHol.add(new Date(1,January,year)); // The first day of JANUARY
expectedHol.add(new Date(1,May,year)); // Labour Day
expectedHol.add(new Date(1,October,year)); // National Day
expectedHol.add(new Date(25,December,year)); // Christmas Day
expectedHol.add(new Date(26,December,year)); // The first weekday after Christmas Day
expectedHol.remove(new Date(1,May,year)); // Labour Day
expectedHol.add(new Date(22,January,year)); // Lunar New Year's Day
expectedHol.add(new Date(23,January,year)); // 2 Lunar New Year's Day
// expectedHol.add(new Date(24,JANUARY,year)); // The 3 day of Lunar New Year
expectedHol.add(new Date(5,April,year)); // Ching Ming Festival
expectedHol.add(new Date(9,April,year)); // Good Friday
expectedHol.add(new Date(12,April,year)); // Easter Monday
expectedHol.add(new Date(26,May,year)); // The Buddha's Birthday
expectedHol.add(new Date(22,June,year)); // The Tuen Ng Festival
expectedHol.add(new Date(1,July,year)); // Hong Kong Special Administrative Region Establishment Day
expectedHol.add(new Date(29,September,year)); // The day after Chinese Mid-Autumn Festival
//expectedHol.add(new Date(22,OCTOBER,year)); // Chung Yeung festival
expectedHol.remove(new Date(25,December,year));
expectedHol.remove(new Date(26,December,year));
expectedHol.add(new Date(27,December,year));
new CalendarUtil().checkHolidayList(expectedHol, c, year);
}
}
Ads help maintain this website.