00001
00010 #include "scalt0.hpp"
00011
00012 #include <iostream>
00013
00014 #include <ql/utilities/tracing.hpp>
00015
00016 #include "scal0.hpp"
00017
00018 #include "eleve/src/typing3.hpp"
00019 #include "eleve/src/typing1.hpp"
00020
00021 #include "types0.cpp"
00022
00023 BOOST_AUTO_TEST_SUITE (typing1)
00024
00025 BOOST_AUTO_TEST_CASE(tas3)
00026 {
00027 BOOST_TEST_MESSAGE("eepgwde::detail::as3");
00028
00029 using namespace eepgwde::detail;
00030
00031 {
00032 std::string s("1");
00033 boost::any o(s);
00034
00035 unsigned long ul = 0;
00036 unsigned long * p;
00037 BOOST_CHECK( (p = as(&ul, o)) );
00038
00039 if (p)
00040 BOOST_TEST_MESSAGE( s << " " << ul << " "
00041 << boost::any(ul).type().name());
00042 }
00043
00044 {
00045 std::string s("1");
00046 boost::any o(s);
00047
00048 Rate0 ul = 0;
00049 Rate0 * p;
00050 BOOST_CHECK( (p = as(&ul, o)) );
00051
00052 if (p)
00053 BOOST_TEST_MESSAGE( s << " " << ul << " "
00054 << boost::any(ul).type().name());
00055 }
00056
00057 {
00058 std::string s("2009-11-12");
00059 boost::any o(s);
00060
00061 posixdate ul;
00062 posixdate * p;
00063 BOOST_CHECK( (p = as(&ul, o)) );
00064
00065 if (p)
00066 BOOST_TEST_MESSAGE( s << " " << ul << " "
00067 << boost::any(ul).type().name());
00068 }
00069
00070 {
00071 std::string s("11-12-2009");
00072 boost::any o(s);
00073
00074 usdate ul;
00075 usdate * p;
00076 BOOST_CHECK( (p = as(&ul, o)) );
00077
00078 if (p)
00079 BOOST_TEST_MESSAGE( s << " " << ul << " "
00080 << boost::any(ul).type().name());
00081 }
00082
00083 }
00084
00085 BOOST_AUTO_TEST_CASE(tas0)
00086 {
00087 BOOST_TEST_MESSAGE("eepgwde::detail::as0");
00088
00089 using namespace eepgwde::detail;
00090
00091 int d;
00092 std::string s;
00093 if (as(&d, boost::any( (null0<int>())()) ) )
00094 s = boost::lexical_cast<std::string>(d);
00095
00096 BOOST_TEST_MESSAGE( "int: " << d );
00097 BOOST_TEST_MESSAGE( "int: " << (null0<int>())() );
00098 BOOST_TEST_MESSAGE( "int: " << s);
00099 BOOST_CHECK( d == (null0<int>())() );
00100 }
00101
00102 BOOST_AUTO_TEST_CASE(tas1)
00103 {
00104 BOOST_TEST_MESSAGE("eepgwde::detail::as1");
00105
00106 using namespace eepgwde::detail;
00107
00108 double d;
00109 std::string s;
00110 if (as(&d, boost::any( (null0<double>())()) ) )
00111 s = boost::lexical_cast<std::string>(d);
00112
00113 BOOST_TEST_MESSAGE( "double: " << d );
00114 BOOST_TEST_MESSAGE( "double: " << (null0<double>())() );
00115 BOOST_TEST_MESSAGE( "double: " << s);
00116 BOOST_CHECK( d == (null0<double>())() );
00117 }
00118
00119 BOOST_AUTO_TEST_SUITE_END()
00120
00121 #include <locale>
00122 #include <boost/date_time/posix_time/posix_time.hpp>
00123 #include <boost/date_time/gregorian/parsers.hpp>
00124 #include <boost/date_time/gregorian/gregorian.hpp>
00125 #include <boost/date_time/local_time/local_time.hpp>
00126
00127 BOOST_AUTO_TEST_SUITE (date0)
00128
00129 using namespace boost::gregorian;
00130 using namespace boost::local_time;
00131 using namespace boost::posix_time;
00132 using namespace std;
00133
00134 using namespace eepgwde::detail;
00135
00136 BOOST_AUTO_TEST_CASE(format0)
00137 {
00138 BOOST_TEST_MESSAGE("eepgwde::boost::date");
00139
00140 posixdate d( date(2004, Feb, 29) );
00141 time_duration td(12,34,56,789);
00142 stringstream ss;
00143 ss << d << ' ' << td;
00144 ptime pt(not_a_date_time);
00145 cerr << pt << endl;
00146 ss >> pt;
00147 cerr << pt << endl;
00148 ss.str("");
00149 ss << pt << " EDT-05EDT,M4.1.0,M10.5.0";
00150 local_date_time ldt(not_a_date_time);
00151 ss >> ldt;
00152 cerr << ldt << endl;
00153
00154 local_time_facet* output_facet = new local_time_facet();
00155 local_time_input_facet* input_facet = new local_time_input_facet();
00156 ss.imbue(locale(locale::classic(), output_facet));
00157 ss.imbue(locale(ss.getloc(), input_facet));
00158
00159 output_facet->format("%a %b %d, %H:%M %z");
00160 ss.str("");
00161 ss << ldt;
00162 cerr << ss.str() << endl;
00163
00164 output_facet->format(local_time_facet::iso_time_format_specifier);
00165 ss.str("");
00166 ss << ldt;
00167 cerr << ss.str() << endl;
00168
00169 output_facet->format(local_time_facet::iso_time_format_extended_specifier);
00170 ss.str("");
00171 ss << ldt;
00172 cerr << ss.str() << endl;
00173
00174 }
00175
00176 void trier(date & dt, std::string & sdt) {
00177 cerr << sdt << endl;
00178
00179 try {
00180 dt = from_simple_string(sdt);
00181 cerr << "simple: " << dt << endl;
00182 } catch (...) {
00183 }
00184
00185 try {
00186 dt = from_us_string(sdt);
00187 cerr << "us: " << dt << endl;
00188 } catch (...) {
00189 }
00190
00191 try {
00192 dt = from_uk_string(sdt);
00193 cerr << "uk: " << dt << endl;
00194 } catch (...) {
00195 }
00196 }
00197
00198 BOOST_AUTO_TEST_CASE(format1)
00199 {
00200 BOOST_TEST_MESSAGE("eepgwde::boost::format1");
00201
00202 string sdt;
00203 date dt;
00204
00205 sdt = "2002-1-25";
00206 trier(dt, sdt);
00207
00208 sdt = "1/25/2002";
00209 trier(dt, sdt);
00210
00211 sdt = "25-1-2002";
00212 trier(dt, sdt);
00213 }
00214
00215 BOOST_AUTO_TEST_CASE(format2)
00216 {
00217 BOOST_TEST_MESSAGE("eepgwde::boost::format2");
00218
00219 string sdt;
00220 posixdate dt;
00221 boost::any o;
00222
00223 sdt = "2002-11-12";
00224 o = boost::any(sdt);
00225 dt = * eepgwde::detail::as(&dt, o);
00226 cerr << sdt << " " << dt << endl;
00227
00228 {
00229
00230 locale loc0 = locale();
00231 cerr << loc0.name() << endl;
00232 }
00233
00234 {
00235
00236
00237
00238
00239 locale loc0 = locale("");
00240 cerr << loc0.name() << endl;
00241 locale loc1 = locale("en_US");
00242 locale loc2 = locale(loc0, loc1, locale::time);
00243 cerr << loc2.name() << endl;
00244 locale::global(loc2);
00245 locale loc3;
00246 cerr << loc3.name() << endl;
00247
00248 locale locA = locale(locale::classic(), locale(), locale::time);
00249 locale locB = locale(locale::classic(), locale("en_US"), locale::time);
00250 cerr << locA.name() << endl;
00251 cerr << locB.name() << endl;
00252 bool a = locA == locB;
00253 cerr << a << endl;
00254 }
00255
00256 sdt = "11/12/2002";
00257 o = boost::any(sdt);
00258 cerr << sdt << " " << dt << endl;
00259
00260 sdt = "11-12-2002";
00261 o = boost::any(sdt);
00262 cerr << sdt << " " << dt << endl;
00263 }
00264
00265 BOOST_AUTO_TEST_CASE(locale0)
00266 {
00267 BOOST_TEST_MESSAGE("eepgwde::boost::locale0");
00268
00269 using namespace eepgwde::detail;
00270
00271 Typing t0;
00272 try {
00273 const std::locale & ours0 = t0.get();
00274 BOOST_TEST_MESSAGE( ours0.name() );
00275 } catch (...) {
00276 BOOST_TEST_MESSAGE( "bad locale" );
00277 }
00278
00279 t0.set(Typing::posix);
00280 BOOST_TEST_MESSAGE( locale().name() );
00281 const std::locale & ours1 = t0.get();
00282 BOOST_TEST_MESSAGE( ours1.name() );
00283 }
00284
00285 BOOST_AUTO_TEST_SUITE_END()
00286
00287
00288 BOOST_AUTO_TEST_SUITE(date1)
00289
00290
00291
00292 BOOST_AUTO_TEST_CASE(tas2)
00293 {
00294 BOOST_TEST_MESSAGE("eepgwde::detail::as2");
00295
00296 using eepgwde::daemon::Q;
00297 using namespace eepgwde::detail;
00298 using boost::gregorian::date;
00299
00300 Typing t0;
00301 try {
00302 const std::locale & ours0 = t0.get();
00303 } catch (...) {
00304 BOOST_TEST_MESSAGE( "bad locale" );
00305 }
00306
00307 posixdate d;
00308 std::string s;
00309
00310 s = "2009-11-12";
00311 {
00312 t0.set(Typing::posix);
00313 const std::locale & ours1 = t0.get();
00314
00315 if (as(&d, boost::any(s)))
00316 s = boost::lexical_cast<std::string>(d);
00317 }
00318
00319 BOOST_TEST_MESSAGE( "date(date): " << d );
00320 BOOST_TEST_MESSAGE( "date: " << s);
00321
00322 s = "2009-11-12";
00323 {
00324 t0.set(Typing::uk);
00325 const std::locale & ours1 = t0.get();
00326
00327 if (as(&d, boost::any(s)))
00328 s = boost::lexical_cast<std::string>(d);
00329 }
00330
00331 BOOST_TEST_MESSAGE( "date(date): " << d );
00332 BOOST_TEST_MESSAGE( "date: " << s);
00333
00334 s = "2009-11-12";
00335 {
00336 t0.set(Typing::us);
00337 const std::locale & ours1 = t0.get();
00338
00339 if (as(&d, boost::any(s)))
00340 s = boost::lexical_cast<std::string>(d);
00341 }
00342
00343 BOOST_TEST_MESSAGE( "date(date): " << d );
00344 BOOST_TEST_MESSAGE( "date: " << s);
00345 }
00346
00347 BOOST_AUTO_TEST_CASE(tas3)
00348 {
00349 BOOST_TEST_MESSAGE("eepgwde::detail::tas3");
00350
00351 using eepgwde::daemon::Q;
00352 using namespace eepgwde::detail;
00353 using boost::gregorian::date;
00354
00355 Typing t0;
00356 try {
00357 const std::locale & ours0 = t0.get();
00358 } catch (...) {
00359 BOOST_TEST_MESSAGE( "bad locale" );
00360 }
00361
00362 boost::gregorian::date dt;
00363 std::string s;
00364
00365 s = "2009-11-12";
00366 BOOST_TEST_MESSAGE( "date(in): " << s);
00367 {
00368 t0.set(Typing::posix);
00369 const std::locale & ours1 = t0.get();
00370
00371 posixdate d;
00372 if (as(&d, boost::any(s)))
00373 s = boost::lexical_cast<std::string>(d);
00374 dt = d;
00375 }
00376 BOOST_TEST_MESSAGE( "date(date): " << boost::gregorian::to_simple_string(dt) );
00377 BOOST_TEST_MESSAGE( "date(out): " << s);
00378
00379 s = "12-11-2009";
00380 BOOST_TEST_MESSAGE( "date(in): " << s);
00381 {
00382 t0.set(Typing::uk);
00383 const std::locale & ours1 = t0.get();
00384
00385 usdate d;
00386 if (as(&d, boost::any(s)))
00387 s = boost::lexical_cast<std::string>(d);
00388 dt = d;
00389 }
00390 BOOST_TEST_MESSAGE( "date(date): " << dt );
00391 BOOST_TEST_MESSAGE( "date(out): " << s);
00392
00393 s = "11-12-2009";
00394 BOOST_TEST_MESSAGE( "date(in): " << s);
00395 {
00396 t0.set(Typing::us);
00397 const std::locale & ours1 = t0.get();
00398
00399 eudate d;
00400 if (as(&d, boost::any(s)))
00401 s = boost::lexical_cast<std::string>(d);
00402 dt = d;
00403 }
00404 BOOST_TEST_MESSAGE( "date(date): " << dt );
00405 BOOST_TEST_MESSAGE( "date(out): " << s);
00406 }
00407
00408
00409
00410 BOOST_AUTO_TEST_CASE(tas4)
00411 {
00412 BOOST_TEST_MESSAGE("eepgwde::detail::as4");
00413
00414 using eepgwde::daemon::Q;
00415 using namespace eepgwde::detail;
00416 using boost::gregorian::date;
00417
00418 usdate d;
00419 std::string s;
00420
00421 s = "2009-11-12";
00422 s = "11-30-2009";
00423 BOOST_TEST_MESSAGE( "date(in): " << s);
00424 {
00425 if (as<usdate>(&d, boost::any(s)))
00426 s = boost::lexical_cast<std::string>(d);
00427 }
00428 BOOST_TEST_MESSAGE( "date(date): " << d );
00429 BOOST_TEST_MESSAGE( "date(out): " << s);
00430
00431 boost::any o(d);
00432 std::cerr << as(o) << std::endl;
00433 }
00434
00435 BOOST_AUTO_TEST_CASE(tas5)
00436 {
00437 BOOST_TEST_MESSAGE("eepgwde::detail::as5");
00438
00439 using eepgwde::daemon::Q;
00440 using namespace eepgwde::detail;
00441 using boost::gregorian::date;
00442
00443 eudate d;
00444 std::string s;
00445
00446 s = "2009-11-12";
00447 s = "12-11-2009";
00448 BOOST_TEST_MESSAGE( "date(in): " << s);
00449 {
00450 if (as<eudate>(&d, boost::any(s)))
00451 s = boost::lexical_cast<std::string>(d);
00452 }
00453 BOOST_TEST_MESSAGE( "date(date): " << d );
00454 BOOST_TEST_MESSAGE( "date(out): " << s);
00455
00456 boost::any o(d);
00457 std::cerr << as(o) << std::endl;
00458 }
00459
00460 BOOST_AUTO_TEST_CASE(tas6)
00461 {
00462 BOOST_TEST_MESSAGE("eepgwde::detail::as6");
00463
00464 using eepgwde::daemon::Q;
00465 using namespace eepgwde::detail;
00466 using boost::gregorian::date;
00467
00468 eudate d;
00469 std::string s;
00470
00471 s = "2009-11-12";
00472 s = "12-11-2009";
00473 BOOST_TEST_MESSAGE( "date(in): " << s);
00474 {
00475 if (as<eudate>(&d, boost::any(s)))
00476 s = boost::lexical_cast<std::string>(d);
00477 }
00478 BOOST_TEST_MESSAGE( "date(date): " << d );
00479 BOOST_TEST_MESSAGE( "date(out): " << s);
00480
00481 boost::any o(d);
00482 std::cerr << as(o) << std::endl;
00483 }
00484
00485 BOOST_AUTO_TEST_CASE(tas7)
00486 {
00487 BOOST_TEST_MESSAGE("eepgwde::detail::as7");
00488
00489 using namespace eepgwde::detail;
00490
00491 {
00492
00493 rate d;
00494 std::string s;
00495
00496 s = "4.5";
00497 BOOST_TEST_MESSAGE( "rate(in): " << s);
00498 {
00499 if (as<rate>(&d, boost::any(s)))
00500 s = boost::lexical_cast<std::string>(d);
00501 }
00502 BOOST_TEST_MESSAGE( "rate(rate): " << d );
00503 BOOST_TEST_MESSAGE( "rate(out): " << s);
00504
00505 boost::any o(d);
00506 std::cerr << as(o) << std::endl;
00507 }
00508
00509 {
00510
00511 double a = 0.045;
00512 double a0;
00513 std::string s;
00514 BOOST_TEST_MESSAGE( "rate(in): " << a);
00515 {
00516 if (as<double>(&a0, boost::any(a)))
00517 s = boost::lexical_cast<std::string>(a0);
00518 }
00519 BOOST_TEST_MESSAGE( "rate(double): " << a0);
00520 BOOST_TEST_MESSAGE( "rate(out): " << s);
00521 BOOST_CHECK( a == a0);
00522
00523 boost::any o(a0);
00524 std::cerr << as(o) << std::endl;
00525 }
00526
00527 }
00528
00529 BOOST_AUTO_TEST_CASE(tas8)
00530 {
00531 BOOST_TEST_MESSAGE("eepgwde::detail::as8");
00532
00533 using eepgwde::daemon::Q;
00534 using namespace eepgwde::detail;
00535 using boost::gregorian::date;
00536
00537 bps d;
00538 std::string s;
00539
00540 s = "450";
00541 BOOST_TEST_MESSAGE( "bps(in): " << s);
00542 {
00543 if (as<bps>(&d, boost::any(s)))
00544 s = boost::lexical_cast<std::string>(d);
00545 }
00546 BOOST_TEST_MESSAGE( "bps(bps): " << d );
00547 BOOST_TEST_MESSAGE( "bps(out): " << s);
00548
00549 boost::any o(d);
00550 std::cerr << as(o) << std::endl;
00551 }
00552
00553 BOOST_AUTO_TEST_SUITE_END()
00554
00555 BOOST_AUTO_TEST_SUITE(tzs)
00556
00557 BOOST_AUTO_TEST_CASE(tzs0)
00558 {
00559 BOOST_TEST_MESSAGE("eepgwde::detail::zs0");
00560
00561 using namespace eepgwde::detail;
00562 using boost::gregorian::date;
00563
00564 int d;
00565 std::string s;
00566
00567 s = "450";
00568 BOOST_TEST_MESSAGE( "int(in): " << s);
00569 boost::any o(s);
00570 {
00571 as<int>(&d, o);
00572 s = boost::lexical_cast<std::string>(d);
00573 }
00574 BOOST_TEST_MESSAGE( "int(int): " << d );
00575 BOOST_TEST_MESSAGE( "int(out): " << s);
00576
00577 }
00578
00579 BOOST_AUTO_TEST_CASE(tzs1)
00580 {
00581 BOOST_TEST_MESSAGE("eepgwde::detail::zs1");
00582
00583 using namespace eepgwde::detail;
00584 using boost::gregorian::date;
00585
00586 int d;
00587 std::string s;
00588
00589 s = "450";
00590 BOOST_TEST_MESSAGE( "int(in): " << s);
00591 boost::any o(s);
00592 {
00593 d = renderer<int>(o, (null0<int>())(), 0);
00594 s = boost::lexical_cast<std::string>(d);
00595 }
00596 BOOST_TEST_MESSAGE( "int(int): " << d );
00597 BOOST_TEST_MESSAGE( "int(out): " << s);
00598
00599 }
00600
00601 BOOST_AUTO_TEST_SUITE_END()