test_doc
test_Condition.cpp
浏览该文件的文档.
1 /*
2  * test_Condition.cpp
3  *
4  * Created on: 2013-3-11
5  * Author: fasiondog
6  */
7 
8 #ifdef TEST_ALL_IN_ONE
9  #include <boost/test/unit_test.hpp>
10 #else
11  #define BOOST_TEST_MODULE test_hikyuu_trade_sys_suite
12  #include <boost/test/unit_test.hpp>
13 #endif
14 
15 #include <hikyuu/StockManager.h>
16 #include <hikyuu/trade_sys/condition/ConditionBase.h>
17 
18 using namespace hku;
19 
20 class ConditionTest: public ConditionBase {
21 public:
22  ConditionTest(): ConditionBase("TEST") {
23  setParam<int>("n", 10);
24  m_flag = false;
25  }
26 
28 
29  KData getKData() const {
30  return m_kdata;
31  }
32 
33  virtual void _calculate() {}
34  virtual void _reset() {
35  if (m_flag) {
36  m_flag = false;
37  } else {
38  m_flag = true;
39  }
40  }
41 
42  virtual ConditionPtr _clone() {
44  p->m_flag = m_flag;
45  return ConditionPtr(p);
46  }
47 
48 private:
49  bool m_flag;
50 
51 };
52 
60 BOOST_AUTO_TEST_CASE( test_Condition ) {
61  StockManager& sm = StockManager::instance();
62  Stock stock = sm.getStock("sh000001");
63  KQuery query(0, 10);
64  KData kdata = stock.getKData(query);
65  ConditionTest *p_src;
66 
68  ConditionPtr p(new ConditionTest);
69  p_src = (ConditionTest *)p.get();
70  BOOST_CHECK(p_src->getKData().getStock() == Null<Stock>());
71  p->setTO(kdata);
72  BOOST_CHECK(p_src->getKData().getStock() == stock);
73  p->reset();
74 
75  BOOST_CHECK(p->name() == "TEST");
76  BOOST_CHECK(p->getParam<int>("n") == 10);
77  BOOST_CHECK(p->isValid(Datetime(200001010000)) == false);
78  p->reset();
79  //BOOST_CHECK(p->isValid(Datetime(200001010000)) == true);
80 
82  p->setParam<int>("n", 20);
83  ConditionPtr p_clone = p->clone();
84  BOOST_CHECK(p != p_clone);
85  p_src = (ConditionTest *)p_clone.get();
86  BOOST_CHECK(p_src->getKData().getStock() == stock);
87 
88  p->setParam<int>("n", 30);
89  BOOST_CHECK(p->getParam<int>("n") == 30);
90  p->reset();
91  BOOST_CHECK(p->isValid(Datetime(200001010000)) == false);
92 
93  BOOST_CHECK(p_clone->name() == "TEST");
94  BOOST_CHECK(p_clone->getParam<int>("n") == 20);
95  //BOOST_CHECK(p_clone->isValid(Datetime(200001010000)) == true);
96  p_clone->reset();
97  BOOST_CHECK(p_clone->isValid(Datetime(200001010000)) == false);
98 }
99 
virtual ConditionPtr _clone()
KData getKData() const
virtual void _calculate()
BOOST_AUTO_TEST_CASE(test_Condition)
virtual void _reset()