test_doc
test_Parameter.cpp
浏览该文件的文档.
1 /*
2  * test_Parameter.cpp
3  *
4  * Created on: 2013-2-28
5  * Author: fasiondog
6  */
7 
8 
9 #ifdef TEST_ALL_IN_ONE
10  #include <boost/test/unit_test.hpp>
11 #else
12  #define BOOST_TEST_MODULE test_hikyuu_utilities
13  #include <boost/test/unit_test.hpp>
14 #endif
15 
16 #include <hikyuu/Log.h>
17 #include <hikyuu/utilities/Parameter.h>
18 #include <hikyuu/StockManager.h>
19 
20 #if HKU_SUPPORT_SERIALIZATION
21 #include <fstream>
22 #include <boost/archive/xml_oarchive.hpp>
23 #include <boost/archive/xml_iarchive.hpp>
24 #endif
25 
26 using namespace hku;
27 
35 BOOST_AUTO_TEST_CASE( test_Parameter ) {
36  Parameter param;
37 
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");
55 
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);
59 
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);
64 
66  Parameter p1, p2;
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");
71 
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);
76 
77  BOOST_CHECK(p1==p2);
78 }
79 
80 
81 #if HKU_SUPPORT_SERIALIZATION
82 
83 BOOST_AUTO_TEST_CASE( test_Parameter_serialize ) {
84  string filename(StockManager::instance().tmpdir());
85  filename += "/Parameter.xml";
86 
87  Parameter p1;
88  p1.set<int>("n", 10);
89  p1.set<bool>("bool", true);
90  p1.set<double>("p", 0.101);
91  p1.set<string>("string", "This is string!");
92  {
93  std::ofstream ofs(filename);
94  boost::archive::xml_oarchive oa(ofs);
95  oa << BOOST_SERIALIZATION_NVP(p1);
96  }
97 
98  Parameter p2;
99  {
100  std::ifstream ifs(filename);
101  boost::archive::xml_iarchive ia(ifs);
102  ia >> BOOST_SERIALIZATION_NVP(p2);
103  }
104 
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!");
109 }
110 #endif /* HKU_SUPPORT_SERIALIZATION */
111 
BOOST_AUTO_TEST_CASE(test_Parameter)