| /* Copyright (c) 2003-2004 CrystalClear Software, Inc. |
| * Subject to the Boost Software License, Version 1.0. |
| * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) |
| * Author: Jeff Garland, Bart Garst |
| * $Date: 2008-11-26 16:07:14 -0500 (Wed, 26 Nov 2008) $ |
| */ |
| |
| #include "boost/date_time/gregorian/gregorian.hpp" |
| #include "boost/date_time/local_time/dst_transition_day_rules.hpp" |
| #include "boost/shared_ptr.hpp" |
| #include "../testfrmwk.hpp" |
| |
| |
| |
| // see http://www.timeanddate.com/time/aboutdst.html for some info |
| // also |
| int |
| main() |
| { |
| // using namespace boost::posix_time; |
| using namespace boost::local_time; |
| using namespace boost::gregorian; |
| |
| boost::shared_ptr<dst_calc_rule> |
| rule1(new partial_date_dst_rule(partial_date(30,Apr), |
| partial_date(30,Oct))); |
| |
| check("partial date rule", rule1->start_day(2001) == date(2001, Apr, 30)); |
| check("partial date rule", rule1->end_day(2001) == date(2001, Oct, 30)); |
| |
| boost::shared_ptr<dst_calc_rule> |
| rule2(new first_last_dst_rule(first_last_dst_rule::start_rule(Sunday,Apr), |
| first_last_dst_rule::end_rule(Sunday,Oct))); |
| |
| check("first last rule", rule2->start_day(2001) == date(2001, Apr, 1)); |
| check("first last rule", rule2->end_day(2001) == date(2001, Oct, 28)); |
| |
| boost::shared_ptr<dst_calc_rule> |
| rule3(new last_last_dst_rule(last_last_dst_rule::start_rule(Sunday,Mar), |
| last_last_dst_rule::end_rule(Sunday,Oct))); |
| |
| check("last last rule", rule3->start_day(2001) == date(2001, Mar, 25)); |
| check("last last rule", rule3->end_day(2001) == date(2001, Oct, 28)); |
| |
| typedef nth_kday_of_month nkday; |
| boost::shared_ptr<dst_calc_rule> |
| rule4(new nth_last_dst_rule(nth_last_dst_rule::start_rule(nkday::first,Sunday,Mar), |
| nth_last_dst_rule::end_rule(Sunday,Oct))); |
| |
| check("nth Last rule", rule4->start_day(2001) == date(2001, Mar, 4)); |
| check("nth Last rule", rule4->end_day(2001) == date(2001, Oct, 28)); |
| |
| boost::shared_ptr<dst_calc_rule> |
| rule5(new nth_kday_dst_rule(nth_kday_dst_rule::start_rule(nkday::first,Sunday,Mar), |
| nth_kday_dst_rule::end_rule(nkday::fourth,Sunday,Oct))); |
| |
| check("nth_kday rule", rule5->start_day(2001) == date(2001, Mar, 4)); |
| check("nth_kday rule", rule5->end_day(2001) == date(2001, Oct, 28)); |
| |
| |
| |
| return printTestStats(); |
| |
| } |
| |