test_doc
test_Stoploss.cpp
浏览该文件的文档.
1 /*
2  * test_Stoploss.cpp
3  *
4  * Created on: 2013-3-13
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_trade_sys_suite
13  #include <boost/test/unit_test.hpp>
14 #endif
15 
16 #include <hikyuu/StockManager.h>
17 #include <hikyuu/trade_sys/stoploss/StoplossBase.h>
18 
19 using namespace hku;
20 
21 class StoplossTest: public StoplossBase {
22 public:
23  StoplossTest(): StoplossBase("StoplossTest"), m_x(0) {}
24  virtual ~StoplossTest() {}
25 
26  virtual price_t getPrice(const Datetime& datetime, price_t price) {
27  return m_x < 10 ? 0.0 : 1.0;
28  }
29 
30  virtual void _reset() {
31  m_x = 0;
32  }
33 
34  virtual StoplossPtr _clone() {
35  StoplossTest *p = new StoplossTest;
36  p->m_x = m_x;
37  return StoplossPtr(p);
38  }
39 
40  virtual void _calculate() {}
41 
42  int getX() const { return m_x;}
43  void setX(int x) { m_x = x; }
44 
45 private:
46  int m_x;
47 };
48 
56 BOOST_AUTO_TEST_CASE( test_Stoploss) {
58  StoplossPtr p(new StoplossTest);
59  BOOST_CHECK(p->name() == "StoplossTest");
60  BOOST_CHECK(p->getPrice(Datetime(200101010000), 1.0) == 0.0);
61  StoplossTest *p_src = (StoplossTest *)p.get();
62  BOOST_CHECK(p_src->getX() == 0);
63 
64  p_src->setX(10);
65  BOOST_CHECK(p->getPrice(Datetime(200101010000), 1.0) == 1.0);
66  BOOST_CHECK(p_src->getX() == 10);
67  p->reset();
68  BOOST_CHECK(p_src->getX() == 0);
69 
71  p_src->setX(10);
72  StoplossPtr p_clone = p->clone();
73  BOOST_CHECK(p_clone->name() == "StoplossTest");
74  p_src = (StoplossTest *)p_clone.get();
75  BOOST_CHECK(p_src->getX() == 10);
76  BOOST_CHECK(p != p_clone);
77 }
78 
void setX(int x)
int getX() const
virtual void _calculate()
virtual ~StoplossTest()
virtual void _reset()
virtual price_t getPrice(const Datetime &datetime, price_t price)
virtual StoplossPtr _clone()
BOOST_AUTO_TEST_CASE(test_Stoploss)