9 #include <boost/test/unit_test.hpp> 11 #define BOOST_TEST_MODULE test_hikyuu_base 12 #include <boost/test/unit_test.hpp> 16 #include <hikyuu/StockManager.h> 17 #include <hikyuu/KQuery.h> 18 #include <hikyuu/KData.h> 19 #include <hikyuu/Stock.h> 31 StockManager& sm = StockManager::instance();
38 result = kdata.getDatetimeList();
39 BOOST_CHECK(result.empty());
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
141 StockManager& sm = StockManager::instance();
144 KRecord record, expect;
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);
162 stock = sm.getStock(
"sh000001");
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);
172 expect = KRecord(Datetime(199012190000),96.05,99.98,95.79,99.98,49.4,1260);
173 BOOST_CHECK(record == expect);
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);
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);
189 expect = KRecord(Datetime(201112060000),2326.66,2331.892 ,2310.155, 2325.905, 4262559.5, 45917078);
190 BOOST_CHECK(record == expect);
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);
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);
212 expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
213 BOOST_CHECK(record == expect);
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);
224 expect = KRecord(Datetime(199012200000), 104.3, 104.39, 99.98, 104.39, 8.4, 197);
225 BOOST_CHECK(record == expect);
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);
236 expect = KRecord(Datetime(199012200000), 104.3, 104.39, 99.98, 104.39, 8.4, 197);
237 BOOST_CHECK(record == expect);
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);
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);
253 expect = KRecord(Datetime(201112060000), 2326.66, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078);
254 BOOST_CHECK(record == expect);
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);
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);
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);
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);
294 expect = KRecord(Datetime(201112060000), 2326.66, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078);
295 BOOST_CHECK(record == expect);
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);
307 expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
308 BOOST_CHECK(record == expect);
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);
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);
324 expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
325 BOOST_CHECK(record == expect);
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);
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);
341 expect = KRecord(Datetime(199012200000), 104.3, 104.39, 99.98, 104.39, 8.4, 197);
342 BOOST_CHECK(record == expect);
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);
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);
358 expect = KRecord(Datetime(201112050000), 2363.111, 2363.127, 2327.61, 2333.229, 4864121.6, 52214970);
359 BOOST_CHECK(record == expect);
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);
370 expect = KRecord(Datetime(201111230000), 2415.197, 2418.56, 2390.654, 2395.065, 5004336, 50547851);
371 BOOST_CHECK(record == expect);
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);
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);
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);
395 expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.980, 49.4, 1260);
396 BOOST_CHECK(record == expect);
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);
407 expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.980, 49.4, 1260);
408 BOOST_CHECK(record == expect);
410 record = kdata[kdata.size()-1];
411 BOOST_CHECK(record.datetime == Datetime(199012200000));
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);
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);
431 expect = KRecord(Datetime(199012200000), 104.3, 104.39, 99.98, 104.39, 8.4, 197);
432 BOOST_CHECK(record == expect);
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);
443 query = KQuery(0, Null<hku_int64>(), KQuery::MIN);
444 kdata = stock.getKData(query);
445 BOOST_CHECK(kdata.size() == 682823L);
447 expect = KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158);
448 BOOST_CHECK(record == expect);
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);
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);
460 expect = KRecord(Datetime(201112061500), 2325.38, 2326.1, 2324.6, 2325.90, 5215150, 566312);
461 BOOST_CHECK(record == expect);
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);
470 query = KQuery(0, 1, KQuery::MIN);
471 kdata = stock.getKData(query);
472 BOOST_CHECK(kdata.size() == 1);
474 expect = KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158);
475 BOOST_CHECK(record == expect);
478 query = KQuery(1, 2, KQuery::MIN);
479 kdata = stock.getKData(query);
480 BOOST_CHECK(kdata.size() == 1);
482 BOOST_CHECK(record.datetime == Datetime(200001040932));
485 query = KQuery(1, 10, KQuery::MIN);
486 kdata = stock.getKData(query);
487 BOOST_CHECK(kdata.size() == 9);
489 BOOST_CHECK(record.datetime == Datetime(200001040932));
491 record = kdata[kdata.size()-1];
492 BOOST_CHECK(record.datetime == Datetime(200001040940));
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);
500 BOOST_CHECK(record.datetime == Datetime(201112061500));
503 query = KQuery(0, 0, KQuery::MIN);
504 kdata = stock.getKData(query);
505 BOOST_CHECK(kdata.size() == 0);
508 query = KQuery(1, 1, KQuery::MIN);
509 kdata = stock.getKData(query);
510 BOOST_CHECK(kdata.size() == 0);
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);
519 query = KQuery(-1, Null<hku_int64>(), KQuery::MIN);
520 kdata = stock.getKData(query);
521 BOOST_CHECK(kdata.size() == 1);
523 BOOST_CHECK(record.datetime == Datetime(201112061500));
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);
531 BOOST_CHECK(record.datetime == Datetime(200001040931));
533 record = kdata[kdata.size()-1];
534 BOOST_CHECK(record.datetime == Datetime(201112061500));
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);
542 BOOST_CHECK(record.datetime == Datetime(200001040931));
544 record = kdata[kdata.size() - 1];
545 BOOST_CHECK(record.datetime == Datetime(201112061500));
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);
553 BOOST_CHECK(record.datetime == Datetime(200001040932));
555 record = kdata[kdata.size() - 1 ];
556 BOOST_CHECK(record.datetime == Datetime(201112061500));
559 query = KQuery(-2, -1, KQuery::MIN);
560 kdata = stock.getKData(query);
561 BOOST_CHECK(kdata.size() == 1);
563 BOOST_CHECK(record.datetime == Datetime(201112061459));
566 query = KQuery(-10, -2, KQuery::MIN);
567 kdata = stock.getKData(query);
568 BOOST_CHECK(kdata.size() == 8);
570 BOOST_CHECK(record.datetime == Datetime(201112061451));
572 record = kdata[kdata.size()-1];
573 BOOST_CHECK(record.datetime == Datetime(201112061458));
576 query = KQuery(-1, 1, KQuery::MIN);
577 kdata = stock.getKData(query);
578 BOOST_CHECK(kdata.size() == 0);
581 query = KQuery(-(hku_int64)total, 1, KQuery::MIN);
582 kdata = stock.getKData(query);
583 BOOST_CHECK(kdata.size() == 1);
585 BOOST_CHECK(record.datetime == Datetime(200001040931));
588 query = KQuery(-(hku_int64)total, 2, KQuery::MIN);
589 kdata = stock.getKData(query);
590 BOOST_CHECK(kdata.size() == 2);
592 BOOST_CHECK(record.datetime == Datetime(200001040931));
594 record = kdata[kdata.size()-1];
595 BOOST_CHECK(record.datetime == Datetime(200001040932));
598 query = KQuery(0, -(hku_int64)total, KQuery::MIN);
599 kdata = stock.getKData(query);
600 BOOST_CHECK(kdata.size() == 0);
603 query = KQuery(1, -1, KQuery::MIN);
604 kdata = stock.getKData(query);
605 BOOST_CHECK(kdata.size() == 682821);
607 BOOST_CHECK(record.datetime == Datetime(200001040932));
609 record = kdata[kdata.size()-1];
610 BOOST_CHECK(record.datetime == Datetime(201112061459));
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));
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));
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));
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));
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));
677 StockManager& sm = StockManager::instance();
680 KRecord record, expect;
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);
700 expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
701 BOOST_CHECK(record == expect);
704 expect = KRecord(Datetime(199012200000), 104.3, 104.39, 99.98, 104.39, 8.4, 197);
705 BOOST_CHECK(record == expect);
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);
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);
721 expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
722 BOOST_CHECK(record == expect);
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);
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);
738 expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
739 BOOST_CHECK(record == expect);
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);
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);
755 BOOST_CHECK(record.datetime == Datetime(199012200000));
757 record = kdata[kdata.size()-1];
758 BOOST_CHECK(record.datetime == Datetime(201112060000));
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);
770 expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
771 BOOST_CHECK(record == expect);
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));
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);
786 expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
787 BOOST_CHECK(record == expect);
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));
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);
802 expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
803 BOOST_CHECK(record == expect);
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));
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);
818 BOOST_CHECK(record == KRecord(Datetime(199510180000), 705.7200, 716.8300, 705.7200, 716.8300, 232685.5000, 4273054.0000));
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));
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);
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);
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);
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);
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);
867 BOOST_CHECK(record == KRecord(Datetime(199012190000), 96.0500, 99.9800, 95.7900, 99.9800, 49.4000, 1260.0000));
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);
877 BOOST_CHECK(record == KRecord(Datetime(201111140000), 2498.6720, 2529.6320, 2496.3350, 2528.7140, 8252378.1000, 81229813.0000));
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);
887 BOOST_CHECK(record == KRecord(Datetime(201112060000), 2326.6600, 2331.8920, 2310.1550, 2325.9050, 4262559.5000, 45917078.0000));
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));
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));
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));
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));
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));
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));
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));
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);
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);
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);
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);
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));
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));
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));
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);
1051 expect = KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158);
1052 BOOST_CHECK(record == expect);
1055 expect = KRecord(Datetime(200001040932), 1368.3, 1368.491, 1368.3, 1368.491, 2783200, 106916);
1056 BOOST_CHECK(record == expect);
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);
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);
1068 expect = KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158);
1069 BOOST_CHECK(record == expect);
1072 expect = KRecord(Datetime(200001040932), 1368.3, 1368.491, 1368.3, 1368.491, 2783200, 106916);
1073 BOOST_CHECK(record == expect);
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);
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);
1085 BOOST_CHECK(record.datetime == Datetime(200001040931));
1087 record = kdata[kdata.size()-1];
1088 BOOST_CHECK(record.datetime == Datetime(201112061500));
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);
1097 BOOST_CHECK(record.datetime == Datetime(200001040932));
1099 record = kdata[kdata.size()-1];
1100 BOOST_CHECK(record.datetime == Datetime(201112061500));
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);
1108 BOOST_CHECK(record.datetime == Datetime(200001040931));
1110 record = kdata[kdata.size()-1];
1111 BOOST_CHECK(record.datetime == Datetime(201112061458));
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);
1119 BOOST_CHECK(record.datetime == Datetime(200001040931));
1121 record = kdata[kdata.size()-1];
1122 BOOST_CHECK(record.datetime == Datetime(201112061459));
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);
1130 BOOST_CHECK(record.datetime == Datetime(200001040931));
1132 record = kdata[kdata.size()-1];
1133 BOOST_CHECK(record.datetime == Datetime(201112061500));
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);
1141 BOOST_CHECK(record.datetime == Datetime(200303051451));
1143 record = kdata[kdata.size()-1];
1144 BOOST_CHECK(record.datetime == Datetime(200303051454));
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);
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);
1167 BOOST_CHECK(record.datetime == Datetime(200001040931));
1169 query = KQueryByDate(Datetime(200601041446), Datetime(200601041447), KQuery::MIN);
1170 kdata = stock.getKData(query);
1171 BOOST_CHECK(kdata.size() == 1);
1173 BOOST_CHECK(record.datetime == Datetime(200601041446));
1175 query = KQueryByDate(Datetime(201112061500), Datetime(201112061501), KQuery::MIN);
1176 kdata = stock.getKData(query);
1177 BOOST_CHECK(kdata.size() == 1);
1179 BOOST_CHECK(record.datetime == Datetime(201112061500));
1185 StockManager& sm = StockManager::instance();
1186 Stock stock = sm.getStock(
"sh600000");
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));
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));
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));
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));
1230 StockManager& sm = StockManager::instance();
1231 Stock stock = sm.getStock(
"sh600000");
1237 result = kdata.getKRecordByDate(Datetime(200101010000));
1238 BOOST_CHECK(result == Null<KRecord>());
1241 query = KQuery(1, 10, KQuery::DAY);
1242 kdata = stock.getKData(query);
1243 result = kdata.getKRecordByDate(Datetime(199911100000));
1244 BOOST_CHECK(result == Null<KRecord>());
1246 result = kdata.getKRecordByDate(kdata[0].datetime);
1247 BOOST_CHECK(result == kdata[0]);
1249 result = kdata.getKRecordByDate(kdata[1].datetime);
1250 BOOST_CHECK(result == kdata[1]);
1252 result = kdata.getKRecordByDate(Datetime(199911130000));
1253 BOOST_CHECK(result == Null<KRecord>());
1255 result = kdata.getKRecordByDate(kdata[7].datetime);
1256 BOOST_CHECK(result == kdata[7]);
1258 result = kdata.getKRecordByDate(kdata[8].datetime);
1259 BOOST_CHECK(result == kdata[8]);
1261 result = kdata.getKRecordByDate(Datetime(199911240000));
1262 BOOST_CHECK(result == Null<KRecord>());
1266 query = KQuery(1, 10, KQuery::WEEK);
1267 kdata = stock.getKData(query);
1268 result = kdata.getKRecordByDate(Datetime(199911070000));
1269 BOOST_CHECK(result == Null<KRecord>());
1271 result = kdata.getKRecordByDate(Datetime(199911080000));
1272 BOOST_CHECK(result == Null<KRecord>());
1274 result = kdata.getKRecordByDate(kdata[0].datetime);
1275 BOOST_CHECK(result == kdata[0]);
1277 result = kdata.getKRecordByDate(kdata[1].datetime);
1278 BOOST_CHECK(result == kdata[1]);
1280 result = kdata.getKRecordByDate(Datetime(199101200000));
1281 BOOST_CHECK(result == Null<KRecord>());
1283 result = kdata.getKRecordByDate(kdata[7].datetime);
1284 BOOST_CHECK(result == kdata[7]);
1286 result = kdata.getKRecordByDate(kdata[8].datetime);
1287 BOOST_CHECK(result == kdata[8]);
1289 result = kdata.getKRecordByDate(Datetime(199002190000));
1290 BOOST_CHECK(result == Null<KRecord>());
1292 result = kdata.getKRecordByDate(Datetime(199002250000));
1293 BOOST_CHECK(result == Null<KRecord>());
1296 query = KQuery(1, 10, KQuery::MONTH);
1297 kdata = stock.getKData(query);
1298 result = kdata.getKRecordByDate(Datetime(199012010000));
1299 BOOST_CHECK(result == Null<KRecord>());
1301 result = kdata.getKRecordByDate(Datetime(199012310000));
1302 BOOST_CHECK(result == Null<KRecord>());
1304 result = kdata.getKRecordByDate(kdata[0].datetime);
1305 BOOST_CHECK(result == kdata[0]);
1307 result = kdata.getKRecordByDate(kdata[1].datetime);
1308 BOOST_CHECK(result == kdata[1]);
1310 result = kdata.getKRecordByDate(Datetime(199103020000));
1311 BOOST_CHECK(result == Null<KRecord>());
1313 result = kdata.getKRecordByDate(kdata[7].datetime);
1314 BOOST_CHECK(result == kdata[7]);
1316 result = kdata.getKRecordByDate(kdata[8].datetime);
1317 BOOST_CHECK(result == kdata[8]);
1319 result = kdata.getKRecordByDate(Datetime(199109020000));
1320 BOOST_CHECK(result == Null<KRecord>());
1322 result = kdata.getKRecordByDate(Datetime(199110010000));
1323 BOOST_CHECK(result == Null<KRecord>());
1326 query = KQuery(1, 10, KQuery::QUARTER);
1327 kdata = stock.getKData(query);
1328 result = kdata.getKRecordByDate(Datetime(199909300000));
1329 BOOST_CHECK(result == Null<KRecord>());
1331 result = kdata.getKRecordByDate(Datetime(199910010000));
1332 BOOST_CHECK(result == Null<KRecord>());
1334 result = kdata.getKRecordByDate(kdata[0].datetime);
1335 BOOST_CHECK(result == kdata[0]);
1337 result = kdata.getKRecordByDate(kdata[1].datetime);
1338 BOOST_CHECK(result == kdata[1]);
1340 result = kdata.getKRecordByDate(Datetime(200012010000));
1341 BOOST_CHECK(result == Null<KRecord>());
1343 result = kdata.getKRecordByDate(kdata[7].datetime);
1344 BOOST_CHECK(result == kdata[7]);
1346 result = kdata.getKRecordByDate(kdata[8].datetime);
1347 BOOST_CHECK(result == kdata[8]);
1349 result = kdata.getKRecordByDate(Datetime(200204010000));
1350 BOOST_CHECK(result == Null<KRecord>());
1352 result = kdata.getKRecordByDate(Datetime(200205010000));
1353 BOOST_CHECK(result == Null<KRecord>());
1357 query = KQuery(1, 10, KQuery::HALFYEAR);
1358 kdata = stock.getKData(query);
1359 result = kdata.getKRecordByDate(Datetime(199906300000));
1360 BOOST_CHECK(result == Null<KRecord>());
1362 result = kdata.getKRecordByDate(Datetime(199907010000));
1363 BOOST_CHECK(result == Null<KRecord>());
1365 result = kdata.getKRecordByDate(kdata[0].datetime);
1366 BOOST_CHECK(result == kdata[0]);
1368 result = kdata.getKRecordByDate(kdata[1].datetime);
1369 BOOST_CHECK(result == kdata[1]);
1371 result = kdata.getKRecordByDate(Datetime(200209010000));
1372 BOOST_CHECK(result == Null<KRecord>());
1374 result = kdata.getKRecordByDate(kdata[7].datetime);
1375 BOOST_CHECK(result == kdata[7]);
1377 result = kdata.getKRecordByDate(kdata[8].datetime);
1378 BOOST_CHECK(result == kdata[8]);
1380 result = kdata.getKRecordByDate(Datetime(200407010000));
1381 BOOST_CHECK(result == Null<KRecord>());
1383 result = kdata.getKRecordByDate(Datetime(200408010000));
1384 BOOST_CHECK(result == Null<KRecord>());
1388 query = KQuery(1, 10, KQuery::YEAR);
1389 kdata = stock.getKData(query);
1390 result = kdata.getKRecordByDate(Datetime(199801010000));
1391 BOOST_CHECK(result == Null<KRecord>());
1393 result = kdata.getKRecordByDate(Datetime(199901010000));
1394 BOOST_CHECK(result == Null<KRecord>());
1396 result = kdata.getKRecordByDate(kdata[0].datetime);
1397 BOOST_CHECK(result == kdata[0]);
1399 result = kdata.getKRecordByDate(kdata[1].datetime);
1400 BOOST_CHECK(result == kdata[1]);
1402 result = kdata.getKRecordByDate(Datetime(200209010000));
1403 BOOST_CHECK(result == Null<KRecord>());
1405 result = kdata.getKRecordByDate(kdata[7].datetime);
1406 BOOST_CHECK(result == kdata[7]);
1408 result = kdata.getKRecordByDate(kdata[8].datetime);
1409 BOOST_CHECK(result == kdata[8]);
1411 result = kdata.getKRecordByDate(Datetime(200901010000));
1412 BOOST_CHECK(result == Null<KRecord>());
1414 result = kdata.getKRecordByDate(Datetime(200901020000));
1415 BOOST_CHECK(result == Null<KRecord>());
1418 query = KQuery(1, 10, KQuery::MIN);
1419 kdata = stock.getKData(query);
1420 result = kdata.getKRecordByDate(Datetime(200001030931));
1421 BOOST_CHECK(result == Null<KRecord>());
1423 result = kdata.getKRecordByDate(Datetime(200001040931));
1424 BOOST_CHECK(result == Null<KRecord>());
1426 result = kdata.getKRecordByDate(kdata[0].datetime);
1427 BOOST_CHECK(result == kdata[0]);
1429 result = kdata.getKRecordByDate(kdata[1].datetime);
1430 BOOST_CHECK(result == kdata[1]);
1432 result = kdata.getKRecordByDate(kdata[7].datetime);
1433 BOOST_CHECK(result == kdata[7]);
1435 result = kdata.getKRecordByDate(kdata[8].datetime);
1436 BOOST_CHECK(result == kdata[8]);
1438 result = kdata.getKRecordByDate(Datetime(200001040941));
1439 BOOST_CHECK(result == Null<KRecord>());
1441 result = kdata.getKRecordByDate(Datetime(200001040942));
1442 BOOST_CHECK(result == Null<KRecord>());
1445 query = KQuery(1, 10, KQuery::MIN5);
1446 kdata = stock.getKData(query);
1447 result = kdata.getKRecordByDate(Datetime(200001030935));
1448 BOOST_CHECK(result == Null<KRecord>());
1450 result = kdata.getKRecordByDate(Datetime(200001040935));
1451 BOOST_CHECK(result == Null<KRecord>());
1453 result = kdata.getKRecordByDate(kdata[0].datetime);
1454 BOOST_CHECK(result == kdata[0]);
1456 result = kdata.getKRecordByDate(kdata[1].datetime);
1457 BOOST_CHECK(result == kdata[1]);
1459 result = kdata.getKRecordByDate(Datetime(200001041011));
1460 BOOST_CHECK(result == Null<KRecord>());
1462 result = kdata.getKRecordByDate(kdata[7].datetime);
1463 BOOST_CHECK(result == kdata[7]);
1465 result = kdata.getKRecordByDate(kdata[8].datetime);
1466 BOOST_CHECK(result == kdata[8]);
1468 result = kdata.getKRecordByDate(Datetime(200001041025));
1469 BOOST_CHECK(result == Null<KRecord>());
1471 result = kdata.getKRecordByDate(Datetime(200001041030));
1472 BOOST_CHECK(result == Null<KRecord>());
1476 query = KQuery(1, 10, KQuery::MIN15);
1477 kdata = stock.getKData(query);
1478 result = kdata.getKRecordByDate(Datetime(200001030945));
1479 BOOST_CHECK(result == Null<KRecord>());
1481 result = kdata.getKRecordByDate(Datetime(200001040945));
1482 BOOST_CHECK(result == Null<KRecord>());
1484 result = kdata.getKRecordByDate(kdata[0].datetime);
1485 BOOST_CHECK(result == kdata[0]);
1487 result = kdata.getKRecordByDate(kdata[1].datetime);
1488 BOOST_CHECK(result == kdata[1]);
1490 result = kdata.getKRecordByDate(Datetime(200001041116));
1491 BOOST_CHECK(result == Null<KRecord>());
1493 result = kdata.getKRecordByDate(kdata[7].datetime);
1494 BOOST_CHECK(result == kdata[7]);
1496 result = kdata.getKRecordByDate(kdata[8].datetime);
1497 BOOST_CHECK(result == kdata[8]);
1499 result = kdata.getKRecordByDate(Datetime(200001041345));
1500 BOOST_CHECK(result == Null<KRecord>());
1502 result = kdata.getKRecordByDate(Datetime(200001041400));
1503 BOOST_CHECK(result == Null<KRecord>());
1506 query = KQuery(1, 10, KQuery::MIN30);
1507 kdata = stock.getKData(query);
1508 result = kdata.getKRecordByDate(Datetime(200001031000));
1509 BOOST_CHECK(result == Null<KRecord>());
1511 result = kdata.getKRecordByDate(Datetime(200001041000));
1512 BOOST_CHECK(result == Null<KRecord>());
1514 result = kdata.getKRecordByDate(kdata[0].datetime);
1515 BOOST_CHECK(result == kdata[0]);
1517 result = kdata.getKRecordByDate(kdata[1].datetime);
1518 BOOST_CHECK(result == kdata[1]);
1520 result = kdata.getKRecordByDate(Datetime(200001041116));
1521 BOOST_CHECK(result == Null<KRecord>());
1523 result = kdata.getKRecordByDate(kdata[7].datetime);
1524 BOOST_CHECK(result == kdata[7]);
1526 result = kdata.getKRecordByDate(kdata[8].datetime);
1527 BOOST_CHECK(result == kdata[8]);
1529 result = kdata.getKRecordByDate(Datetime(200001051100));
1530 BOOST_CHECK(result == Null<KRecord>());
1532 result = kdata.getKRecordByDate(Datetime(200001051100));
1533 BOOST_CHECK(result == Null<KRecord>());
1536 query = KQuery(1, 10, KQuery::MIN60);
1537 kdata = stock.getKData(query);
1538 result = kdata.getKRecordByDate(Datetime(200001031030));
1539 BOOST_CHECK(result == Null<KRecord>());
1541 result = kdata.getKRecordByDate(Datetime(200001041030));
1542 BOOST_CHECK(result == Null<KRecord>());
1544 result = kdata.getKRecordByDate(kdata[0].datetime);
1545 BOOST_CHECK(result == kdata[0]);
1547 result = kdata.getKRecordByDate(kdata[1].datetime);
1548 BOOST_CHECK(result == kdata[1]);
1550 result = kdata.getKRecordByDate(Datetime(200001041116));
1551 BOOST_CHECK(result == Null<KRecord>());
1553 result = kdata.getKRecordByDate(kdata[7].datetime);
1554 BOOST_CHECK(result == kdata[7]);
1556 result = kdata.getKRecordByDate(kdata[8].datetime);
1557 BOOST_CHECK(result == kdata[8]);
1559 result = kdata.getKRecordByDate(Datetime(200001061400));
1560 BOOST_CHECK(result == Null<KRecord>());
1562 result = kdata.getKRecordByDate(Datetime(200001061400));
1563 BOOST_CHECK(result == Null<KRecord>());
BOOST_AUTO_TEST_CASE(test_getDatetimeList)