test_doc
test_KData.cpp
浏览该文件的文档.
1 /*
2  * test_Stock.cpp
3  *
4  * Created on: 2011-12-10
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_base
12  #include <boost/test/unit_test.hpp>
13 #endif
14 
15 #include <cmath>
16 #include <hikyuu/StockManager.h>
17 #include <hikyuu/KQuery.h>
18 #include <hikyuu/KData.h>
19 #include <hikyuu/Stock.h>
20 
21 using namespace hku;
22 
30 BOOST_AUTO_TEST_CASE( test_getDatetimeList ) {
31  StockManager& sm = StockManager::instance();
32  Stock stock;
33  KData kdata;
34  KQuery query;
35  DatetimeList result;
36 
38  result = kdata.getDatetimeList();
39  BOOST_CHECK(result.empty());
40 
42  stock = sm.getStock("sh600000");
43  query = KQuery(0, 1, KQuery::DAY);
44  kdata = stock.getKData(query);
45  result = kdata.getDatetimeList();
46  BOOST_CHECK(result.size() == 1);
47  BOOST_CHECK(result.front() == Datetime(199911100000));
48 
49  query = KQuery(0, Null<int>(), KQuery::DAY);
50  kdata = stock.getKData(query);
51  result = kdata.getDatetimeList();
52  BOOST_CHECK(result.size() == 2836);
53  BOOST_CHECK(result[0] == Datetime(199911100000));
54  BOOST_CHECK(result[10] == Datetime(199911240000));
55  BOOST_CHECK(result[2835] == Datetime(201112060000));
56 
57  query = KQuery(1, 10, KQuery::WEEK);
58  kdata = stock.getKData(query);
59  result = kdata.getDatetimeList();
60  BOOST_CHECK(result.size() == 9);
61  BOOST_CHECK(result[0] == Datetime(199911190000));
62  BOOST_CHECK(result[1] == Datetime(199911260000));
63  BOOST_CHECK(result[8] == Datetime(200001140000));
64 
65  query = KQuery(1, 10, KQuery::MONTH);
66  kdata = stock.getKData(query);
67  result = kdata.getDatetimeList();
68  BOOST_CHECK(result.size() == 9);
69  BOOST_CHECK(result[0] == Datetime(199912310000));
70  BOOST_CHECK(result[1] == Datetime(200001310000));
71  BOOST_CHECK(result[8] == Datetime(200008310000));
72 
73  query = KQuery(1, 10, KQuery::QUARTER);
74  kdata = stock.getKData(query);
75  result = kdata.getDatetimeList();
76  BOOST_CHECK(result.size() == 9);
77  BOOST_CHECK(result[0] == Datetime(200003310000));
78  BOOST_CHECK(result[1] == Datetime(200006300000));
79  BOOST_CHECK(result[8] == Datetime(200203310000));
80 
81  query = KQuery(1, 10, KQuery::HALFYEAR);
82  kdata = stock.getKData(query);
83  result = kdata.getDatetimeList();
84  BOOST_CHECK(result.size() == 9);
85  BOOST_CHECK(result[0] == Datetime(200006300000));
86  BOOST_CHECK(result[1] == Datetime(200012310000));
87  BOOST_CHECK(result[8] == Datetime(200406300000));
88 
89  query = KQuery(1, 10, KQuery::YEAR);
90  kdata = stock.getKData(query);
91  result = kdata.getDatetimeList();
92  BOOST_CHECK(result.size() == 9);
93  BOOST_CHECK(result[0] == Datetime(200012310000));
94  BOOST_CHECK(result[1] == Datetime(200112310000));
95  BOOST_CHECK(result[8] == Datetime(200812310000));
96 
97  query = KQuery(1, 10, KQuery::MIN);
98  kdata = stock.getKData(query);
99  result = kdata.getDatetimeList();
100  BOOST_CHECK(result.size() == 9);
101  BOOST_CHECK(result[0] == Datetime(200001040932));
102  BOOST_CHECK(result[1] == Datetime(200001040933));
103  BOOST_CHECK(result[8] == Datetime(200001040940));
104 
105  query = KQuery(1, 10, KQuery::MIN5);
106  kdata = stock.getKData(query);
107  result = kdata.getDatetimeList();
108  BOOST_CHECK(result.size() == 9);
109  BOOST_CHECK(result[0] == Datetime(200001040940));
110  BOOST_CHECK(result[1] == Datetime(200001040945));
111  BOOST_CHECK(result[8] == Datetime(200001041020));
112 
113  query = KQuery(1, 10, KQuery::MIN15);
114  kdata = stock.getKData(query);
115  result = kdata.getDatetimeList();
116  BOOST_CHECK(result.size() == 9);
117  BOOST_CHECK(result[0] == Datetime(200001041000));
118  BOOST_CHECK(result[1] == Datetime(200001041015));
119  BOOST_CHECK(result[8] == Datetime(200001041330));
120 
121  query = KQuery(1, 10, KQuery::MIN30);
122  kdata = stock.getKData(query);
123  result = kdata.getDatetimeList();
124  BOOST_CHECK(result.size() == 9);
125  BOOST_CHECK(result[0] == Datetime(200001041030));
126  BOOST_CHECK(result[1] == Datetime(200001041100));
127  BOOST_CHECK(result[8] == Datetime(200001051030));
128 
129  query = KQuery(1, 10, KQuery::MIN60);
130  kdata = stock.getKData(query);
131  result = kdata.getDatetimeList();
132  BOOST_CHECK(result.size() == 9);
133  BOOST_CHECK(result[0] == Datetime(200001041130));
134  BOOST_CHECK(result[1] == Datetime(200001041400));
135  BOOST_CHECK(result[8] == Datetime(200001061130));
136 }
137 
138 
140 BOOST_AUTO_TEST_CASE( test_getKData_by_index ) {
141  StockManager& sm = StockManager::instance();
142  Stock stock;
143  KData kdata;
144  KRecord record, expect;
145  KQuery query;
146  size_t total;
147 
149  kdata = stock.getKData(KQuery());
150  BOOST_CHECK(kdata.getStock() == Null<Stock>());
151  BOOST_CHECK(kdata.size() == 0);
152  BOOST_CHECK(kdata.empty() == true);
153  BOOST_CHECK(kdata.startPos() == 0);
154  BOOST_CHECK(kdata.endPos() == 0);
155  BOOST_CHECK(kdata.lastPos() == 0);
156 
157 
161 
162  stock = sm.getStock("sh000001");
163  query = KQuery(0);
164  kdata = stock.getKData(query);
165  BOOST_CHECK(kdata.getStock() == stock);
166  BOOST_CHECK(kdata.empty() == false);
167  BOOST_CHECK(kdata.size() == 5121);
168  BOOST_CHECK(kdata.startPos() == 0);
169  BOOST_CHECK(kdata.lastPos() == 5120);
170  BOOST_CHECK(kdata.endPos() == 5121);
171  record = kdata[0];
172  expect = KRecord(Datetime(199012190000),96.05,99.98,95.79,99.98,49.4,1260);
173  BOOST_CHECK(record == expect);
174 
175  record = kdata[kdata.size() - 1];
176  expect = KRecord(Datetime(201112060000),2326.66,2331.892 ,2310.155, 2325.905, 4262559.5, 45917078);
177  BOOST_CHECK(record == expect);
178 
180  total = stock.getCount(KQuery::DAY);
181  query = KQuery(total - 1);
182  kdata = stock.getKData(query);
183  BOOST_CHECK(kdata.empty() == false);
184  BOOST_CHECK(kdata.size() == 1);
185  BOOST_CHECK(kdata.startPos() == 5120);
186  BOOST_CHECK(kdata.endPos() == 5121);
187  BOOST_CHECK(kdata.lastPos() == 5120);
188  record = kdata[0];
189  expect = KRecord(Datetime(201112060000),2326.66,2331.892 ,2310.155, 2325.905, 4262559.5, 45917078);
190  BOOST_CHECK(record == expect);
191 
193  total = stock.getCount(KQuery::DAY);
194  query = KQuery(total);
195  kdata = stock.getKData(query);
196  BOOST_CHECK(kdata.getStock() == stock);
197  BOOST_CHECK(kdata.size() == 0);
198  BOOST_CHECK(kdata.empty() == true);
199  BOOST_CHECK(kdata.startPos() == 0);
200  BOOST_CHECK(kdata.lastPos() == 0);
201  BOOST_CHECK(kdata.endPos() == 0);
202 
204  query = KQuery(0, 1);
205  kdata = stock.getKData(query);
206  BOOST_CHECK(kdata.size() == 1);
207  BOOST_CHECK(kdata.empty() == false);
208  BOOST_CHECK(kdata.startPos() == 0);
209  BOOST_CHECK(kdata.endPos() == 1);
210  BOOST_CHECK(kdata.lastPos() == 0);
211  record = kdata[0];
212  expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
213  BOOST_CHECK(record == expect);
214 
216  query = KQuery(1, 2);
217  kdata = stock.getKData(query);
218  BOOST_CHECK(kdata.size() == 1);
219  BOOST_CHECK(kdata.empty() == false);
220  BOOST_CHECK(kdata.startPos() == 1);
221  BOOST_CHECK(kdata.endPos() == 2);
222  BOOST_CHECK(kdata.lastPos() == 1);
223  record = kdata[0];
224  expect = KRecord(Datetime(199012200000), 104.3, 104.39, 99.98, 104.39, 8.4, 197);
225  BOOST_CHECK(record == expect);
226 
228  query = KQuery(1, 10);
229  kdata = stock.getKData(query);
230  BOOST_CHECK(kdata.size() == 9);
231  BOOST_CHECK(kdata.empty() == false);
232  BOOST_CHECK(kdata.startPos() == 1);
233  BOOST_CHECK(kdata.endPos() == 10);
234  BOOST_CHECK(kdata.lastPos() == 9);
235  record = kdata[0];
236  expect = KRecord(Datetime(199012200000), 104.3, 104.39, 99.98, 104.39, 8.4, 197);
237  BOOST_CHECK(record == expect);
238 
239  record = kdata[kdata.size()-1];
240  expect = KRecord(Datetime(199101020000), 127.61, 128.84, 127.61, 128.84, 5.9, 91);
241  BOOST_CHECK(record == expect);
242 
244  total = stock.getCount(KQuery::DAY);
245  query = KQuery(total - 1, total);
246  kdata = stock.getKData(query);
247  BOOST_CHECK(kdata.size() == 1);
248  BOOST_CHECK(kdata.empty() == false);
249  BOOST_CHECK(kdata.startPos() == total - 1);
250  BOOST_CHECK(kdata.endPos() == total);
251  BOOST_CHECK(kdata.lastPos() == total - 1);
252  record = kdata[0];
253  expect = KRecord(Datetime(201112060000), 2326.66, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078);
254  BOOST_CHECK(record == expect);
255 
257  query = KQuery(0, 0);
258  kdata = stock.getKData(query);
259  BOOST_CHECK(kdata.size() == 0);
260  BOOST_CHECK(kdata.empty() == true);
261  BOOST_CHECK(kdata.startPos() == 0);
262  BOOST_CHECK(kdata.endPos() == 0);
263  BOOST_CHECK(kdata.lastPos() == 0);
264 
266  query = KQuery(1, 1);
267  kdata = stock.getKData(query);
268  BOOST_CHECK(kdata.size() == 0);
269  BOOST_CHECK(kdata.empty() == true);
270  BOOST_CHECK(kdata.startPos() == 0);
271  BOOST_CHECK(kdata.endPos() == 0);
272  BOOST_CHECK(kdata.lastPos() == 0);
273 
275  total = stock.getCount();
276  query = KQuery(total-1, total-1);
277  kdata = stock.getKData(query);
278  BOOST_CHECK(kdata.size() == 0);
279  BOOST_CHECK(kdata.empty() == true);
280  BOOST_CHECK(kdata.startPos() == 0);
281  BOOST_CHECK(kdata.endPos() == 0);
282  BOOST_CHECK(kdata.lastPos() == 0);
283 
285  query = KQuery(-1);
286  total = stock.getCount();
287  kdata = stock.getKData(query);
288  BOOST_CHECK(kdata.size() == 1);
289  BOOST_CHECK(kdata.empty() == false);
290  BOOST_CHECK(kdata.startPos() == total - 1);
291  BOOST_CHECK(kdata.endPos() == total);
292  BOOST_CHECK(kdata.lastPos() == total - 1);
293  record = kdata[0];
294  expect = KRecord(Datetime(201112060000), 2326.66, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078);
295  BOOST_CHECK(record == expect);
296 
298  total = stock.getCount();
299  query = KQuery(-(hku_int64)total);
300  kdata = stock.getKData(query);
301  BOOST_CHECK(kdata.size() == 5121);
302  BOOST_CHECK(kdata.empty() == false);
303  BOOST_CHECK(kdata.startPos() == 0);
304  BOOST_CHECK(kdata.endPos() == total);
305  BOOST_CHECK(kdata.lastPos() == total - 1);
306  record = kdata[0];
307  expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
308  BOOST_CHECK(record == expect);
309 
310  record = kdata[kdata.size()-1];
311  expect = KRecord(Datetime(201112060000), 2326.66, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078);
312  BOOST_CHECK(record == expect);
313 
315  total = stock.getCount();
316  query = KQuery(-1-(hku_int64)total);
317  kdata = stock.getKData(query);
318  BOOST_CHECK(kdata.size() == 5121);
319  BOOST_CHECK(kdata.empty() == false);
320  BOOST_CHECK(kdata.startPos() == 0);
321  BOOST_CHECK(kdata.endPos() == total);
322  BOOST_CHECK(kdata.lastPos() == total - 1);
323  record = kdata[0];
324  expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
325  BOOST_CHECK(record == expect);
326 
327  record = kdata[kdata.size()-1];
328  expect = KRecord(Datetime(201112060000), 2326.66, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078);
329  BOOST_CHECK(record == expect);
330 
332  total = stock.getCount();
333  query = KQuery(1-(hku_int64)total);
334  kdata = stock.getKData(query);
335  BOOST_CHECK(kdata.size() == 5120);
336  BOOST_CHECK(kdata.empty() == false);
337  BOOST_CHECK(kdata.startPos() == 1);
338  BOOST_CHECK(kdata.endPos() == total);
339  BOOST_CHECK(kdata.lastPos() == total - 1);
340  record = kdata[0];
341  expect = KRecord(Datetime(199012200000), 104.3, 104.39, 99.98, 104.39, 8.4, 197);
342  BOOST_CHECK(record == expect);
343 
344  record = kdata[kdata.size()-1];
345  expect = KRecord(Datetime(201112060000), 2326.66, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078);
346  BOOST_CHECK(record == expect);
347 
349  total = stock.getCount();
350  query = KQuery(-2, -1);
351  kdata = stock.getKData(query);
352  BOOST_CHECK(kdata.size() == 1);
353  BOOST_CHECK(kdata.empty() == false);
354  BOOST_CHECK(kdata.startPos() == total - 2);
355  BOOST_CHECK(kdata.endPos() == total -1);
356  BOOST_CHECK(kdata.lastPos() == total - 2);
357  record = kdata[0];
358  expect = KRecord(Datetime(201112050000), 2363.111, 2363.127, 2327.61, 2333.229, 4864121.6, 52214970);
359  BOOST_CHECK(record == expect);
360 
362  query = KQuery(-10, -2);
363  kdata = stock.getKData(query);
364  BOOST_CHECK(kdata.size() == 8);
365  BOOST_CHECK(kdata.empty() == false);
366  BOOST_CHECK(kdata.startPos() == total - 10);
367  BOOST_CHECK(kdata.endPos() == total -2);
368  BOOST_CHECK(kdata.lastPos() == total - 2 - 1);
369  record = kdata[0];
370  expect = KRecord(Datetime(201111230000), 2415.197, 2418.56, 2390.654, 2395.065, 5004336, 50547851);
371  BOOST_CHECK(record == expect);
372 
373  record = kdata[kdata.size()-1];
374  expect = KRecord(Datetime(201112020000), 2374.899, 2378.299, 2344.846, 2360.664, 5732015.7, 59868846);
375  BOOST_CHECK(record == expect);
376 
378  query = KQuery(-1, 1);
379  kdata = stock.getKData(query);
380  BOOST_CHECK(kdata.size() == 0);
381  BOOST_CHECK(kdata.empty() == true);
382  BOOST_CHECK(kdata.startPos() == 0);
383  BOOST_CHECK(kdata.endPos() == 0);
384  BOOST_CHECK(kdata.lastPos() == 0);
385 
387  query = KQuery(-(hku_int64)total, 1);
388  kdata = stock.getKData(query);
389  BOOST_CHECK(kdata.size() == 1);
390  BOOST_CHECK(kdata.empty() == false);
391  BOOST_CHECK(kdata.startPos() == 0);
392  BOOST_CHECK(kdata.endPos() == 1);
393  BOOST_CHECK(kdata.lastPos() == 0);
394  record = kdata[0];
395  expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.980, 49.4, 1260);
396  BOOST_CHECK(record == expect);
397 
399  query = KQuery(-(hku_int64)total, 2);
400  kdata = stock.getKData(query);
401  BOOST_CHECK(kdata.size() == 2);
402  BOOST_CHECK(kdata.empty() == false);
403  BOOST_CHECK(kdata.startPos() == 0);
404  BOOST_CHECK(kdata.endPos() == 2);
405  BOOST_CHECK(kdata.lastPos() == 1);
406  record = kdata[0];
407  expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.980, 49.4, 1260);
408  BOOST_CHECK(record == expect);
409 
410  record = kdata[kdata.size()-1];
411  BOOST_CHECK(record.datetime == Datetime(199012200000));
412 
414  query = KQuery(0, -(hku_int64)total);
415  kdata = stock.getKData(query);
416  BOOST_CHECK(kdata.size() == 0);
417  BOOST_CHECK(kdata.empty() == true);
418  BOOST_CHECK(kdata.startPos() == 0);
419  BOOST_CHECK(kdata.endPos() == 0);
420  BOOST_CHECK(kdata.lastPos() == 0);
421 
423  query = KQuery(1, -1);
424  kdata = stock.getKData(query);
425  BOOST_CHECK(kdata.size() == 5119);
426  BOOST_CHECK(kdata.empty() == false);
427  BOOST_CHECK(kdata.startPos() == 1);
428  BOOST_CHECK(kdata.endPos() == total - 1);
429  BOOST_CHECK(kdata.lastPos() == total - 2);
430  record = kdata[0];
431  expect = KRecord(Datetime(199012200000), 104.3, 104.39, 99.98, 104.39, 8.4, 197);
432  BOOST_CHECK(record == expect);
433 
434  record = kdata[kdata.size()-1];
435  expect = KRecord(Datetime(201112050000), 2363.111, 2363.127, 2327.61, 2333.229, 4864121.6, 52214970);
436  BOOST_CHECK(record == expect);
437 
438 
442 
443  query = KQuery(0, Null<hku_int64>(), KQuery::MIN);
444  kdata = stock.getKData(query);
445  BOOST_CHECK(kdata.size() == 682823L);
446  record = kdata[0];
447  expect = KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158);
448  BOOST_CHECK(record == expect);
449 
450  record = kdata[kdata.size()-1];
451  expect = KRecord(Datetime(201112061500), 2325.38, 2326.1, 2324.6, 2325.90, 5215150, 566312);
452  BOOST_CHECK(record == expect);
453 
455  total = stock.getCount(KQuery::MIN);
456  query = KQuery(total - 1, Null<hku_int64>(), KQuery::MIN);
457  kdata = stock.getKData(query);
458  BOOST_CHECK(kdata.size() == 1);
459  record = kdata[0];
460  expect = KRecord(Datetime(201112061500), 2325.38, 2326.1, 2324.6, 2325.90, 5215150, 566312);
461  BOOST_CHECK(record == expect);
462 
464  total = stock.getCount(KQuery::MIN);
465  query = KQuery(total, Null<hku_int64>(), KQuery::MIN);
466  kdata = stock.getKData(query);
467  BOOST_CHECK(kdata.size() == 0);
468 
470  query = KQuery(0, 1, KQuery::MIN);
471  kdata = stock.getKData(query);
472  BOOST_CHECK(kdata.size() == 1);
473  record = kdata[0];
474  expect = KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158);
475  BOOST_CHECK(record == expect);
476 
478  query = KQuery(1, 2, KQuery::MIN);
479  kdata = stock.getKData(query);
480  BOOST_CHECK(kdata.size() == 1);
481  record = kdata[0];
482  BOOST_CHECK(record.datetime == Datetime(200001040932));
483 
485  query = KQuery(1, 10, KQuery::MIN);
486  kdata = stock.getKData(query);
487  BOOST_CHECK(kdata.size() == 9);
488  record = kdata[0];
489  BOOST_CHECK(record.datetime == Datetime(200001040932));
490 
491  record = kdata[kdata.size()-1];
492  BOOST_CHECK(record.datetime == Datetime(200001040940));
493 
495  total = stock.getCount(KQuery::MIN);
496  query = KQuery(total - 1, total, KQuery::MIN);
497  kdata = stock.getKData(query);
498  BOOST_CHECK(kdata.size() == 1);
499  record = kdata[0];
500  BOOST_CHECK(record.datetime == Datetime(201112061500));
501 
503  query = KQuery(0, 0, KQuery::MIN);
504  kdata = stock.getKData(query);
505  BOOST_CHECK(kdata.size() == 0);
506 
508  query = KQuery(1, 1, KQuery::MIN);
509  kdata = stock.getKData(query);
510  BOOST_CHECK(kdata.size() == 0);
511 
513  total = stock.getCount(KQuery::MIN);
514  query = KQuery(total-1, total-1, KQuery::MIN);
515  kdata = stock.getKData(query);
516  BOOST_CHECK(kdata.size() == 0);
517 
519  query = KQuery(-1, Null<hku_int64>(), KQuery::MIN);
520  kdata = stock.getKData(query);
521  BOOST_CHECK(kdata.size() == 1);
522  record = kdata[0];
523  BOOST_CHECK(record.datetime == Datetime(201112061500));
524 
526  total = stock.getCount(KQuery::MIN);
527  query = KQuery(-(hku_int64)total, Null<hku_int64>(), KQuery::MIN);
528  kdata = stock.getKData(query);
529  BOOST_CHECK(kdata.size() == 682823);
530  record = kdata[0];
531  BOOST_CHECK(record.datetime == Datetime(200001040931));
532 
533  record = kdata[kdata.size()-1];
534  BOOST_CHECK(record.datetime == Datetime(201112061500));
535 
537  total = stock.getCount(KQuery::MIN);
538  query = KQuery(-1-(hku_int64)total, Null<hku_int64>(), KQuery::MIN);
539  kdata = stock.getKData(query);
540  BOOST_CHECK(kdata.size() == 682823);
541  record = kdata[0];
542  BOOST_CHECK(record.datetime == Datetime(200001040931));
543 
544  record = kdata[kdata.size() - 1];
545  BOOST_CHECK(record.datetime == Datetime(201112061500));
546 
548  total = stock.getCount(KQuery::MIN);
549  query = KQuery(1-(hku_int64)total, Null<hku_int64>(), KQuery::MIN);
550  kdata = stock.getKData(query);
551  BOOST_CHECK(kdata.size() == 682822);
552  record = kdata[0];
553  BOOST_CHECK(record.datetime == Datetime(200001040932));
554 
555  record = kdata[kdata.size() - 1 ];
556  BOOST_CHECK(record.datetime == Datetime(201112061500));
557 
559  query = KQuery(-2, -1, KQuery::MIN);
560  kdata = stock.getKData(query);
561  BOOST_CHECK(kdata.size() == 1);
562  record = kdata[0];
563  BOOST_CHECK(record.datetime == Datetime(201112061459));
564 
566  query = KQuery(-10, -2, KQuery::MIN);
567  kdata = stock.getKData(query);
568  BOOST_CHECK(kdata.size() == 8);
569  record = kdata[0];
570  BOOST_CHECK(record.datetime == Datetime(201112061451));
571 
572  record = kdata[kdata.size()-1];
573  BOOST_CHECK(record.datetime == Datetime(201112061458));
574 
576  query = KQuery(-1, 1, KQuery::MIN);
577  kdata = stock.getKData(query);
578  BOOST_CHECK(kdata.size() == 0);
579 
581  query = KQuery(-(hku_int64)total, 1, KQuery::MIN);
582  kdata = stock.getKData(query);
583  BOOST_CHECK(kdata.size() == 1);
584  record = kdata[0];
585  BOOST_CHECK(record.datetime == Datetime(200001040931));
586 
588  query = KQuery(-(hku_int64)total, 2, KQuery::MIN);
589  kdata = stock.getKData(query);
590  BOOST_CHECK(kdata.size() == 2);
591  record = kdata[0];
592  BOOST_CHECK(record.datetime == Datetime(200001040931));
593 
594  record = kdata[kdata.size()-1];
595  BOOST_CHECK(record.datetime == Datetime(200001040932));
596 
598  query = KQuery(0, -(hku_int64)total, KQuery::MIN);
599  kdata = stock.getKData(query);
600  BOOST_CHECK(kdata.size() == 0);
601 
603  query = KQuery(1, -1, KQuery::MIN);
604  kdata = stock.getKData(query);
605  BOOST_CHECK(kdata.size() == 682821);
606  record = kdata[0];
607  BOOST_CHECK(record.datetime == Datetime(200001040932));
608 
609  record = kdata[kdata.size()-1];
610  BOOST_CHECK(record.datetime == Datetime(201112061459));
611 
612 
614  query = KQuery(1,3, KQuery::WEEK);
615  kdata = stock.getKData(query);
616  BOOST_CHECK(kdata.size() == 2);
617  BOOST_CHECK(kdata.empty() == false);
618  BOOST_CHECK(kdata.startPos() == 1);
619  BOOST_CHECK(kdata.endPos() == 3);
620  BOOST_CHECK(kdata.lastPos() == 2);
621  BOOST_CHECK(kdata[0] == KRecord(Datetime(199012280000), 113.57, 126.45, 109.13, 126.45, 28.2, 321));
622  BOOST_CHECK(kdata[1] == KRecord(Datetime(199101040000), 126.56, 131.44, 126.48, 131.44, 47.3, 730));
623 
625  query = KQuery(1,4, KQuery::MONTH);
626  kdata = stock.getKData(query);
627  BOOST_CHECK(kdata.size() == 3);
628  BOOST_CHECK(kdata.empty() == false);
629  BOOST_CHECK(kdata.startPos() == 1);
630  BOOST_CHECK(kdata.endPos() == 4);
631  BOOST_CHECK(kdata.lastPos() == 3);
632  BOOST_CHECK(kdata[0] == KRecord(Datetime(199101310000), 127.61, 135.19, 127.61, 129.97, 3637.1, 67197));
633  BOOST_CHECK(kdata[1] == KRecord(Datetime(199102280000), 129.5, 134.87, 128.06, 133.01, 3027.3, 50982));
634  BOOST_CHECK(kdata[2] == KRecord(Datetime(199103310000), 132.53, 132.53, 120.11, 120.19, 1725.3, 24528));
635 
637  query = KQuery(1,4, KQuery::QUARTER);
638  kdata = stock.getKData(query);
639  BOOST_CHECK(kdata.size() == 3);
640  BOOST_CHECK(kdata.empty() == false);
641  BOOST_CHECK(kdata.startPos() == 1);
642  BOOST_CHECK(kdata.endPos() == 4);
643  BOOST_CHECK(kdata.lastPos() == 3);
644  BOOST_CHECK(kdata[0] == KRecord(Datetime(199103310000), 127.61, 135.19, 120.11, 120.19, 8389.7, 142707));
645  BOOST_CHECK(kdata[1] == KRecord(Datetime(199106300000), 120.69, 137.56, 104.96, 137.56, 12095.6, 222753));
646  BOOST_CHECK(kdata[2] == KRecord(Datetime(199109300000), 136.64, 191.18, 131.87, 180.92, 32436.9, 527079));
647 
649  query = KQuery(1,4, KQuery::MIN5);
650  kdata = stock.getKData(query);
651  BOOST_CHECK(kdata.size() == 3);
652  BOOST_CHECK(kdata.empty() == false);
653  BOOST_CHECK(kdata.startPos() == 1);
654  BOOST_CHECK(kdata.endPos() == 4);
655  BOOST_CHECK(kdata.lastPos() == 3);
656  BOOST_CHECK(kdata[0] == KRecord(Datetime(200001040940), 1369.187, 1369.371, 1367.389, 1367.389, 70687.3, 251473));
657  BOOST_CHECK(kdata[1] == KRecord(Datetime(200001040945), 1367.389, 1367.389, 1364.645, 1364.763, 73577.1, 223346));
658  BOOST_CHECK(kdata[2] == KRecord(Datetime(200001040950), 1364.763, 1364.763, 1363.128, 1363.192, 65066.3, 167971));
659 
661  query = KQuery(1,4, KQuery::MIN15);
662  kdata = stock.getKData(query);
663  BOOST_CHECK(kdata.size() == 3);
664  BOOST_CHECK(kdata.empty() == false);
665  BOOST_CHECK(kdata.startPos() == 1);
666  BOOST_CHECK(kdata.endPos() == 4);
667  BOOST_CHECK(kdata.lastPos() == 3);
668  BOOST_CHECK(kdata[0] == KRecord(Datetime(200001041000), 1364.7630, 1364.7630, 1361.4590, 1361.4590, 204277.1000, 457452.0000));
669  BOOST_CHECK(kdata[1] == KRecord(Datetime(200001041015), 1361.5580, 1366.0930, 1361.2950, 1365.9270, 307531.8000, 548313.0000));
670  BOOST_CHECK(kdata[2] == KRecord(Datetime(200001041030), 1366.0430, 1367.6830, 1365.9460, 1367.6830, 279102.7000, 451981.0000));
671 
672 }
673 
674 
676 BOOST_AUTO_TEST_CASE( test_getKData_by_date ) {
677  StockManager& sm = StockManager::instance();
678  Stock stock;
679  KData kdata;
680  KRecord record, expect;
681  KQuery query;
682  size_t total;
683 
687 
689  stock = sm.getStock("sh000001");
690  total = stock.getCount();
691  query = KQueryByDate();
692  kdata = stock.getKData(query);
693  BOOST_CHECK(kdata.size() == total);
694  BOOST_CHECK(kdata.size() == 5121);
695  BOOST_CHECK(kdata.empty() == false);
696  BOOST_CHECK(kdata.startPos() == 0);
697  BOOST_CHECK(kdata.endPos() == total);
698  BOOST_CHECK(kdata.lastPos() == total - 1);
699  record = kdata[0];
700  expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
701  BOOST_CHECK(record == expect);
702 
703  record = kdata[1];
704  expect = KRecord(Datetime(199012200000), 104.3, 104.39, 99.98, 104.39, 8.4, 197);
705  BOOST_CHECK(record == expect);
706 
707  record = kdata[kdata.size()-1];
708  expect = KRecord(Datetime(201112060000), 2326.66, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078);
709  BOOST_CHECK(record == expect);
710 
712  stock = sm.getStock("sh000001");
713  query = KQueryByDate(Datetime(199012180000));
714  kdata = stock.getKData(query);
715  BOOST_CHECK(kdata.size() == 5121);
716  BOOST_CHECK(kdata.empty() == false);
717  BOOST_CHECK(kdata.startPos() == 0);
718  BOOST_CHECK(kdata.endPos() == total);
719  BOOST_CHECK(kdata.lastPos() == total - 1);
720  record = kdata[0];
721  expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
722  BOOST_CHECK(record == expect);
723 
724  record = kdata[kdata.size()-1];
725  expect = KRecord(Datetime(201112060000), 2326.66, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078);
726  BOOST_CHECK(record == expect);
727 
729  stock = sm.getStock("sh000001");
730  query = KQueryByDate(Datetime(199012190000));
731  kdata = stock.getKData(query);
732  BOOST_CHECK(kdata.size() == 5121);
733  BOOST_CHECK(kdata.empty() == false);
734  BOOST_CHECK(kdata.startPos() == 0);
735  BOOST_CHECK(kdata.endPos() == total);
736  BOOST_CHECK(kdata.lastPos() == total - 1);
737  record = kdata[0];
738  expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
739  BOOST_CHECK(record == expect);
740 
741  record = kdata[kdata.size()-1];
742  expect = KRecord(Datetime(201112060000), 2326.66, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078);
743  BOOST_CHECK(record == expect);
744 
746  stock = sm.getStock("sh000001");
747  query = KQueryByDate(Datetime(199012200000));
748  kdata = stock.getKData(query);
749  BOOST_CHECK(kdata.size() == 5120);
750  BOOST_CHECK(kdata.empty() == false);
751  BOOST_CHECK(kdata.startPos() == 1);
752  BOOST_CHECK(kdata.endPos() == total);
753  BOOST_CHECK(kdata.lastPos() == total - 1);
754  record = kdata[0];
755  BOOST_CHECK(record.datetime == Datetime(199012200000));
756 
757  record = kdata[kdata.size()-1];
758  BOOST_CHECK(record.datetime == Datetime(201112060000));
759 
761  stock = sm.getStock("sh000001");
762  query = KQueryByDate(Datetime(199012190000), Datetime(201112050000));
763  kdata = stock.getKData(query);
764  BOOST_CHECK(kdata.size() == 5119);
765  BOOST_CHECK(kdata.empty() == false);
766  BOOST_CHECK(kdata.startPos() == 0);
767  BOOST_CHECK(kdata.endPos() == total - 2);
768  BOOST_CHECK(kdata.lastPos() == total - 3);
769  record = kdata[0];
770  expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
771  BOOST_CHECK(record == expect);
772 
773  record = kdata[kdata.size()-1];
774  BOOST_CHECK(record == KRecord(Datetime(201112020000), 2374.8990, 2378.2990, 2344.8460, 2360.6640, 5732015.7000, 59868846.0000));
775 
777  stock = sm.getStock("sh000001");
778  query = KQueryByDate(Datetime(199012190000), Datetime(201112060000));
779  kdata = stock.getKData(query);
780  BOOST_CHECK(kdata.size() == 5120);
781  BOOST_CHECK(kdata.empty() == false);
782  BOOST_CHECK(kdata.startPos() == 0);
783  BOOST_CHECK(kdata.endPos() == total - 1);
784  BOOST_CHECK(kdata.lastPos() == total - 2);
785  record = kdata[0];
786  expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
787  BOOST_CHECK(record == expect);
788 
789  record = kdata[kdata.size()-1];
790  BOOST_CHECK(record == KRecord(Datetime(201112050000), 2363.1110, 2363.1270, 2327.6100, 2333.2290, 4864121.6000, 52214970.0000));
791 
793  stock = sm.getStock("sh000001");
794  query = KQueryByDate(Datetime(199012190000), Datetime(201112070000));
795  kdata = stock.getKData(query);
796  BOOST_CHECK(kdata.size() == 5121);
797  BOOST_CHECK(kdata.empty() == false);
798  BOOST_CHECK(kdata.startPos() == 0);
799  BOOST_CHECK(kdata.endPos() == total);
800  BOOST_CHECK(kdata.lastPos() == total - 1);
801  record = kdata[0];
802  expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
803  BOOST_CHECK(record == expect);
804 
805  record = kdata[kdata.size()-1];
806  BOOST_CHECK(record == KRecord(Datetime(201112060000), 2326.6600, 2331.8920, 2310.1550, 2325.9050, 4262559.5000, 45917078.0000));
807 
809  stock = sm.getStock("sh000001");
810  query = KQueryByDate(Datetime(199510180000), Datetime(199510240000));
811  kdata = stock.getKData(query);
812  BOOST_CHECK(kdata.size() == 4);
813  BOOST_CHECK(kdata.empty() == false);
814  BOOST_CHECK(kdata.startPos() == 1210);
815  BOOST_CHECK(kdata.endPos() == 1214);
816  BOOST_CHECK(kdata.lastPos() == 1213);
817  record = kdata[0];
818  BOOST_CHECK(record == KRecord(Datetime(199510180000), 705.7200, 716.8300, 705.7200, 716.8300, 232685.5000, 4273054.0000));
819 
820  record = kdata[kdata.size()-1];
821  BOOST_CHECK(record == KRecord(Datetime(199510230000), 729.7600, 729.9700, 718.4400, 723.0900, 235482.7000, 3877994.0000));
822 
824  stock = sm.getStock("sh000001");
825  query = KQueryByDate(Datetime(199001010000), Datetime(199001010000));
826  kdata = stock.getKData(query);
827  BOOST_CHECK(kdata.size() == 0);
828  BOOST_CHECK(kdata.empty() == true);
829  BOOST_CHECK(kdata.startPos() == 0);
830  BOOST_CHECK(kdata.endPos() == 0);
831  BOOST_CHECK(kdata.lastPos() == 0);
832 
833  query = KQueryByDate(Datetime(199012190000), Datetime(199012190000));
834  kdata = stock.getKData(query);
835  BOOST_CHECK(kdata.size() == 0);
836  BOOST_CHECK(kdata.empty() == true);
837  BOOST_CHECK(kdata.startPos() == 0);
838  BOOST_CHECK(kdata.endPos() == 0);
839  BOOST_CHECK(kdata.lastPos() == 0);
840 
841  query = KQueryByDate(Datetime(199510240000), Datetime(199510240000));
842  kdata = stock.getKData(query);
843  BOOST_CHECK(kdata.size() == 0);
844  BOOST_CHECK(kdata.empty() == true);
845  BOOST_CHECK(kdata.startPos() == 0);
846  BOOST_CHECK(kdata.endPos() == 0);
847  BOOST_CHECK(kdata.lastPos() == 0);
848 
849  query = KQueryByDate(Datetime(201112060000), Datetime(201112060000));
850  kdata = stock.getKData(query);
851  BOOST_CHECK(kdata.size() == 0);
852  BOOST_CHECK(kdata.empty() == true);
853  BOOST_CHECK(kdata.startPos() == 0);
854  BOOST_CHECK(kdata.endPos() == 0);
855  BOOST_CHECK(kdata.lastPos() == 0);
856 
858  stock = sm.getStock("sh000001");
859  query = KQueryByDate(Datetime(199012190000), Datetime(199012200000));
860  kdata = stock.getKData(query);
861  BOOST_CHECK(kdata.size() == 1);
862  BOOST_CHECK(kdata.empty() == false);
863  BOOST_CHECK(kdata.startPos() == 0);
864  BOOST_CHECK(kdata.endPos() == 1);
865  BOOST_CHECK(kdata.lastPos() == 0);
866  record = kdata[0];
867  BOOST_CHECK(record == KRecord(Datetime(199012190000), 96.0500, 99.9800, 95.7900, 99.9800, 49.4000, 1260.0000));
868 
869  query = KQueryByDate(Datetime(201111140000), Datetime(201111150000));
870  kdata = stock.getKData(query);
871  BOOST_CHECK(kdata.size() == 1);
872  BOOST_CHECK(kdata.empty() == false);
873  BOOST_CHECK(kdata.startPos() == 5104);
874  BOOST_CHECK(kdata.endPos() == 5105);
875  BOOST_CHECK(kdata.lastPos() == 5104);
876  record = kdata[0];
877  BOOST_CHECK(record == KRecord(Datetime(201111140000), 2498.6720, 2529.6320, 2496.3350, 2528.7140, 8252378.1000, 81229813.0000));
878 
879  query = KQueryByDate(Datetime(201112060000), Datetime(201112070000));
880  kdata = stock.getKData(query);
881  BOOST_CHECK(kdata.size() == 1);
882  BOOST_CHECK(kdata.empty() == false);
883  BOOST_CHECK(kdata.startPos() == 5120);
884  BOOST_CHECK(kdata.endPos() == 5121);
885  BOOST_CHECK(kdata.lastPos() == 5120);
886  record = kdata[0];
887  BOOST_CHECK(record == KRecord(Datetime(201112060000), 2326.6600, 2331.8920, 2310.1550, 2325.9050, 4262559.5000, 45917078.0000));
888 
889 
893 
894  total = stock.getCount(KQuery::WEEK);
895  query = KQueryByDate(Datetime(199012200000), Null<Datetime>(), KQuery::WEEK);
896  kdata = stock.getKData(query);
897  BOOST_CHECK(kdata.size() == total);
898  BOOST_CHECK(kdata.empty() == false);
899  BOOST_CHECK(kdata.startPos() == 0);
900  BOOST_CHECK(kdata.endPos() == total);
901  BOOST_CHECK(kdata.lastPos() == total - 1);
902  BOOST_CHECK(kdata[0] == KRecord(Datetime(199012210000), 96.0500, 109.1300, 95.7900, 109.1300, 59.4000, 1485.0000));
903  BOOST_CHECK(kdata[1] == KRecord(Datetime(199012280000), 113.5700, 126.4500, 109.1300, 126.4500, 28.2000, 321.0000));
904  BOOST_CHECK(kdata[kdata.size()-1] == KRecord(Datetime(201112090000), 2363.1110, 2363.1270, 2310.1550, 2325.9050, 9126681.1000, 98132048.0000));
905 
907  stock = sm.getStock("sh000001");
908  query = KQueryByDate(Datetime(199012210000), Null<Datetime>(), KQuery::WEEK);
909  kdata = stock.getKData(query);
910  BOOST_CHECK(kdata.size() == total);
911  BOOST_CHECK(kdata.empty() == false);
912  BOOST_CHECK(kdata.startPos() == 0);
913  BOOST_CHECK(kdata.endPos() == total);
914  BOOST_CHECK(kdata.lastPos() == total - 1);
915  BOOST_CHECK(kdata[0] == KRecord(Datetime(199012210000), 96.0500, 109.1300, 95.7900, 109.1300, 59.4000, 1485.0000));
916  BOOST_CHECK(kdata[10] == KRecord(Datetime(199103010000), 134.3700, 134.8700, 132.4700, 132.5300, 827.1000, 11500.0000));
917  BOOST_CHECK(kdata[kdata.size()-1] == KRecord(Datetime(201112090000), 2363.1110, 2363.1270, 2310.1550, 2325.9050, 9126681.1000, 98132048.0000));
918 
920  stock = sm.getStock("sh000001");
921  query = KQueryByDate(Datetime(199012220000), Null<Datetime>(), KQuery::WEEK);
922  kdata = stock.getKData(query);
923  BOOST_CHECK(kdata.size() == total - 1);
924  BOOST_CHECK(kdata.empty() == false);
925  BOOST_CHECK(kdata.startPos() == 1);
926  BOOST_CHECK(kdata.endPos() == total);
927  BOOST_CHECK(kdata.lastPos() == total - 1);
928  BOOST_CHECK(kdata[0] == KRecord(Datetime(199012280000), 113.5700, 126.4500, 109.1300, 126.4500, 28.2000, 321.0000));
929  BOOST_CHECK(kdata[1] == KRecord(Datetime(199101040000), 126.5600, 131.4400, 126.4800, 131.4400, 47.3000, 730.0000));
930  BOOST_CHECK(kdata[kdata.size()-1] == KRecord(Datetime(201112090000), 2363.1110, 2363.1270, 2310.1550, 2325.9050, 9126681.1000, 98132048.0000));
931 
933  stock = sm.getStock("sh000001");
934  query = KQueryByDate(Datetime(199012210000), Datetime(201112080000), KQuery::WEEK);
935  kdata = stock.getKData(query);
936  BOOST_CHECK(kdata.size() == total - 1);
937  BOOST_CHECK(kdata.empty() == false);
938  BOOST_CHECK(kdata.startPos() == 0);
939  BOOST_CHECK(kdata.endPos() == total - 1);
940  BOOST_CHECK(kdata.lastPos() == total - 2);
941  BOOST_CHECK(kdata[0] == KRecord(Datetime(199012210000), 96.0500, 109.1300, 95.7900, 109.1300, 59.4000, 1485.0000));
942  BOOST_CHECK(kdata[kdata.size()-1] == KRecord(Datetime(201112020000), 2383.8930, 2423.5590, 2319.4400, 2360.6640, 32821965.5000, 336317856.0000));
943 
945  query = KQueryByDate(Datetime(199012210000), Datetime(201112090000), KQuery::WEEK);
946  kdata = stock.getKData(query);
947  BOOST_CHECK(kdata.size() == total - 1);
948  BOOST_CHECK(kdata.empty() == false);
949  BOOST_CHECK(kdata.startPos() == 0);
950  BOOST_CHECK(kdata.endPos() == total - 1);
951  BOOST_CHECK(kdata.lastPos() == total - 2);
952  BOOST_CHECK(kdata[0] == KRecord(Datetime(199012210000), 96.0500, 109.1300, 95.7900, 109.1300, 59.4000, 1485.0000));
953  BOOST_CHECK(kdata[kdata.size()-1] == KRecord(Datetime(201112020000), 2383.8930, 2423.5590, 2319.4400, 2360.6640, 32821965.5000, 336317856.0000));
954 
956  query = KQueryByDate(Datetime(199012210000), Datetime(201112100000), KQuery::WEEK);
957  kdata = stock.getKData(query);
958  BOOST_CHECK(kdata.size() == total);
959  BOOST_CHECK(kdata.empty() == false);
960  BOOST_CHECK(kdata.startPos() == 0);
961  BOOST_CHECK(kdata.endPos() == total);
962  BOOST_CHECK(kdata.lastPos() == total - 1);
963  BOOST_CHECK(kdata[0] == KRecord(Datetime(199012210000), 96.0500, 109.1300, 95.7900, 109.1300, 59.4000, 1485.0000));
964  BOOST_CHECK(kdata[kdata.size()-1] == KRecord(Datetime(201112090000), 2363.1110, 2363.1270, 2310.1550, 2325.9050, 9126681.1000, 98132048.0000));
965 
967  stock = sm.getStock("sh000001");
968  query = KQueryByDate(Datetime(201108150000), Datetime(201111070000), KQuery::WEEK);
969  kdata = stock.getKData(query);
970  BOOST_CHECK(kdata.size() == 11);
971  BOOST_CHECK(kdata.empty() == false);
972  BOOST_CHECK(kdata.startPos() == 1043);
973  BOOST_CHECK(kdata.endPos() == 1054);
974  BOOST_CHECK(kdata.lastPos() == 1053);
975  BOOST_CHECK(kdata[0] == KRecord(Datetime(201108190000), 2598.1380, 2636.3600, 2513.7540, 2534.3580, 40330572.2000, 385608932.0000));
976  BOOST_CHECK(kdata[kdata.size()-1] == KRecord(Datetime(201111040000), 2470.2540, 2536.7790, 2433.7150, 2528.2940, 50520578.9000, 516983184.0000));
977 
979  stock = sm.getStock("sh000001");
980  query = KQueryByDate(Datetime(199012170000), Datetime(199012170000), KQuery::WEEK);
981  kdata = stock.getKData(query);
982  BOOST_CHECK(kdata.size() == 0);
983  BOOST_CHECK(kdata.empty() == true);
984  BOOST_CHECK(kdata.startPos() == 0);
985  BOOST_CHECK(kdata.endPos() == 0);
986  BOOST_CHECK(kdata.lastPos() == 0);
987 
988  query = KQueryByDate(Datetime(199104220000), Datetime(199104220000), KQuery::WEEK);
989  kdata = stock.getKData(query);
990  BOOST_CHECK(kdata.size() == 0);
991  BOOST_CHECK(kdata.empty() == true);
992  BOOST_CHECK(kdata.startPos() == 0);
993  BOOST_CHECK(kdata.endPos() == 0);
994  BOOST_CHECK(kdata.lastPos() == 0);
995 
996  query = KQueryByDate(Datetime(199507170000), Datetime(199507170000), KQuery::WEEK);
997  kdata = stock.getKData(query);
998  BOOST_CHECK(kdata.size() == 0);
999  BOOST_CHECK(kdata.empty() == true);
1000  BOOST_CHECK(kdata.startPos() == 0);
1001  BOOST_CHECK(kdata.endPos() == 0);
1002  BOOST_CHECK(kdata.lastPos() == 0);
1003 
1004  query = KQueryByDate(Datetime(201112050000), Datetime(201112050000), KQuery::WEEK);
1005  kdata = stock.getKData(query);
1006  BOOST_CHECK(kdata.size() == 0);
1007  BOOST_CHECK(kdata.empty() == true);
1008  BOOST_CHECK(kdata.startPos() == 0);
1009  BOOST_CHECK(kdata.endPos() == 0);
1010  BOOST_CHECK(kdata.lastPos() == 0);
1011 
1013  stock = sm.getStock("sh000001");
1014  query = KQueryByDate(Datetime(199012210000), Datetime(199012280000), KQuery::WEEK);
1015  kdata = stock.getKData(query);
1016  BOOST_CHECK(kdata.size() == 1);
1017  BOOST_CHECK(kdata.empty() == false);
1018  BOOST_CHECK(kdata.startPos() == 0);
1019  BOOST_CHECK(kdata.endPos() == 1);
1020  BOOST_CHECK(kdata.lastPos() == 0);
1021  BOOST_CHECK(kdata[0] == KRecord(Datetime(199012210000), 96.0500, 109.1300, 95.7900, 109.1300, 59.4000, 1485.0000));
1022 
1023  query = KQueryByDate(Datetime(199707250000), Datetime(199708010000), KQuery::WEEK);
1024  kdata = stock.getKData(query);
1025  BOOST_CHECK(kdata.size() == 1);
1026  BOOST_CHECK(kdata.empty() == false);
1027  BOOST_CHECK(kdata.startPos() == 338);
1028  BOOST_CHECK(kdata.endPos() == 339);
1029  BOOST_CHECK(kdata.lastPos() == 338);
1030  BOOST_CHECK(kdata[0] == KRecord(Datetime(199707250000), 1215.8390, 1223.8230, 1158.1360, 1170.8620, 2433586.7000, 20739544.0000));
1031 
1032  query = KQueryByDate(Datetime(201112090000), Datetime(201112100000), KQuery::WEEK);
1033  kdata = stock.getKData(query);
1034  BOOST_CHECK(kdata.size() == 1);
1035  BOOST_CHECK(kdata.empty() == false);
1036  BOOST_CHECK(kdata.startPos() == 1058);
1037  BOOST_CHECK(kdata.endPos() == 1059);
1038  BOOST_CHECK(kdata.lastPos() == 1058);
1039  BOOST_CHECK(kdata[0] == KRecord(Datetime(201112090000), 2363.1110, 2363.1270, 2310.1550, 2325.9050, 9126681.1000, 98132048.0000));
1040 
1041 
1045 
1046  stock = sm.getStock("sh000001");
1047  query = KQueryByDate(Datetime::min(), Null<Datetime>(), KQuery::MIN);
1048  kdata = stock.getKData(query);
1049  BOOST_CHECK(kdata.size() == 682823L);
1050  record = kdata[0];
1051  expect = KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158);
1052  BOOST_CHECK(record == expect);
1053 
1054  record = kdata[1];
1055  expect = KRecord(Datetime(200001040932), 1368.3, 1368.491, 1368.3, 1368.491, 2783200, 106916);
1056  BOOST_CHECK(record == expect);
1057 
1058  record = kdata[kdata.size()-1];
1059  expect = KRecord(Datetime(201112061500), 2325.38, 2326.1, 2324.6, 2325.90, 5215150, 566312);
1060  BOOST_CHECK(record == expect);
1061 
1063  stock = sm.getStock("sh000001");
1064  query = KQueryByDate(Datetime(200001040930), Null<Datetime>(), KQuery::MIN);
1065  kdata = stock.getKData(query);
1066  BOOST_CHECK(kdata.size() == 682823L);
1067  record = kdata[0];
1068  expect = KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158);
1069  BOOST_CHECK(record == expect);
1070 
1071  record = kdata[1];
1072  expect = KRecord(Datetime(200001040932), 1368.3, 1368.491, 1368.3, 1368.491, 2783200, 106916);
1073  BOOST_CHECK(record == expect);
1074 
1075  record = kdata[kdata.size()-1];
1076  expect = KRecord(Datetime(201112061500), 2325.38, 2326.1, 2324.6, 2325.90, 5215150, 566312);
1077  BOOST_CHECK(record == expect);
1078 
1080  stock = sm.getStock("sh000001");
1081  query = KQueryByDate(Datetime(200001040931), Null<Datetime>(), KQuery::MIN);
1082  kdata = stock.getKData(query);
1083  BOOST_CHECK(kdata.size() == 682823L);
1084  record = kdata[0];
1085  BOOST_CHECK(record.datetime == Datetime(200001040931));
1086 
1087  record = kdata[kdata.size()-1];
1088  BOOST_CHECK(record.datetime == Datetime(201112061500));
1089 
1090 
1092  stock = sm.getStock("sh000001");
1093  query = KQueryByDate(Datetime(200001040932), Null<Datetime>(), KQuery::MIN);
1094  kdata = stock.getKData(query);
1095  BOOST_CHECK(kdata.size() == 682822L);
1096  record = kdata[0];
1097  BOOST_CHECK(record.datetime == Datetime(200001040932));
1098 
1099  record = kdata[kdata.size()-1];
1100  BOOST_CHECK(record.datetime == Datetime(201112061500));
1101 
1103  stock = sm.getStock("sh000001");
1104  query = KQueryByDate(Datetime(200001040931), Datetime(201112061459), KQuery::MIN);
1105  kdata = stock.getKData(query);
1106  BOOST_CHECK(kdata.size() == 682821L);
1107  record = kdata[0];
1108  BOOST_CHECK(record.datetime == Datetime(200001040931));
1109 
1110  record = kdata[kdata.size()-1];
1111  BOOST_CHECK(record.datetime == Datetime(201112061458));
1112 
1114  stock = sm.getStock("sh000001");
1115  query = KQueryByDate(Datetime(200001040931), Datetime(201112061500), KQuery::MIN);
1116  kdata = stock.getKData(query);
1117  BOOST_CHECK(kdata.size() == 682822L);
1118  record = kdata[0];
1119  BOOST_CHECK(record.datetime == Datetime(200001040931));
1120 
1121  record = kdata[kdata.size()-1];
1122  BOOST_CHECK(record.datetime == Datetime(201112061459));
1123 
1125  stock = sm.getStock("sh000001");
1126  query = KQueryByDate(Datetime(200001040931), Datetime(201112061501), KQuery::MIN);
1127  kdata = stock.getKData(query);
1128  BOOST_CHECK(kdata.size() == 682823L);
1129  record = kdata[0];
1130  BOOST_CHECK(record.datetime == Datetime(200001040931));
1131 
1132  record = kdata[kdata.size()-1];
1133  BOOST_CHECK(record.datetime == Datetime(201112061500));
1134 
1136  stock = sm.getStock("sh000001");
1137  query = KQueryByDate(Datetime(200303051451), Datetime(200303051455), KQuery::MIN);
1138  kdata = stock.getKData(query);
1139  BOOST_CHECK(kdata.size() == 4);
1140  record = kdata[0];
1141  BOOST_CHECK(record.datetime == Datetime(200303051451));
1142 
1143  record = kdata[kdata.size()-1];
1144  BOOST_CHECK(record.datetime == Datetime(200303051454));
1145 
1147  stock = sm.getStock("sh000001");
1148  query = KQueryByDate(Datetime(200001040931), Datetime(200001040931), KQuery::MIN);
1149  kdata = stock.getKData(query);
1150  BOOST_CHECK(kdata.size() == 0);
1151  query = KQueryByDate(Datetime(200601041446), Datetime(200601041446), KQuery::MIN);
1152  kdata = stock.getKData(query);
1153  BOOST_CHECK(kdata.size() == 0);
1154  query = KQueryByDate(Datetime(200801300955), Datetime(200601041446), KQuery::MIN);
1155  kdata = stock.getKData(query);
1156  BOOST_CHECK(kdata.size() == 0);
1157  query = KQueryByDate(Datetime(201112061500), Datetime(201112061500), KQuery::MIN);
1158  kdata = stock.getKData(query);
1159  BOOST_CHECK(kdata.size() == 0);
1160 
1162  stock = sm.getStock("sh000001");
1163  query = KQueryByDate(Datetime(200001040931), Datetime(200001040932), KQuery::MIN);
1164  kdata = stock.getKData(query);
1165  BOOST_CHECK(kdata.size() == 1);
1166  record = kdata[0];
1167  BOOST_CHECK(record.datetime == Datetime(200001040931));
1168 
1169  query = KQueryByDate(Datetime(200601041446), Datetime(200601041447), KQuery::MIN);
1170  kdata = stock.getKData(query);
1171  BOOST_CHECK(kdata.size() == 1);
1172  record = kdata[0];
1173  BOOST_CHECK(record.datetime == Datetime(200601041446));
1174 
1175  query = KQueryByDate(Datetime(201112061500), Datetime(201112061501), KQuery::MIN);
1176  kdata = stock.getKData(query);
1177  BOOST_CHECK(kdata.size() == 1);
1178  record = kdata[0];
1179  BOOST_CHECK(record.datetime == Datetime(201112061500));
1180 }
1181 
1182 
1184 BOOST_AUTO_TEST_CASE( test_getKData_recover ) {
1185  StockManager& sm = StockManager::instance();
1186  Stock stock = sm.getStock("sh600000");
1187  KQuery query;
1188  KData kdata;
1189 
1191  query = KQuery(0, Null<hku_int64>(), KQuery::DAY, KQuery::FORWARD);
1192  kdata = stock.getKData(query);
1193  BOOST_CHECK(kdata[2710] == KRecord(Datetime(201106030000), 10.02, 10.14, 10.0, 10.09, 38726.1, 384820));
1194  BOOST_CHECK(kdata[2709] == KRecord(Datetime(201106020000), 10.34, 10.38, 9.93, 10.04, 103909.3, 780543.0));
1195  BOOST_CHECK(kdata[2554] == KRecord(Datetime(201010140000), 11.04, 11.42, 10.91, 10.95, 322428.8, 2195006));
1196  BOOST_CHECK(kdata[2548] == KRecord(Datetime(201009290000), 9.26, 9.64, 9.20, 9.48, 99719.8, 799165));
1197  BOOST_CHECK(kdata[2547] == KRecord(Datetime(201009280000), 9.82, 9.82, 9.55, 9.55, 81241.5, 639882));
1198 
1200  query = KQuery(0, Null<hku_int64>(), KQuery::DAY, KQuery::BACKWARD);
1201  kdata = stock.getKData(query);
1202  BOOST_CHECK(kdata[0] == KRecord(Datetime(199911100000), 29.5, 29.8, 27.0, 27.75, 485910.2, 1740850));
1203  BOOST_CHECK(kdata[151] == KRecord(Datetime(200007050000), 23.25, 23.47, 23.15, 23.22, 3298.8, 14218));
1204  BOOST_CHECK(kdata[152] == KRecord(Datetime(200007060000), 23.30, 23.42, 23.16, 23.23, 3049.5, 13200));
1205  BOOST_CHECK(kdata[657] == KRecord(Datetime(200208210000), 18.35, 18.75, 18.18, 18.55, 36409.8, 197640));
1206  BOOST_CHECK(kdata[658] == KRecord(Datetime(200208220000), 18.77, 18.89, 18.62, 18.82, 13101.3, 106872));
1207 
1209  query = KQuery(0, Null<hku_int64>(), KQuery::DAY, KQuery::EQUAL_FORWARD);
1210  kdata = stock.getKData(query);
1211  BOOST_CHECK(kdata[2710] == KRecord(Datetime(201106030000), 10.02, 10.14, 10.0, 10.09, 38726.1, 384820));
1212  BOOST_CHECK(kdata[2709] == KRecord(Datetime(201106020000), 10.33, 10.37, 9.93, 10.04, 103909.3, 780543.0));
1213  BOOST_CHECK(kdata[2554] == KRecord(Datetime(201010140000), 11.03, 11.40, 10.90, 10.94, 322428.8, 2195006));
1214  BOOST_CHECK(kdata[2548] == KRecord(Datetime(201009290000), 9.27, 9.64, 9.21, 9.49, 99719.8, 799165));
1215  BOOST_CHECK(kdata[2547] == KRecord(Datetime(201009280000), 9.82, 9.82, 9.55, 9.56, 81241.5, 639882));
1216 
1218  query = KQuery(0, Null<hku_int64>(), KQuery::DAY, KQuery::EQUAL_BACKWARD);
1219  kdata = stock.getKData(query);
1220  BOOST_CHECK(kdata[0] == KRecord(Datetime(199911100000), 29.5, 29.8, 27.0, 27.75, 485910.2, 1740850));
1221  BOOST_CHECK(kdata[151] == KRecord(Datetime(200007050000), 23.25, 23.47, 23.15, 23.22, 3298.8, 14218));
1222  BOOST_CHECK(kdata[152] == KRecord(Datetime(200007060000), 23.30, 23.42, 23.16, 23.23, 3049.5, 13200));
1223  BOOST_CHECK(kdata[657] == KRecord(Datetime(200208210000), 18.32, 18.72, 18.15, 18.52, 36409.8, 197640));
1224  BOOST_CHECK(kdata[658] == KRecord(Datetime(200208220000), 18.74, 18.86, 18.59, 18.79, 13101.3, 106872));
1225 }
1226 
1227 
1229 BOOST_AUTO_TEST_CASE( test_getKRecordByDate ) {
1230  StockManager& sm = StockManager::instance();
1231  Stock stock = sm.getStock("sh600000");
1232  KQuery query;
1233  KData kdata;
1234  KRecord result;
1235 
1237  result = kdata.getKRecordByDate(Datetime(200101010000));
1238  BOOST_CHECK(result == Null<KRecord>());
1239 
1241  query = KQuery(1, 10, KQuery::DAY);
1242  kdata = stock.getKData(query);
1243  result = kdata.getKRecordByDate(Datetime(199911100000));
1244  BOOST_CHECK(result == Null<KRecord>());
1245 
1246  result = kdata.getKRecordByDate(kdata[0].datetime);
1247  BOOST_CHECK(result == kdata[0]);
1248 
1249  result = kdata.getKRecordByDate(kdata[1].datetime);
1250  BOOST_CHECK(result == kdata[1]);
1251 
1252  result = kdata.getKRecordByDate(Datetime(199911130000));
1253  BOOST_CHECK(result == Null<KRecord>());
1254 
1255  result = kdata.getKRecordByDate(kdata[7].datetime);
1256  BOOST_CHECK(result == kdata[7]);
1257 
1258  result = kdata.getKRecordByDate(kdata[8].datetime);
1259  BOOST_CHECK(result == kdata[8]);
1260 
1261  result = kdata.getKRecordByDate(Datetime(199911240000));
1262  BOOST_CHECK(result == Null<KRecord>());
1263 
1264 
1266  query = KQuery(1, 10, KQuery::WEEK);
1267  kdata = stock.getKData(query);
1268  result = kdata.getKRecordByDate(Datetime(199911070000));
1269  BOOST_CHECK(result == Null<KRecord>());
1270 
1271  result = kdata.getKRecordByDate(Datetime(199911080000));
1272  BOOST_CHECK(result == Null<KRecord>());
1273 
1274  result = kdata.getKRecordByDate(kdata[0].datetime);
1275  BOOST_CHECK(result == kdata[0]);
1276 
1277  result = kdata.getKRecordByDate(kdata[1].datetime);
1278  BOOST_CHECK(result == kdata[1]);
1279 
1280  result = kdata.getKRecordByDate(Datetime(199101200000));
1281  BOOST_CHECK(result == Null<KRecord>());
1282 
1283  result = kdata.getKRecordByDate(kdata[7].datetime);
1284  BOOST_CHECK(result == kdata[7]);
1285 
1286  result = kdata.getKRecordByDate(kdata[8].datetime);
1287  BOOST_CHECK(result == kdata[8]);
1288 
1289  result = kdata.getKRecordByDate(Datetime(199002190000));
1290  BOOST_CHECK(result == Null<KRecord>());
1291 
1292  result = kdata.getKRecordByDate(Datetime(199002250000));
1293  BOOST_CHECK(result == Null<KRecord>());
1294 
1296  query = KQuery(1, 10, KQuery::MONTH);
1297  kdata = stock.getKData(query);
1298  result = kdata.getKRecordByDate(Datetime(199012010000));
1299  BOOST_CHECK(result == Null<KRecord>());
1300 
1301  result = kdata.getKRecordByDate(Datetime(199012310000));
1302  BOOST_CHECK(result == Null<KRecord>());
1303 
1304  result = kdata.getKRecordByDate(kdata[0].datetime);
1305  BOOST_CHECK(result == kdata[0]);
1306 
1307  result = kdata.getKRecordByDate(kdata[1].datetime);
1308  BOOST_CHECK(result == kdata[1]);
1309 
1310  result = kdata.getKRecordByDate(Datetime(199103020000));
1311  BOOST_CHECK(result == Null<KRecord>());
1312 
1313  result = kdata.getKRecordByDate(kdata[7].datetime);
1314  BOOST_CHECK(result == kdata[7]);
1315 
1316  result = kdata.getKRecordByDate(kdata[8].datetime);
1317  BOOST_CHECK(result == kdata[8]);
1318 
1319  result = kdata.getKRecordByDate(Datetime(199109020000));
1320  BOOST_CHECK(result == Null<KRecord>());
1321 
1322  result = kdata.getKRecordByDate(Datetime(199110010000));
1323  BOOST_CHECK(result == Null<KRecord>());
1324 
1326  query = KQuery(1, 10, KQuery::QUARTER);
1327  kdata = stock.getKData(query);
1328  result = kdata.getKRecordByDate(Datetime(199909300000));
1329  BOOST_CHECK(result == Null<KRecord>());
1330 
1331  result = kdata.getKRecordByDate(Datetime(199910010000));
1332  BOOST_CHECK(result == Null<KRecord>());
1333 
1334  result = kdata.getKRecordByDate(kdata[0].datetime);
1335  BOOST_CHECK(result == kdata[0]);
1336 
1337  result = kdata.getKRecordByDate(kdata[1].datetime);
1338  BOOST_CHECK(result == kdata[1]);
1339 
1340  result = kdata.getKRecordByDate(Datetime(200012010000));
1341  BOOST_CHECK(result == Null<KRecord>());
1342 
1343  result = kdata.getKRecordByDate(kdata[7].datetime);
1344  BOOST_CHECK(result == kdata[7]);
1345 
1346  result = kdata.getKRecordByDate(kdata[8].datetime);
1347  BOOST_CHECK(result == kdata[8]);
1348 
1349  result = kdata.getKRecordByDate(Datetime(200204010000));
1350  BOOST_CHECK(result == Null<KRecord>());
1351 
1352  result = kdata.getKRecordByDate(Datetime(200205010000));
1353  BOOST_CHECK(result == Null<KRecord>());
1354 
1355 
1357  query = KQuery(1, 10, KQuery::HALFYEAR);
1358  kdata = stock.getKData(query);
1359  result = kdata.getKRecordByDate(Datetime(199906300000));
1360  BOOST_CHECK(result == Null<KRecord>());
1361 
1362  result = kdata.getKRecordByDate(Datetime(199907010000));
1363  BOOST_CHECK(result == Null<KRecord>());
1364 
1365  result = kdata.getKRecordByDate(kdata[0].datetime);
1366  BOOST_CHECK(result == kdata[0]);
1367 
1368  result = kdata.getKRecordByDate(kdata[1].datetime);
1369  BOOST_CHECK(result == kdata[1]);
1370 
1371  result = kdata.getKRecordByDate(Datetime(200209010000));
1372  BOOST_CHECK(result == Null<KRecord>());
1373 
1374  result = kdata.getKRecordByDate(kdata[7].datetime);
1375  BOOST_CHECK(result == kdata[7]);
1376 
1377  result = kdata.getKRecordByDate(kdata[8].datetime);
1378  BOOST_CHECK(result == kdata[8]);
1379 
1380  result = kdata.getKRecordByDate(Datetime(200407010000));
1381  BOOST_CHECK(result == Null<KRecord>());
1382 
1383  result = kdata.getKRecordByDate(Datetime(200408010000));
1384  BOOST_CHECK(result == Null<KRecord>());
1385 
1386 
1388  query = KQuery(1, 10, KQuery::YEAR);
1389  kdata = stock.getKData(query);
1390  result = kdata.getKRecordByDate(Datetime(199801010000));
1391  BOOST_CHECK(result == Null<KRecord>());
1392 
1393  result = kdata.getKRecordByDate(Datetime(199901010000));
1394  BOOST_CHECK(result == Null<KRecord>());
1395 
1396  result = kdata.getKRecordByDate(kdata[0].datetime);
1397  BOOST_CHECK(result == kdata[0]);
1398 
1399  result = kdata.getKRecordByDate(kdata[1].datetime);
1400  BOOST_CHECK(result == kdata[1]);
1401 
1402  result = kdata.getKRecordByDate(Datetime(200209010000));
1403  BOOST_CHECK(result == Null<KRecord>());
1404 
1405  result = kdata.getKRecordByDate(kdata[7].datetime);
1406  BOOST_CHECK(result == kdata[7]);
1407 
1408  result = kdata.getKRecordByDate(kdata[8].datetime);
1409  BOOST_CHECK(result == kdata[8]);
1410 
1411  result = kdata.getKRecordByDate(Datetime(200901010000));
1412  BOOST_CHECK(result == Null<KRecord>());
1413 
1414  result = kdata.getKRecordByDate(Datetime(200901020000));
1415  BOOST_CHECK(result == Null<KRecord>());
1416 
1418  query = KQuery(1, 10, KQuery::MIN);
1419  kdata = stock.getKData(query);
1420  result = kdata.getKRecordByDate(Datetime(200001030931));
1421  BOOST_CHECK(result == Null<KRecord>());
1422 
1423  result = kdata.getKRecordByDate(Datetime(200001040931));
1424  BOOST_CHECK(result == Null<KRecord>());
1425 
1426  result = kdata.getKRecordByDate(kdata[0].datetime);
1427  BOOST_CHECK(result == kdata[0]);
1428 
1429  result = kdata.getKRecordByDate(kdata[1].datetime);
1430  BOOST_CHECK(result == kdata[1]);
1431 
1432  result = kdata.getKRecordByDate(kdata[7].datetime);
1433  BOOST_CHECK(result == kdata[7]);
1434 
1435  result = kdata.getKRecordByDate(kdata[8].datetime);
1436  BOOST_CHECK(result == kdata[8]);
1437 
1438  result = kdata.getKRecordByDate(Datetime(200001040941));
1439  BOOST_CHECK(result == Null<KRecord>());
1440 
1441  result = kdata.getKRecordByDate(Datetime(200001040942));
1442  BOOST_CHECK(result == Null<KRecord>());
1443 
1445  query = KQuery(1, 10, KQuery::MIN5);
1446  kdata = stock.getKData(query);
1447  result = kdata.getKRecordByDate(Datetime(200001030935));
1448  BOOST_CHECK(result == Null<KRecord>());
1449 
1450  result = kdata.getKRecordByDate(Datetime(200001040935));
1451  BOOST_CHECK(result == Null<KRecord>());
1452 
1453  result = kdata.getKRecordByDate(kdata[0].datetime);
1454  BOOST_CHECK(result == kdata[0]);
1455 
1456  result = kdata.getKRecordByDate(kdata[1].datetime);
1457  BOOST_CHECK(result == kdata[1]);
1458 
1459  result = kdata.getKRecordByDate(Datetime(200001041011));
1460  BOOST_CHECK(result == Null<KRecord>());
1461 
1462  result = kdata.getKRecordByDate(kdata[7].datetime);
1463  BOOST_CHECK(result == kdata[7]);
1464 
1465  result = kdata.getKRecordByDate(kdata[8].datetime);
1466  BOOST_CHECK(result == kdata[8]);
1467 
1468  result = kdata.getKRecordByDate(Datetime(200001041025));
1469  BOOST_CHECK(result == Null<KRecord>());
1470 
1471  result = kdata.getKRecordByDate(Datetime(200001041030));
1472  BOOST_CHECK(result == Null<KRecord>());
1473 
1474 
1476  query = KQuery(1, 10, KQuery::MIN15);
1477  kdata = stock.getKData(query);
1478  result = kdata.getKRecordByDate(Datetime(200001030945));
1479  BOOST_CHECK(result == Null<KRecord>());
1480 
1481  result = kdata.getKRecordByDate(Datetime(200001040945));
1482  BOOST_CHECK(result == Null<KRecord>());
1483 
1484  result = kdata.getKRecordByDate(kdata[0].datetime);
1485  BOOST_CHECK(result == kdata[0]);
1486 
1487  result = kdata.getKRecordByDate(kdata[1].datetime);
1488  BOOST_CHECK(result == kdata[1]);
1489 
1490  result = kdata.getKRecordByDate(Datetime(200001041116));
1491  BOOST_CHECK(result == Null<KRecord>());
1492 
1493  result = kdata.getKRecordByDate(kdata[7].datetime);
1494  BOOST_CHECK(result == kdata[7]);
1495 
1496  result = kdata.getKRecordByDate(kdata[8].datetime);
1497  BOOST_CHECK(result == kdata[8]);
1498 
1499  result = kdata.getKRecordByDate(Datetime(200001041345));
1500  BOOST_CHECK(result == Null<KRecord>());
1501 
1502  result = kdata.getKRecordByDate(Datetime(200001041400));
1503  BOOST_CHECK(result == Null<KRecord>());
1504 
1506  query = KQuery(1, 10, KQuery::MIN30);
1507  kdata = stock.getKData(query);
1508  result = kdata.getKRecordByDate(Datetime(200001031000));
1509  BOOST_CHECK(result == Null<KRecord>());
1510 
1511  result = kdata.getKRecordByDate(Datetime(200001041000));
1512  BOOST_CHECK(result == Null<KRecord>());
1513 
1514  result = kdata.getKRecordByDate(kdata[0].datetime);
1515  BOOST_CHECK(result == kdata[0]);
1516 
1517  result = kdata.getKRecordByDate(kdata[1].datetime);
1518  BOOST_CHECK(result == kdata[1]);
1519 
1520  result = kdata.getKRecordByDate(Datetime(200001041116));
1521  BOOST_CHECK(result == Null<KRecord>());
1522 
1523  result = kdata.getKRecordByDate(kdata[7].datetime);
1524  BOOST_CHECK(result == kdata[7]);
1525 
1526  result = kdata.getKRecordByDate(kdata[8].datetime);
1527  BOOST_CHECK(result == kdata[8]);
1528 
1529  result = kdata.getKRecordByDate(Datetime(200001051100));
1530  BOOST_CHECK(result == Null<KRecord>());
1531 
1532  result = kdata.getKRecordByDate(Datetime(200001051100));
1533  BOOST_CHECK(result == Null<KRecord>());
1534 
1536  query = KQuery(1, 10, KQuery::MIN60);
1537  kdata = stock.getKData(query);
1538  result = kdata.getKRecordByDate(Datetime(200001031030));
1539  BOOST_CHECK(result == Null<KRecord>());
1540 
1541  result = kdata.getKRecordByDate(Datetime(200001041030));
1542  BOOST_CHECK(result == Null<KRecord>());
1543 
1544  result = kdata.getKRecordByDate(kdata[0].datetime);
1545  BOOST_CHECK(result == kdata[0]);
1546 
1547  result = kdata.getKRecordByDate(kdata[1].datetime);
1548  BOOST_CHECK(result == kdata[1]);
1549 
1550  result = kdata.getKRecordByDate(Datetime(200001041116));
1551  BOOST_CHECK(result == Null<KRecord>());
1552 
1553  result = kdata.getKRecordByDate(kdata[7].datetime);
1554  BOOST_CHECK(result == kdata[7]);
1555 
1556  result = kdata.getKRecordByDate(kdata[8].datetime);
1557  BOOST_CHECK(result == kdata[8]);
1558 
1559  result = kdata.getKRecordByDate(Datetime(200001061400));
1560  BOOST_CHECK(result == Null<KRecord>());
1561 
1562  result = kdata.getKRecordByDate(Datetime(200001061400));
1563  BOOST_CHECK(result == Null<KRecord>());
1564 }
1565 
1566 
BOOST_AUTO_TEST_CASE(test_getDatetimeList)
Definition: test_KData.cpp:30