test_doc
test_LOGIC.cpp
浏览该文件的文档.
1 /*
2  * test_LOGIC.cpp
3  *
4  * Created on: 2017年7月13日
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_indicator_suite
12  #include <boost/test/unit_test.hpp>
13 #endif
14 
15 #include <hikyuu/StockManager.h>
16 #include <hikyuu/indicator/crt/IND_LOGIC.h>
17 #include <hikyuu/indicator/crt/PRICELIST.h>
18 #include <hikyuu/indicator/crt/KDATA.h>
19 
20 using namespace hku;
21 
29 BOOST_AUTO_TEST_CASE( test_LOGIC_AND ) {
30  PriceList d1, d2, d3;
31  for (size_t i = 0; i < 10; ++i) {
32  d1.push_back(0);
33  d2.push_back(1);
34  d3.push_back(i);
35  }
36 
37  Indicator data1 = PRICELIST(d1);
38  Indicator data2 = PRICELIST(d2);
39  Indicator data3 = PRICELIST(d3);
40 
42  Indicator result = IND_AND(data1, data2);
43  BOOST_CHECK(result.size() == 10);
44  BOOST_CHECK(result.getResultNumber() == 1);
45  BOOST_CHECK(result.discard() == 0);
46  for (size_t i = 0; i < 10; ++i) {
47  BOOST_CHECK(result[i] == 0.0);
48  }
49 
51  result = IND_AND(data1, 1.0);
52  BOOST_CHECK(result.size() == 10);
53  BOOST_CHECK(result.getResultNumber() == 1);
54  BOOST_CHECK(result.discard() == 0);
55  for (size_t i = 0; i < 10; ++i) {
56  BOOST_CHECK(result[i] == 0.0);
57  }
58 
60  result = IND_AND(data1, data3);
61  BOOST_CHECK(result.size() == 10);
62  BOOST_CHECK(result.getResultNumber() == 1);
63  BOOST_CHECK(result.discard() == 0);
64  for (size_t i = 0; i < 10; ++i) {
65  BOOST_CHECK(result[i] == 0.0);
66  }
67 
69  result = IND_AND(data2, data3);
70  BOOST_CHECK(result.size() == 10);
71  BOOST_CHECK(result.getResultNumber() == 1);
72  BOOST_CHECK(result.discard() == 0);
73  BOOST_CHECK(result[0] == 0.0);
74  for (size_t i = 1; i < 10; ++i) {
75  BOOST_CHECK(result[i] == 1.0);
76  }
77 
79  Indicator data4;
80  result = data1 < data4;
81  BOOST_CHECK(result.empty());
82  BOOST_CHECK(result.size() == 0);
83 
85  StockManager& sm = StockManager::instance();
86  Stock stock = sm.getStock("sh600000");
87  KQuery query(0, 10);
88  KData kdata = stock.getKData(query);
89  Indicator k = KDATA(kdata);
90  BOOST_CHECK(k.size() == data1.size());
91  result = (k < data1);
92  BOOST_CHECK(result.size() == k.size());
93  for (size_t i = 0; i < result.size(); ++i) {
94  BOOST_CHECK(result[i] == 0.0);
95  }
96 }
97 
99 BOOST_AUTO_TEST_CASE( test_LOGIC_OR ) {
100  PriceList d1, d2, d3;
101  for (size_t i = 0; i < 10; ++i) {
102  d1.push_back(0);
103  d2.push_back(1);
104  d3.push_back(i);
105  }
106 
107  Indicator data1 = PRICELIST(d1);
108  Indicator data2 = PRICELIST(d2);
109  Indicator data3 = PRICELIST(d3);
110 
112  Indicator result = IND_OR(data1, data2);
113  BOOST_CHECK(result.size() == 10);
114  BOOST_CHECK(result.getResultNumber() == 1);
115  BOOST_CHECK(result.discard() == 0);
116  for (size_t i = 0; i < 10; ++i) {
117  BOOST_CHECK(result[i] == 1.0);
118  }
119 
121  result = IND_OR(data1, 1.0);
122  BOOST_CHECK(result.size() == 10);
123  BOOST_CHECK(result.getResultNumber() == 1);
124  BOOST_CHECK(result.discard() == 0);
125  for (size_t i = 0; i < 10; ++i) {
126  BOOST_CHECK(result[i] == 1.0);
127  }
128 
130  result = IND_OR(data1, data3);
131  BOOST_CHECK(result.size() == 10);
132  BOOST_CHECK(result.getResultNumber() == 1);
133  BOOST_CHECK(result.discard() == 0);
134  BOOST_CHECK(result[0] == 0.0);
135  for (size_t i = 1; i < 10; ++i) {
136  BOOST_CHECK(result[i] == 1.0);
137  }
138 
140  result = IND_OR(data2, data3);
141  BOOST_CHECK(result.size() == 10);
142  BOOST_CHECK(result.getResultNumber() == 1);
143  BOOST_CHECK(result.discard() == 0);
144  for (size_t i = 0; i < 10; ++i) {
145  BOOST_CHECK(result[i] == 1.0);
146  }
147 
149  Indicator data4;
150  result = data1 < data4;
151  BOOST_CHECK(result.empty());
152  BOOST_CHECK(result.size() == 0);
153 
155  StockManager& sm = StockManager::instance();
156  Stock stock = sm.getStock("sh600000");
157  KQuery query(0, 10);
158  KData kdata = stock.getKData(query);
159  Indicator k = KDATA(kdata);
160  BOOST_CHECK(k.size() == data1.size());
161  result = (k < data1);
162  BOOST_CHECK(result.size() == k.size());
163  for (size_t i = 0; i < result.size(); ++i) {
164  BOOST_CHECK(result[i] == 0.0);
165  }
166 }
167 
BOOST_AUTO_TEST_CASE(test_LOGIC_AND)
Definition: test_LOGIC.cpp:29