10 #include <boost/test/unit_test.hpp> 12 #define BOOST_TEST_MODULE test_hikyuu_utilities 13 #include <boost/test/unit_test.hpp> 16 #include <hikyuu/Log.h> 17 #include <hikyuu/utilities/Parameter.h> 18 #include <hikyuu/StockManager.h> 20 #if HKU_SUPPORT_SERIALIZATION 22 #include <boost/archive/xml_oarchive.hpp> 23 #include <boost/archive/xml_iarchive.hpp> 39 param.set<
int>(
"n", 1);
40 param.set<
bool>(
"bool",
true);
41 param.set<
double>(
"double", 10);
42 param.set<
string>(
"string",
"test");
43 BOOST_CHECK(param.get<
int>(
"n") == 1);
44 BOOST_CHECK(param.get<
bool>(
"bool") ==
true);
45 BOOST_CHECK(param.get<
double>(
"double") == 10.0);
46 BOOST_CHECK(param.get<
string>(
"string") ==
"test");
47 param.set<
int>(
"n", 10);
48 param.set<
bool>(
"bool",
false);
49 param.set<
double>(
"double", 10.01);
50 param.set<
string>(
"string",
"test2");
51 BOOST_CHECK(param.get<
int>(
"n") == 10);
52 BOOST_CHECK(param.get<
bool>(
"bool") ==
false);
53 BOOST_CHECK(param.get<
double>(
"double") == 10.01);
54 BOOST_CHECK(param.get<
string>(
"string") ==
"test2");
57 BOOST_CHECK_THROW(param.set<
size_t>(
"n", 10), std::logic_error);
58 BOOST_CHECK_THROW(param.set<
float>(
"n", 10.0), std::logic_error);
61 BOOST_CHECK_THROW(param.set<
float>(
"n", 10.0), std::logic_error);
62 BOOST_CHECK_THROW(param.set<
float>(
"bool", 10.0), std::logic_error);
63 BOOST_CHECK_THROW(param.set<
float>(
"double", 10.0), std::logic_error);
67 p1.set<
string>(
"string",
"test");
68 p1.set<
bool>(
"bool",
true);
69 p1.set<
double>(
"double", 0.01);
70 p1.set<
string>(
"test",
"test2");
72 p2.set<
double>(
"double", 0.01);
73 p2.set<
string>(
"test",
"test2");
74 p2.set<
string>(
"string",
"test");
75 p2.set<
bool>(
"bool",
true);
81 #if HKU_SUPPORT_SERIALIZATION 84 string filename(StockManager::instance().tmpdir());
85 filename +=
"/Parameter.xml";
89 p1.set<
bool>(
"bool",
true);
90 p1.set<
double>(
"p", 0.101);
91 p1.set<
string>(
"string",
"This is string!");
93 std::ofstream ofs(filename);
94 boost::archive::xml_oarchive oa(ofs);
95 oa << BOOST_SERIALIZATION_NVP(p1);
100 std::ifstream ifs(filename);
101 boost::archive::xml_iarchive ia(ifs);
102 ia >> BOOST_SERIALIZATION_NVP(p2);
105 BOOST_CHECK(p2.get<
int>(
"n") == 10);
106 BOOST_CHECK(p2.get<
bool>(
"bool") ==
true);
107 BOOST_CHECK(p2.get<
double>(
"p") == 0.101);
108 BOOST_CHECK(p2.get<
string>(
"string") ==
"This is string!");
BOOST_AUTO_TEST_CASE(test_Parameter)