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 | }
|
---|