| 1 | #include <boost/date_time/gregorian/gregorian.hpp>
|
|---|
| 2 | #include <boost/date_time/gregorian/greg_facet.hpp>
|
|---|
| 3 | #include <boost/test/unit_test.hpp>
|
|---|
| 4 | #include <sstream>
|
|---|
| 5 | #include <iostream>
|
|---|
| 6 |
|
|---|
| 7 | namespace {
|
|---|
| 8 |
|
|---|
| 9 | boost::gregorian::date to_greg_date(const std::string& _facet_form, const std::string& _date_string )
|
|---|
| 10 | {
|
|---|
| 11 | std::stringstream ssDate;
|
|---|
| 12 | boost::gregorian::date_input_facet* date_input_facet(new boost::gregorian::date_input_facet(_facet_form));
|
|---|
| 13 | ssDate.imbue(std::locale(ssDate.getloc(), date_input_facet));
|
|---|
| 14 |
|
|---|
| 15 | boost::gregorian::date d;
|
|---|
| 16 |
|
|---|
| 17 | ssDate << _date_string;
|
|---|
| 18 | ssDate >> d;
|
|---|
| 19 |
|
|---|
| 20 | return d;
|
|---|
| 21 | }
|
|---|
| 22 |
|
|---|
| 23 | } // anonymous namespace
|
|---|
| 24 |
|
|---|
| 25 | void simple_gregorian_date_facet_test()
|
|---|
| 26 | {
|
|---|
| 27 | using namespace boost::gregorian;
|
|---|
| 28 | boost::gregorian::date d07jan29(2007,Jan,29);
|
|---|
| 29 |
|
|---|
| 30 | BOOST_CHECK_EQUAL( to_greg_date("%Y/%m/%d","2007/01/29") , d07jan29);
|
|---|
| 31 | BOOST_CHECK_EQUAL( to_greg_date("%m/%d/%Y","01/29/2007") , d07jan29);
|
|---|
| 32 | BOOST_CHECK_EQUAL( to_greg_date("%d/%m/%Y","29/01/2007") , d07jan29);
|
|---|
| 33 | BOOST_CHECK_EQUAL( to_greg_date("%Y/%d/%m","2007/29/01") , d07jan29);
|
|---|
| 34 | BOOST_CHECK_EQUAL( to_greg_date("%d/%Y/%m","29/2007/01") , d07jan29);
|
|---|
| 35 | BOOST_CHECK_EQUAL( to_greg_date("%m/%Y/%d","01/2007/29") , d07jan29);
|
|---|
| 36 | }
|
|---|
| 37 |
|
|---|
| 38 | using boost::unit_test::test_suite;
|
|---|
| 39 |
|
|---|
| 40 | test_suite* init_unit_test_suite(int argc, char* argv[])
|
|---|
| 41 | {
|
|---|
| 42 | test_suite* test = BOOST_TEST_SUITE("simple_gregorian_date_facet_test");
|
|---|
| 43 | test->add( BOOST_TEST_CASE( &simple_gregorian_date_facet_test ) );
|
|---|
| 44 | return test;
|
|---|
| 45 | }
|
|---|