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();
35 BOOST_CHECK(s1 == Null<Stock>());
38 s1 = sm.getStock(
"sh000001");
39 BOOST_CHECK(s1 != Null<Stock>());
42 Stock s2 = sm.getStock(
"sh000001");
43 BOOST_CHECK(s1 == s2);
46 s2 = sm.getStock(
"sz000001");
47 BOOST_CHECK(s1 != s2);
52 StockManager& sm = StockManager::instance();
54 Stock stock = sm.getStock(
"sz000001");
58 StockWeightList weightList = stock.getWeight();
59 BOOST_CHECK(weightList.size() == 23);
60 weight = weightList.front();
61 BOOST_CHECK(weight.datetime() == Datetime(199104030000L));
62 BOOST_CHECK(weight.countAsGift() == 0.0);
63 BOOST_CHECK(weight.countForSell() == 0.0);
64 BOOST_CHECK(weight.priceForSell() == 0.0);
65 BOOST_CHECK(weight.bonus() == 0.0);
66 BOOST_CHECK(weight.increasement() == 0.0);
67 BOOST_CHECK(weight.totalCount() == 150);
68 BOOST_CHECK(weight.freeCount() == 68);
70 weight = weightList.back();
71 BOOST_CHECK(weight.datetime() == Datetime(201108050000L));
72 BOOST_CHECK(weight.countAsGift() == 0.0);
73 BOOST_CHECK(weight.countForSell() == 0.0);
74 BOOST_CHECK(weight.priceForSell() == 0.0);
75 BOOST_CHECK(weight.bonus() == 0.0);
76 BOOST_CHECK(weight.increasement() == 0.0);
77 BOOST_CHECK(weight.totalCount() == 512335);
78 BOOST_CHECK(weight.freeCount() == 310536);
81 weightList = stock.getWeight(Datetime(199501010000),
82 Datetime(199701010000));
83 BOOST_CHECK(weightList.size() == 2);
84 weight = weightList.front();
85 BOOST_CHECK(weight.datetime() == Datetime(199509250000));
86 BOOST_CHECK(weight.countAsGift() == 2.0);
87 BOOST_CHECK(weight.countForSell() == 0.0);
88 BOOST_CHECK(weight.priceForSell() == 0.0);
89 BOOST_CHECK(weight.bonus() == 3.0);
90 BOOST_CHECK(weight.increasement() == 0.0);
91 BOOST_CHECK(weight.totalCount() == 51728);
92 BOOST_CHECK(weight.freeCount() == 35721);
94 weight = weightList.back();
95 BOOST_CHECK(weight.datetime() == Datetime(199605270000));
96 BOOST_CHECK(weight.countAsGift() == 5.0);
97 BOOST_CHECK(weight.countForSell() == 0.0);
98 BOOST_CHECK(weight.priceForSell() == 0.0);
99 BOOST_CHECK(weight.bonus() == 0.0);
100 BOOST_CHECK(weight.increasement() == 5.0);
101 BOOST_CHECK(weight.totalCount() == 103456);
102 BOOST_CHECK(weight.freeCount() == 71393);
105 weightList = stock.getWeight(Datetime(199509250000),
106 Datetime(199701010000));
107 BOOST_CHECK(weightList.size() == 2);
108 weight = weightList.front();
109 BOOST_CHECK(weight.datetime() == Datetime(199509250000));
110 BOOST_CHECK(weight.countAsGift() == 2.0);
111 BOOST_CHECK(weight.countForSell() == 0.0);
112 BOOST_CHECK(weight.priceForSell() == 0.0);
113 BOOST_CHECK(weight.bonus() == 3.0);
114 BOOST_CHECK(weight.increasement() == 0.0);
115 BOOST_CHECK(weight.totalCount() == 51728);
116 BOOST_CHECK(weight.freeCount() == 35721);
118 weight = weightList.back();
119 BOOST_CHECK(weight.datetime() == Datetime(199605270000));
120 BOOST_CHECK(weight.countAsGift() == 5.0);
121 BOOST_CHECK(weight.countForSell() == 0.0);
122 BOOST_CHECK(weight.priceForSell() == 0.0);
123 BOOST_CHECK(weight.bonus() == 0.0);
124 BOOST_CHECK(weight.increasement() == 5.0);
125 BOOST_CHECK(weight.totalCount() == 103456);
126 BOOST_CHECK(weight.freeCount() == 71393);
129 weightList = stock.getWeight(Datetime(199501010000),
130 Datetime(199605270000));
131 BOOST_CHECK(weightList.size() == 1);
132 weight = weightList.front();
133 BOOST_CHECK(weight.datetime() == Datetime(199509250000));
134 BOOST_CHECK(weight.countAsGift() == 2.0);
135 BOOST_CHECK(weight.countForSell() == 0.0);
136 BOOST_CHECK(weight.priceForSell() == 0.0);
137 BOOST_CHECK(weight.bonus() == 3.0);
138 BOOST_CHECK(weight.increasement() == 0.0);
139 BOOST_CHECK(weight.totalCount() == 51728);
140 BOOST_CHECK(weight.freeCount() == 35721);
143 weightList = stock.getWeight(Datetime(201101010000), Null<Datetime>());
144 BOOST_CHECK(weightList.size() == 1);
145 weight = weightList.front();
146 BOOST_CHECK(weight.datetime() == Datetime(201108050000));
147 BOOST_CHECK(weight.countAsGift() == 0.0);
148 BOOST_CHECK(weight.countForSell() == 0.0);
149 BOOST_CHECK(weight.priceForSell() == 0.0);
150 BOOST_CHECK(weight.bonus() == 0.0);
151 BOOST_CHECK(weight.increasement() == 0.0);
152 BOOST_CHECK(weight.totalCount() == 512335);
153 BOOST_CHECK(weight.freeCount() == 310536);
156 weightList = stock.getWeight(Datetime(201101010000));
157 BOOST_CHECK(weightList.size() == 1);
158 weight = weightList.front();
159 BOOST_CHECK(weight.datetime() == Datetime(201108050000));
160 BOOST_CHECK(weight.countAsGift() == 0.0);
161 BOOST_CHECK(weight.countForSell() == 0.0);
162 BOOST_CHECK(weight.priceForSell() == 0.0);
163 BOOST_CHECK(weight.bonus() == 0.0);
164 BOOST_CHECK(weight.increasement() == 0.0);
165 BOOST_CHECK(weight.totalCount() == 512335);
166 BOOST_CHECK(weight.freeCount() == 310536);
172 StockManager& sm = StockManager::instance();
175 Stock stock = sm.getStock(
"sh000001");
176 BOOST_CHECK(stock.getCount(KQuery::DAY) == 5121);
179 stock = sm.getStock(
"Sz000001");
180 BOOST_CHECK(stock.getCount(KQuery::DAY) == 4937);
183 stock = sm.getStock(
"sh000001");
184 BOOST_CHECK(stock.getCount(KQuery::WEEK) == 1059);
187 stock = sm.getStock(
"Sz000001");
188 BOOST_CHECK(stock.getCount(KQuery::WEEK) == 1037);
191 stock = sm.getStock(
"sh000001");
192 BOOST_CHECK(stock.getCount(KQuery::MONTH) == 253);
195 stock = sm.getStock(
"Sz000001");
196 BOOST_CHECK(stock.getCount(KQuery::MONTH) == 250);
199 stock = sm.getStock(
"sh000001");
200 BOOST_CHECK(stock.getCount(KQuery::QUARTER) == 85);
203 stock = sm.getStock(
"Sz000001");
204 BOOST_CHECK(stock.getCount(KQuery::QUARTER) == 84);
207 stock = sm.getStock(
"sh000001");
208 BOOST_CHECK(stock.getCount(KQuery::HALFYEAR) == 43);
211 stock = sm.getStock(
"Sz000001");
212 BOOST_CHECK(stock.getCount(KQuery::HALFYEAR) == 42);
215 stock = sm.getStock(
"sh000001");
216 BOOST_CHECK(stock.getCount(KQuery::YEAR) == 22);
219 stock = sm.getStock(
"Sz000001");
220 BOOST_CHECK(stock.getCount(KQuery::YEAR) == 21);
223 stock = sm.getStock(
"sh000001");
224 BOOST_CHECK(stock.getCount(KQuery::MIN) == 682823L);
227 stock = sm.getStock(
"Sz000001");
228 BOOST_CHECK(stock.getCount(KQuery::MIN) == 641091L);
231 stock = sm.getStock(
"sh000001");
232 BOOST_CHECK(stock.getCount(KQuery::MIN5) == 133980L);
235 stock = sm.getStock(
"Sz000001");
236 BOOST_CHECK(stock.getCount(KQuery::MIN5) == 126381L);
239 stock = sm.getStock(
"sh000001");
240 BOOST_CHECK(stock.getCount(KQuery::MIN15) == 44750L);
243 stock = sm.getStock(
"Sz000001");
244 BOOST_CHECK(stock.getCount(KQuery::MIN15) == 42195L);
247 stock = sm.getStock(
"sh000001");
248 BOOST_CHECK(stock.getCount(KQuery::MIN30) == 22380L);
251 stock = sm.getStock(
"Sz000001");
252 BOOST_CHECK(stock.getCount(KQuery::MIN30) == 21101L);
255 stock = sm.getStock(
"sh000001");
256 BOOST_CHECK(stock.getCount(KQuery::MIN60) == 11193L);
259 stock = sm.getStock(
"Sz000001");
260 BOOST_CHECK(stock.getCount(KQuery::MIN60) == 10553L);
266 StockManager& sm = StockManager::instance();
267 Stock stock = sm.getStock(
"sh000001");
268 KRecord record, expect;
271 record = stock.getKRecord(0);
272 expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
273 BOOST_CHECK(record == expect);
276 record = stock.getKRecord(10);
277 expect = KRecord(Datetime(199101030000), 128.840, 130.14, 128.84, 130.140, 9.3, 141);
278 BOOST_CHECK(record == expect);
281 size_t total = stock.getCount();
282 record = stock.getKRecord(total - 1);
283 expect = KRecord(Datetime(201112060000), 2326.66, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078);
284 BOOST_CHECK(record == expect);
287 record = stock.getKRecord(0, KQuery::WEEK);
288 expect = KRecord(Datetime(199012170000), 96.05, 109.130, 95.790, 109.130, 59.4, 1485);
289 BOOST_CHECK(record == expect);
292 record = stock.getKRecord(10, KQuery::WEEK);
293 expect = KRecord(Datetime(199102250000), 134.37, 134.87, 132.47, 132.53, 827.1, 11500);
294 BOOST_CHECK(record == expect);
297 total = stock.getCount(KQuery::WEEK);
298 record = stock.getKRecord(total - 1, KQuery::WEEK);
299 expect = KRecord(Datetime(201112050000), 2363.111, 2363.127, 2310.155, 2325.905, 9126681.1, 98132048);
300 BOOST_CHECK(record == expect);
303 record = stock.getKRecord(0, KQuery::MONTH);
304 expect = KRecord(Datetime(199012010000), 96.05, 127.610, 95.790, 127.610, 93.6, 1884);
305 BOOST_CHECK(record == expect);
308 record = stock.getKRecord(10, KQuery::MONTH);
309 expect = KRecord(Datetime(199110010000), 181.550, 218.600, 179.800, 218.600, 14953.6, 223443);
310 BOOST_CHECK(record == expect);
313 total = stock.getCount(KQuery::MONTH);
314 record = stock.getKRecord(total - 1, KQuery::MONTH);
315 expect = KRecord(Datetime(201112010000), 2392.485, 2423.559, 2310.155, 2325.905, 24378748.5, 256650941);
316 BOOST_CHECK(record == expect);
319 record = stock.getKRecord(0, KQuery::QUARTER);
320 expect = KRecord(Datetime(199010010000), 96.05, 127.610, 95.790, 127.610, 93.6, 1884);
321 BOOST_CHECK(record == expect);
324 record = stock.getKRecord(10, KQuery::QUARTER);
325 expect = KRecord(Datetime(199304010000), 921.590, 1392.620, 859.48, 1007.050, 5181883.5, 27631999);
326 BOOST_CHECK(record == expect);
329 total = stock.getCount(KQuery::QUARTER);
330 record = stock.getKRecord(total - 1, KQuery::QUARTER);
331 expect = KRecord(Datetime(201110010000), 2363.078, 2536.779, 2307.146, 2325.905, 298278573.1, 3100147936);
332 BOOST_CHECK(record == expect);
335 record = stock.getKRecord(0, KQuery::HALFYEAR);
336 expect = KRecord(Datetime(199007010000), 96.05, 127.610, 95.790, 127.610, 93.6, 1884);
337 BOOST_CHECK(record == expect);
340 record = stock.getKRecord(10, KQuery::HALFYEAR);
341 expect = KRecord(Datetime(199507010000), 623.140, 792.540, 552.840, 555.290, 18764625.6, 351276329);
342 BOOST_CHECK(record == expect);
345 total = stock.getCount(KQuery::HALFYEAR);
346 record = stock.getKRecord(total - 1, KQuery::HALFYEAR);
347 expect = KRecord(Datetime(201107010000), 2767.834, 2826.959, 2307.146, 2325.905, 842271699.6, 8187717694);
348 BOOST_CHECK(record == expect);
351 record = stock.getKRecord(0, KQuery::YEAR);
352 expect = KRecord(Datetime(199001010000), 96.05, 127.61, 95.79, 127.61, 93.6, 1884);
353 BOOST_CHECK(record == expect);
356 record = stock.getKRecord(10, KQuery::YEAR);
357 expect = KRecord(Datetime(200001010000), 1368.693, 2125.724, 1361.214, 2073.476, 326945832.5, 3433225623);
358 BOOST_CHECK(record == expect);
361 total = stock.getCount(KQuery::YEAR);
362 record = stock.getKRecord(total - 1, KQuery::YEAR);
363 expect = KRecord(Datetime(201101010000), 2825.329, 3067.456, 2307.146, 2325.905, 2308389935.3, 21513978512);
364 BOOST_CHECK(record == expect);
367 record = stock.getKRecord(0, KQuery::MIN);
368 expect = KRecord(Datetime(
"2000-1-4 9:31"), 1366.580, 1368.692, 1366.579, 1368.692, 4124880, 191158);
369 BOOST_CHECK(record == expect);
372 record = stock.getKRecord(10, KQuery::MIN);
373 expect = KRecord(Datetime(200001040941), 1367.389, 1367.389, 1366.578, 1366.578, 1214910.4, 31811);
374 BOOST_CHECK(record == expect);
377 total = stock.getCount(KQuery::MIN);
378 record = stock.getKRecord(total - 1, KQuery::MIN);
379 expect = KRecord(Datetime(
"2011-12-06 15:00"), 2325.380, 2326.1, 2324.6, 2325.9, 5215150, 566312);
380 BOOST_CHECK(record == expect);
383 record = stock.getKRecord(0, KQuery::MIN5);
384 expect = KRecord(Datetime(200001040935), 1366.580, 1369.680, 1366.579, 1369.187, 106611.5, 438171);
385 BOOST_CHECK(record == expect);
388 record = stock.getKRecord(10, KQuery::MIN5);
389 expect = KRecord(Datetime(200001041025), 1366.291, 1366.582, 1366.144, 1366.526, 89332, 118007);
390 BOOST_CHECK(record == expect);
393 total = stock.getCount(KQuery::MIN5);
394 record = stock.getKRecord(total - 1, KQuery::MIN5);
395 expect = KRecord(Datetime(201112061500), 2323.059, 2325.931, 2323.059, 2325.905, 176347.1, 1873675);
396 BOOST_CHECK(record == expect);
399 record = stock.getKRecord(0, KQuery::MIN15);
400 expect = KRecord(Datetime(200001040945), 1366.580, 1369.680, 1364.645, 1364.763, 250875.9, 912990);
401 BOOST_CHECK(record == expect);
404 record = stock.getKRecord(10, KQuery::MIN15);
405 expect = KRecord(Datetime(200001041345), 1399.325, 1403.996, 1399.325, 1403.056, 441489.9, 547552);
406 BOOST_CHECK(record == expect);
409 total = stock.getCount(KQuery::MIN15);
410 record = stock.getKRecord(total - 1, KQuery::MIN15);
411 expect = KRecord(Datetime(201112061500), 2323.068, 2325.931, 2320.819, 2325.905, 402339.3, 4060591);
412 BOOST_CHECK(record == expect);
415 record = stock.getKRecord(0, KQuery::MIN30);
416 expect = KRecord(Datetime(200001041000), 1366.580, 1369.68, 1361.459, 1361.459, 455153, 1370442);
417 BOOST_CHECK(record == expect);
420 record = stock.getKRecord(10, KQuery::MIN30);
421 expect = KRecord(Datetime(200001051100), 1421.179, 1425.868, 1421.179, 1423.859, 1109219.5, 1282851);
422 BOOST_CHECK(record == expect);
425 total = stock.getCount(KQuery::MIN30);
426 record = stock.getKRecord(total - 1, KQuery::MIN30);
427 expect = KRecord(Datetime(201112061500), 2327.919, 2327.919, 2320.819, 2325.905, 660297.5, 6415054);
428 BOOST_CHECK(record == expect);
431 record = stock.getKRecord(0, KQuery::MIN60);
432 expect = KRecord(Datetime(200001041030), 1366.580, 1369.68, 1361.295, 1367.683, 1041787.5, 2370736);
433 BOOST_CHECK(record == expect);
436 record = stock.getKRecord(10, KQuery::MIN60);
437 expect = KRecord(Datetime(200001061400), 1411.490, 1436.53, 1411.49, 1436.53, 2432679.2, 3016536);
438 BOOST_CHECK(record == expect);
441 total = stock.getCount(KQuery::MIN60);
442 record = stock.getKRecord(total - 1, KQuery::MIN60);
443 expect = KRecord(Datetime(201112061500), 2326.036, 2331.378, 2320.819, 2325.905, 1332210, 11886356);
444 BOOST_CHECK(record == expect);
450 StockManager& sm = StockManager::instance();
454 size_t out_start, out_end;
455 stock = sm.getStock(
"sh000001");
459 success = stock.getIndexRange(query, out_start, out_end);
460 BOOST_CHECK(success ==
true);
461 BOOST_CHECK(out_start == 0);
462 BOOST_CHECK(out_end == 5121);
464 query = KQuery(0, Null<hku_int64>(), KQuery::WEEK);
465 success = stock.getIndexRange(query, out_start, out_end);
466 BOOST_CHECK(success ==
true);
467 BOOST_CHECK(out_start == 0);
468 BOOST_CHECK(out_end == 1059);
470 query = KQuery(0, Null<hku_int64>(), KQuery::MONTH);
471 success = stock.getIndexRange(query, out_start, out_end);
472 BOOST_CHECK(success ==
true);
473 BOOST_CHECK(out_start == 0);
474 BOOST_CHECK(out_end == 253);
476 query = KQuery(0, Null<hku_int64>(), KQuery::QUARTER);
477 success = stock.getIndexRange(query, out_start, out_end);
478 BOOST_CHECK(success ==
true);
479 BOOST_CHECK(out_start == 0);
480 BOOST_CHECK(out_end == 85);
482 query = KQuery(0, Null<hku_int64>(), KQuery::HALFYEAR);
483 success = stock.getIndexRange(query, out_start, out_end);
484 BOOST_CHECK(success ==
true);
485 BOOST_CHECK(out_start == 0);
486 BOOST_CHECK(out_end == 43);
488 query = KQuery(0, Null<hku_int64>(), KQuery::YEAR);
489 success = stock.getIndexRange(query, out_start, out_end);
490 BOOST_CHECK(success ==
true);
491 BOOST_CHECK(out_start == 0);
492 BOOST_CHECK(out_end == 22);
494 query = KQuery(0, Null<hku_int64>(), KQuery::MIN);
495 success = stock.getIndexRange(query, out_start, out_end);
496 BOOST_CHECK(success ==
true);
497 BOOST_CHECK(out_start == 0);
498 BOOST_CHECK(out_end == 682823L);
500 query = KQuery(0, Null<hku_int64>(), KQuery::MIN5);
501 success = stock.getIndexRange(query, out_start, out_end);
502 BOOST_CHECK(success ==
true);
503 BOOST_CHECK(out_start == 0);
504 BOOST_CHECK(out_end == 133980L);
506 query = KQuery(0, Null<hku_int64>(), KQuery::MIN15);
507 success = stock.getIndexRange(query, out_start, out_end);
508 BOOST_CHECK(success ==
true);
509 BOOST_CHECK(out_start == 0);
510 BOOST_CHECK(out_end == 44750);
512 query = KQuery(0, Null<hku_int64>(), KQuery::MIN30);
513 success = stock.getIndexRange(query, out_start, out_end);
514 BOOST_CHECK(success ==
true);
515 BOOST_CHECK(out_start == 0);
516 BOOST_CHECK(out_end == 22380L);
518 query = KQuery(0, Null<hku_int64>(), KQuery::MIN60);
519 success = stock.getIndexRange(query, out_start, out_end);
520 BOOST_CHECK(success ==
true);
521 BOOST_CHECK(out_start == 0);
522 BOOST_CHECK(out_end == 11193);
525 query = KQueryByDate();
526 success = stock.getIndexRange(query, out_start, out_end);
527 BOOST_CHECK(success ==
true);
528 BOOST_CHECK(out_start == 0);
529 BOOST_CHECK(out_end == 5121);
531 query = KQueryByDate(Datetime::minDatetime(), Null<Datetime>(), KQuery::WEEK);
532 success = stock.getIndexRange(query, out_start, out_end);
533 BOOST_CHECK(success ==
true);
534 BOOST_CHECK(out_start == 0);
535 BOOST_CHECK(out_end == 1059);
537 query = KQueryByDate(Datetime::minDatetime(), Null<Datetime>(), KQuery::MONTH);
538 success = stock.getIndexRange(query, out_start, out_end);
539 BOOST_CHECK(success ==
true);
540 BOOST_CHECK(out_start == 0);
541 BOOST_CHECK(out_end == 253);
543 query = KQueryByDate(Datetime::minDatetime(), Null<Datetime>(), KQuery::QUARTER);
544 success = stock.getIndexRange(query, out_start, out_end);
545 BOOST_CHECK(success ==
true);
546 BOOST_CHECK(out_start == 0);
547 BOOST_CHECK(out_end == 85);
549 query = KQueryByDate(Datetime::minDatetime(), Null<Datetime>(), KQuery::HALFYEAR);
550 success = stock.getIndexRange(query, out_start, out_end);
551 BOOST_CHECK(success ==
true);
552 BOOST_CHECK(out_start == 0);
553 BOOST_CHECK(out_end == 43);
555 query = KQueryByDate(Datetime::minDatetime(), Null<Datetime>(), KQuery::YEAR);
556 success = stock.getIndexRange(query, out_start, out_end);
557 BOOST_CHECK(success ==
true);
558 BOOST_CHECK(out_start == 0);
559 BOOST_CHECK(out_end == 22);
561 query = KQueryByDate(Datetime::minDatetime(), Null<Datetime>(), KQuery::MIN);
562 success = stock.getIndexRange(query, out_start, out_end);
563 BOOST_CHECK(success ==
true);
564 BOOST_CHECK(out_start == 0);
565 BOOST_CHECK(out_end == 682823L);
567 query = KQueryByDate(Datetime::minDatetime(), Null<Datetime>(), KQuery::MIN5);
568 success = stock.getIndexRange(query, out_start, out_end);
569 BOOST_CHECK(success ==
true);
570 BOOST_CHECK(out_start == 0);
571 BOOST_CHECK(out_end == 133980L);
573 query = KQueryByDate(Datetime::minDatetime(), Null<Datetime>(), KQuery::MIN15);
574 success = stock.getIndexRange(query, out_start, out_end);
575 BOOST_CHECK(success ==
true);
576 BOOST_CHECK(out_start == 0);
577 BOOST_CHECK(out_end == 44750);
579 query = KQueryByDate(Datetime::minDatetime(), Null<Datetime>(), KQuery::MIN30);
580 success = stock.getIndexRange(query, out_start, out_end);
581 BOOST_CHECK(success ==
true);
582 BOOST_CHECK(out_start == 0);
583 BOOST_CHECK(out_end == 22380L);
585 query = KQueryByDate(Datetime::minDatetime(), Null<Datetime>(), KQuery::MIN60);
586 success = stock.getIndexRange(query, out_start, out_end);
587 BOOST_CHECK(success ==
true);
588 BOOST_CHECK(out_start == 0);
589 BOOST_CHECK(out_end == 11193);
592 query = KQuery(168,165);
593 success = stock.getIndexRange(query, out_start, out_end);
594 BOOST_CHECK(success ==
false);
595 BOOST_CHECK(out_start == 0);
596 BOOST_CHECK(out_end == 0);
598 query = KQuery(168,165, KQuery::WEEK);
599 success = stock.getIndexRange(query, out_start, out_end);
600 BOOST_CHECK(success ==
false);
601 BOOST_CHECK(out_start == 0);
602 BOOST_CHECK(out_end == 0);
604 query = KQuery(168,165, KQuery::MONTH);
605 success = stock.getIndexRange(query, out_start, out_end);
606 BOOST_CHECK(success ==
false);
607 BOOST_CHECK(out_start == 0);
608 BOOST_CHECK(out_end == 0);
610 query = KQuery(168,165, KQuery::QUARTER);
611 success = stock.getIndexRange(query, out_start, out_end);
612 BOOST_CHECK(success ==
false);
613 BOOST_CHECK(out_start == 0);
614 BOOST_CHECK(out_end == 0);
616 query = KQuery(168,165, KQuery::HALFYEAR);
617 success = stock.getIndexRange(query, out_start, out_end);
618 BOOST_CHECK(success ==
false);
619 BOOST_CHECK(out_start == 0);
620 BOOST_CHECK(out_end == 0);
622 query = KQuery(168,165, KQuery::YEAR);
623 success = stock.getIndexRange(query, out_start, out_end);
624 BOOST_CHECK(success ==
false);
625 BOOST_CHECK(out_start == 0);
626 BOOST_CHECK(out_end == 0);
628 query = KQuery(168,165, KQuery::MIN);
629 success = stock.getIndexRange(query, out_start, out_end);
630 BOOST_CHECK(success ==
false);
631 BOOST_CHECK(out_start == 0);
632 BOOST_CHECK(out_end == 0);
634 query = KQuery(168,165, KQuery::MIN5);
635 success = stock.getIndexRange(query, out_start, out_end);
636 BOOST_CHECK(success ==
false);
637 BOOST_CHECK(out_start == 0);
638 BOOST_CHECK(out_end == 0);
640 query = KQuery(168,165, KQuery::MIN15);
641 success = stock.getIndexRange(query, out_start, out_end);
642 BOOST_CHECK(success ==
false);
643 BOOST_CHECK(out_start == 0);
644 BOOST_CHECK(out_end == 0);
646 query = KQuery(168,165, KQuery::MIN30);
647 success = stock.getIndexRange(query, out_start, out_end);
648 BOOST_CHECK(success ==
false);
649 BOOST_CHECK(out_start == 0);
650 BOOST_CHECK(out_end == 0);
652 query = KQuery(168,165, KQuery::MIN60);
653 success = stock.getIndexRange(query, out_start, out_end);
654 BOOST_CHECK(success ==
false);
655 BOOST_CHECK(out_start == 0);
656 BOOST_CHECK(out_end == 0);
659 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000));
660 success = stock.getIndexRange(query, out_start, out_end);
661 BOOST_CHECK(success ==
false);
662 BOOST_CHECK(out_start == 0);
663 BOOST_CHECK(out_end == 0);
665 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::WEEK);
666 success = stock.getIndexRange(query, out_start, out_end);
667 BOOST_CHECK(success ==
false);
668 BOOST_CHECK(out_start == 0);
669 BOOST_CHECK(out_end == 0);
671 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::MONTH);
672 success = stock.getIndexRange(query, out_start, out_end);
673 BOOST_CHECK(success ==
false);
674 BOOST_CHECK(out_start == 0);
675 BOOST_CHECK(out_end == 0);
677 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::QUARTER);
678 success = stock.getIndexRange(query, out_start, out_end);
679 BOOST_CHECK(success ==
false);
680 BOOST_CHECK(out_start == 0);
681 BOOST_CHECK(out_end == 0);
683 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::HALFYEAR);
684 success = stock.getIndexRange(query, out_start, out_end);
685 BOOST_CHECK(success ==
false);
686 BOOST_CHECK(out_start == 0);
687 BOOST_CHECK(out_end == 0);
689 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::YEAR);
690 success = stock.getIndexRange(query, out_start, out_end);
691 BOOST_CHECK(success ==
false);
692 BOOST_CHECK(out_start == 0);
693 BOOST_CHECK(out_end == 0);
695 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::MIN);
696 success = stock.getIndexRange(query, out_start, out_end);
697 BOOST_CHECK(success ==
false);
698 BOOST_CHECK(out_start == 0);
699 BOOST_CHECK(out_end == 0);
701 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::MIN5);
702 success = stock.getIndexRange(query, out_start, out_end);
703 BOOST_CHECK(success ==
false);
704 BOOST_CHECK(out_start == 0);
705 BOOST_CHECK(out_end == 0);
707 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::MIN15);
708 success = stock.getIndexRange(query, out_start, out_end);
709 BOOST_CHECK(success ==
false);
710 BOOST_CHECK(out_start == 0);
711 BOOST_CHECK(out_end == 0);
713 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::MIN30);
714 success = stock.getIndexRange(query, out_start, out_end);
715 BOOST_CHECK(success ==
false);
716 BOOST_CHECK(out_start == 0);
717 BOOST_CHECK(out_end == 0);
719 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::MIN60);
720 success = stock.getIndexRange(query, out_start, out_end);
721 BOOST_CHECK(success ==
false);
722 BOOST_CHECK(out_start == 0);
723 BOOST_CHECK(out_end == 0);
726 query = KQuery(165,165);
727 success = stock.getIndexRange(query, out_start, out_end);
728 BOOST_CHECK(success ==
false);
729 BOOST_CHECK(out_start == 0);
730 BOOST_CHECK(out_end == 0);
732 query = KQuery(165,165, KQuery::WEEK);
733 success = stock.getIndexRange(query, out_start, out_end);
734 BOOST_CHECK(success ==
false);
735 BOOST_CHECK(out_start == 0);
736 BOOST_CHECK(out_end == 0);
738 query = KQuery(165,165, KQuery::MONTH);
739 success = stock.getIndexRange(query, out_start, out_end);
740 BOOST_CHECK(success ==
false);
741 BOOST_CHECK(out_start == 0);
742 BOOST_CHECK(out_end == 0);
744 query = KQuery(165,165, KQuery::QUARTER);
745 success = stock.getIndexRange(query, out_start, out_end);
746 BOOST_CHECK(success ==
false);
747 BOOST_CHECK(out_start == 0);
748 BOOST_CHECK(out_end == 0);
750 query = KQuery(165,165, KQuery::HALFYEAR);
751 success = stock.getIndexRange(query, out_start, out_end);
752 BOOST_CHECK(success ==
false);
753 BOOST_CHECK(out_start == 0);
754 BOOST_CHECK(out_end == 0);
756 query = KQuery(165,165, KQuery::YEAR);
757 success = stock.getIndexRange(query, out_start, out_end);
758 BOOST_CHECK(success ==
false);
759 BOOST_CHECK(out_start == 0);
760 BOOST_CHECK(out_end == 0);
762 query = KQuery(165,165, KQuery::MIN);
763 success = stock.getIndexRange(query, out_start, out_end);
764 BOOST_CHECK(success ==
false);
765 BOOST_CHECK(out_start == 0);
766 BOOST_CHECK(out_end == 0);
768 query = KQuery(165,165, KQuery::MIN5);
769 success = stock.getIndexRange(query, out_start, out_end);
770 BOOST_CHECK(success ==
false);
771 BOOST_CHECK(out_start == 0);
772 BOOST_CHECK(out_end == 0);
774 query = KQuery(165,165, KQuery::MIN15);
775 success = stock.getIndexRange(query, out_start, out_end);
776 BOOST_CHECK(success ==
false);
777 BOOST_CHECK(out_start == 0);
778 BOOST_CHECK(out_end == 0);
780 query = KQuery(165,165, KQuery::MIN30);
781 success = stock.getIndexRange(query, out_start, out_end);
782 BOOST_CHECK(success ==
false);
783 BOOST_CHECK(out_start == 0);
784 BOOST_CHECK(out_end == 0);
786 query = KQuery(165,165, KQuery::MIN60);
787 success = stock.getIndexRange(query, out_start, out_end);
788 BOOST_CHECK(success ==
false);
789 BOOST_CHECK(out_start == 0);
790 BOOST_CHECK(out_end == 0);
793 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000));
794 success = stock.getIndexRange(query, out_start, out_end);
795 BOOST_CHECK(success ==
false);
796 BOOST_CHECK(out_start == 0);
797 BOOST_CHECK(out_end == 0);
799 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::WEEK);
800 success = stock.getIndexRange(query, out_start, out_end);
801 BOOST_CHECK(success ==
false);
802 BOOST_CHECK(out_start == 0);
803 BOOST_CHECK(out_end == 0);
805 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::MONTH);
806 success = stock.getIndexRange(query, out_start, out_end);
807 BOOST_CHECK(success ==
false);
808 BOOST_CHECK(out_start == 0);
809 BOOST_CHECK(out_end == 0);
811 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::QUARTER);
812 success = stock.getIndexRange(query, out_start, out_end);
813 BOOST_CHECK(success ==
false);
814 BOOST_CHECK(out_start == 0);
815 BOOST_CHECK(out_end == 0);
817 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::HALFYEAR);
818 success = stock.getIndexRange(query, out_start, out_end);
819 BOOST_CHECK(success ==
false);
820 BOOST_CHECK(out_start == 0);
821 BOOST_CHECK(out_end == 0);
823 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::YEAR);
824 success = stock.getIndexRange(query, out_start, out_end);
825 BOOST_CHECK(success ==
false);
826 BOOST_CHECK(out_start == 0);
827 BOOST_CHECK(out_end == 0);
829 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::MIN);
830 success = stock.getIndexRange(query, out_start, out_end);
831 BOOST_CHECK(success ==
false);
832 BOOST_CHECK(out_start == 0);
833 BOOST_CHECK(out_end == 0);
835 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::MIN5);
836 success = stock.getIndexRange(query, out_start, out_end);
837 BOOST_CHECK(success ==
false);
838 BOOST_CHECK(out_start == 0);
839 BOOST_CHECK(out_end == 0);
841 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::MIN15);
842 success = stock.getIndexRange(query, out_start, out_end);
843 BOOST_CHECK(success ==
false);
844 BOOST_CHECK(out_start == 0);
845 BOOST_CHECK(out_end == 0);
847 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::MIN30);
848 success = stock.getIndexRange(query, out_start, out_end);
849 BOOST_CHECK(success ==
false);
850 BOOST_CHECK(out_start == 0);
851 BOOST_CHECK(out_end == 0);
853 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::MIN60);
854 success = stock.getIndexRange(query, out_start, out_end);
855 BOOST_CHECK(success ==
false);
856 BOOST_CHECK(out_start == 0);
857 BOOST_CHECK(out_end == 0);
860 query = KQuery(1,10);
861 success = stock.getIndexRange(query, out_start, out_end);
862 BOOST_CHECK(success ==
true);
863 BOOST_CHECK(out_start == 1);
864 BOOST_CHECK(out_end == 10);
866 query = KQuery(1,10, KQuery::WEEK);
867 success = stock.getIndexRange(query, out_start, out_end);
868 BOOST_CHECK(success ==
true);
869 BOOST_CHECK(out_start == 1);
870 BOOST_CHECK(out_end == 10);
872 query = KQuery(1,10, KQuery::MONTH);
873 success = stock.getIndexRange(query, out_start, out_end);
874 BOOST_CHECK(success ==
true);
875 BOOST_CHECK(out_start == 1);
876 BOOST_CHECK(out_end == 10);
878 query = KQuery(1,10, KQuery::QUARTER);
879 success = stock.getIndexRange(query, out_start, out_end);
880 BOOST_CHECK(success ==
true);
881 BOOST_CHECK(out_start == 1);
882 BOOST_CHECK(out_end == 10);
884 query = KQuery(1,10, KQuery::HALFYEAR);
885 success = stock.getIndexRange(query, out_start, out_end);
886 BOOST_CHECK(success ==
true);
887 BOOST_CHECK(out_start == 1);
888 BOOST_CHECK(out_end == 10);
890 query = KQuery(1,10, KQuery::YEAR);
891 success = stock.getIndexRange(query, out_start, out_end);
892 BOOST_CHECK(success ==
true);
893 BOOST_CHECK(out_start == 1);
894 BOOST_CHECK(out_end == 10);
896 query = KQuery(1,10, KQuery::MIN);
897 success = stock.getIndexRange(query, out_start, out_end);
898 BOOST_CHECK(success ==
true);
899 BOOST_CHECK(out_start == 1);
900 BOOST_CHECK(out_end == 10);
902 query = KQuery(1,10, KQuery::MIN5);
903 success = stock.getIndexRange(query, out_start, out_end);
904 BOOST_CHECK(success ==
true);
905 BOOST_CHECK(out_start == 1);
906 BOOST_CHECK(out_end == 10);
908 query = KQuery(1,10, KQuery::MIN15);
909 success = stock.getIndexRange(query, out_start, out_end);
910 BOOST_CHECK(success ==
true);
911 BOOST_CHECK(out_start == 1);
912 BOOST_CHECK(out_end == 10);
914 query = KQuery(1,10, KQuery::MIN30);
915 success = stock.getIndexRange(query, out_start, out_end);
916 BOOST_CHECK(success ==
true);
917 BOOST_CHECK(out_start == 1);
918 BOOST_CHECK(out_end == 10);
920 query = KQuery(1,10, KQuery::MIN60);
921 success = stock.getIndexRange(query, out_start, out_end);
922 BOOST_CHECK(success ==
true);
923 BOOST_CHECK(out_start == 1);
924 BOOST_CHECK(out_end == 10);
927 query = KQueryByDate(Datetime(199012200000), Datetime(199101030000));
928 success = stock.getIndexRange(query, out_start, out_end);
929 BOOST_CHECK(success ==
true);
930 BOOST_CHECK(out_start == 1);
931 BOOST_CHECK(out_end == 10);
933 query = KQueryByDate(Datetime(199102250000), Datetime(199104290000), KQuery::WEEK);
934 success = stock.getIndexRange(query, out_start, out_end);
935 BOOST_CHECK(success ==
true);
936 BOOST_CHECK(out_start == 10);
937 BOOST_CHECK(out_end == 19);
939 query = KQueryByDate(Datetime(199108010000), Datetime(199201010000), KQuery::MONTH);
940 success = stock.getIndexRange(query, out_start, out_end);
941 BOOST_CHECK(success ==
true);
942 BOOST_CHECK(out_start == 8);
943 BOOST_CHECK(out_end == 13);
945 query = KQueryByDate(Datetime(199201010000), Datetime(199310010000), KQuery::QUARTER);
946 success = stock.getIndexRange(query, out_start, out_end);
947 BOOST_CHECK(success ==
true);
948 BOOST_CHECK(out_start == 5);
949 BOOST_CHECK(out_end == 12);
951 query = KQueryByDate(Datetime(199401010000), Datetime(199801010000), KQuery::HALFYEAR);
952 success = stock.getIndexRange(query, out_start, out_end);
953 BOOST_CHECK(success ==
true);
954 BOOST_CHECK(out_start == 7);
955 BOOST_CHECK(out_end == 15);
957 query = KQueryByDate(Datetime(199601010000), Datetime(200001010000), KQuery::YEAR);
958 success = stock.getIndexRange(query, out_start, out_end);
959 BOOST_CHECK(success ==
true);
960 BOOST_CHECK(out_start == 6);
961 BOOST_CHECK(out_end == 10);
963 query = KQueryByDate(Datetime(200602171016), Datetime(200602171026), KQuery::MIN);
964 success = stock.getIndexRange(query, out_start, out_end);
965 BOOST_CHECK(success ==
true);
966 BOOST_CHECK(out_start == 343796L);
967 BOOST_CHECK(out_end == 343806L);
969 query = KQueryByDate(Datetime(200001041025), Datetime(200001041100), KQuery::MIN5);
970 success = stock.getIndexRange(query, out_start, out_end);
971 BOOST_CHECK(success ==
true);
972 BOOST_CHECK(out_start == 10);
973 BOOST_CHECK(out_end == 17);
975 query = KQueryByDate(Datetime(200001041415), Datetime(200001050945), KQuery::MIN15);
976 success = stock.getIndexRange(query, out_start, out_end);
977 BOOST_CHECK(success ==
true);
978 BOOST_CHECK(out_start == 12);
979 BOOST_CHECK(out_end == 16);
981 query = KQueryByDate(Datetime(200001041330), Datetime(200001051500), KQuery::MIN30);
982 success = stock.getIndexRange(query, out_start, out_end);
983 BOOST_CHECK(success ==
true);
984 BOOST_CHECK(out_start == 4);
985 BOOST_CHECK(out_end == 15);
987 query = KQueryByDate(Datetime(200001061400), Datetime(200001101130), KQuery::MIN60);
988 success = stock.getIndexRange(query, out_start, out_end);
989 BOOST_CHECK(success ==
true);
990 BOOST_CHECK(out_start == 10);
991 BOOST_CHECK(out_end == 17);
994 query = KQueryByDate(Datetime(199012220000), Datetime(199101050000));
995 success = stock.getIndexRange(query, out_start, out_end);
996 BOOST_CHECK(success ==
true);
997 BOOST_CHECK(out_start == 3);
998 BOOST_CHECK(out_end == 12);
1000 query = KQueryByDate(Datetime(199102200000), Datetime(199104230000), KQuery::WEEK);
1001 success = stock.getIndexRange(query, out_start, out_end);
1002 BOOST_CHECK(success ==
true);
1003 BOOST_CHECK(out_start == 10);
1004 BOOST_CHECK(out_end == 19);
1006 query = KQueryByDate(Datetime(199107020000), Datetime(199112300000), KQuery::MONTH);
1007 success = stock.getIndexRange(query, out_start, out_end);
1008 BOOST_CHECK(success ==
true);
1009 BOOST_CHECK(out_start == 8);
1010 BOOST_CHECK(out_end == 13);
1012 query = KQueryByDate(Datetime(199112210000), Datetime(199308010000), KQuery::QUARTER);
1013 success = stock.getIndexRange(query, out_start, out_end);
1014 BOOST_CHECK(success ==
true);
1015 BOOST_CHECK(out_start == 5);
1016 BOOST_CHECK(out_end == 12);
1018 query = KQueryByDate(Datetime(199311010000), Datetime(199711010000), KQuery::HALFYEAR);
1019 success = stock.getIndexRange(query, out_start, out_end);
1020 BOOST_CHECK(success ==
true);
1021 BOOST_CHECK(out_start == 7);
1022 BOOST_CHECK(out_end == 15);
1024 query = KQueryByDate(Datetime(199502010000), Datetime(199912010000), KQuery::YEAR);
1025 success = stock.getIndexRange(query, out_start, out_end);
1026 BOOST_CHECK(success ==
true);
1027 BOOST_CHECK(out_start == 6);
1028 BOOST_CHECK(out_end == 10);
1030 query = KQueryByDate(Datetime(200602171016), Datetime(200602171026), KQuery::MIN);
1031 success = stock.getIndexRange(query, out_start, out_end);
1032 BOOST_CHECK(success ==
true);
1033 BOOST_CHECK(out_start == 343796L);
1034 BOOST_CHECK(out_end == 343806L);
1036 query = KQueryByDate(Datetime(200001041025), Datetime(200001041100), KQuery::MIN5);
1037 success = stock.getIndexRange(query, out_start, out_end);
1038 BOOST_CHECK(success ==
true);
1039 BOOST_CHECK(out_start == 10);
1040 BOOST_CHECK(out_end == 17);
1042 query = KQueryByDate(Datetime(200001041415), Datetime(200001050945), KQuery::MIN15);
1043 success = stock.getIndexRange(query, out_start, out_end);
1044 BOOST_CHECK(success ==
true);
1045 BOOST_CHECK(out_start == 12);
1046 BOOST_CHECK(out_end == 16);
1048 query = KQueryByDate(Datetime(200001041330), Datetime(200001051500), KQuery::MIN30);
1049 success = stock.getIndexRange(query, out_start, out_end);
1050 BOOST_CHECK(success ==
true);
1051 BOOST_CHECK(out_start == 4);
1052 BOOST_CHECK(out_end == 15);
1054 query = KQueryByDate(Datetime(200001061400), Datetime(200001101130), KQuery::MIN60);
1055 success = stock.getIndexRange(query, out_start, out_end);
1056 BOOST_CHECK(success ==
true);
1057 BOOST_CHECK(out_start == 10);
1058 BOOST_CHECK(out_end == 17);
1061 query = KQuery(-1,0);
1062 success = stock.getIndexRange(query, out_start, out_end);
1063 BOOST_CHECK(success ==
false);
1064 BOOST_CHECK(out_start == 0);
1065 BOOST_CHECK(out_end == 0);
1067 query = KQuery(0,-1);
1068 success = stock.getIndexRange(query, out_start, out_end);
1069 BOOST_CHECK(success ==
true);
1070 BOOST_CHECK(out_start == 0);
1071 BOOST_CHECK(out_end == 5120);
1073 query = KQuery(-1,-1);
1074 success = stock.getIndexRange(query, out_start, out_end);
1075 BOOST_CHECK(success ==
false);
1076 BOOST_CHECK(out_start == 0);
1077 BOOST_CHECK(out_end == 0);
1079 query = KQuery(-1, -2);
1080 success = stock.getIndexRange(query, out_start, out_end);
1081 BOOST_CHECK(success ==
false);
1082 BOOST_CHECK(out_start == 0);
1083 BOOST_CHECK(out_end == 0);
1085 query = KQuery(-2,-1);
1086 success = stock.getIndexRange(query, out_start, out_end);
1087 BOOST_CHECK(success ==
true);
1088 BOOST_CHECK(out_start == 5119);
1089 BOOST_CHECK(out_end == 5120);
1091 query = KQuery(-5120,-1);
1092 success = stock.getIndexRange(query, out_start, out_end);
1093 BOOST_CHECK(success ==
true);
1094 BOOST_CHECK(out_start == 1);
1095 BOOST_CHECK(out_end == 5120);
1101 StockManager& sm = StockManager::instance();
1102 Stock stock = sm.getStock(
"sh000001");
1104 KRecord record, expect;
1111 total = stock.getCount(KQuery::DAY);
1112 result = stock.getKRecordList(0, total, KQuery::DAY);
1113 BOOST_CHECK(result.size() == total);
1114 BOOST_CHECK(result[0] == KRecord(Datetime(199012190000), 96.050, 99.980, 95.790, 99.980, 49.4, 1260));
1115 BOOST_CHECK(result[10] == KRecord(Datetime(199101030000), 128.840, 130.140, 128.840, 130.140, 9.3, 141));
1116 BOOST_CHECK(result[5120] == KRecord(Datetime(201112060000), 2326.660, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078));
1119 result = stock.getKRecordList(0, total + 1, KQuery::DAY);
1120 BOOST_CHECK(result.size() == total);
1121 BOOST_CHECK(result[0] == KRecord(Datetime(199012190000), 96.050, 99.980, 95.790, 99.980, 49.4, 1260));
1122 BOOST_CHECK(result[10] == KRecord(Datetime(199101030000), 128.840, 130.140, 128.840, 130.140, 9.3, 141));
1123 BOOST_CHECK(result[5120] == KRecord(Datetime(201112060000), 2326.660, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078));
1126 result = stock.getKRecordList(1, 10, KQuery::DAY);
1127 BOOST_CHECK(result.size() == 9);
1128 BOOST_CHECK(result[0] == KRecord(Datetime(199012200000), 104.300, 104.390, 99.980, 104.390, 8.4, 197));
1129 BOOST_CHECK(result[1] == KRecord(Datetime(199012210000), 109.070, 109.130, 103.730, 109.130, 1.6, 28));
1130 BOOST_CHECK(result[8] == KRecord(Datetime(199101020000), 127.610, 128.840, 127.610, 128.840, 5.9, 91));
1133 result = stock.getKRecordList(0,0, KQuery::DAY);
1134 BOOST_CHECK(result.size() == 0);
1137 result = stock.getKRecordList(total, total, KQuery::DAY);
1138 BOOST_CHECK(result.size() == 0);
1141 result = stock.getKRecordList(2, 1, KQuery::DAY);
1142 BOOST_CHECK(result.size() == 0);
1145 result = stock.getKRecordList(0, 1, KQuery::DAY);
1146 BOOST_CHECK(result.size() == 1);
1147 BOOST_CHECK(result[0] == KRecord(Datetime(199012190000), 96.050, 99.980, 95.790, 99.980, 49.4, 1260));
1150 result = stock.getKRecordList(total - 1, total, KQuery::DAY);
1151 BOOST_CHECK(result.size() == 1);
1152 BOOST_CHECK(result[0] == KRecord(Datetime(201112060000), 2326.660, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078));
1155 result = stock.getKRecordList(total - 1, total + 1, KQuery::DAY);
1156 BOOST_CHECK(result.size() == 1);
1157 BOOST_CHECK(result[0] == KRecord(Datetime(201112060000), 2326.660, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078));
1163 total = stock.getCount(KQuery::WEEK);
1164 result = stock.getKRecordList(0, total, KQuery::WEEK);
1165 BOOST_CHECK(result.size() == total);
1166 BOOST_CHECK(result[0] == KRecord(Datetime(199012170000), 96.05, 109.13, 95.79, 109.130, 59.4, 1485));
1167 BOOST_CHECK(result[1] == KRecord(Datetime(199012240000), 113.57, 126.45, 109.13, 126.450, 28.2, 321));
1168 BOOST_CHECK(result[1058] == KRecord(Datetime(201112050000), 2363.111, 2363.127, 2310.155, 2325.905, 9126681.1, 98132048));
1172 result = stock.getKRecordList(0, total + 1, KQuery::WEEK);
1173 BOOST_CHECK(result.size() == total);
1174 BOOST_CHECK(result[0] == KRecord(Datetime(199012170000), 96.05, 109.13, 95.79, 109.130, 59.4, 1485));
1175 BOOST_CHECK(result[1] == KRecord(Datetime(199012240000), 113.57, 126.45, 109.13, 126.450, 28.2, 321));
1176 BOOST_CHECK(result[1058] == KRecord(Datetime(201112050000), 2363.111, 2363.127, 2310.155, 2325.905, 9126681.1, 98132048));
1179 result = stock.getKRecordList(1, 10, KQuery::WEEK);
1180 BOOST_CHECK(result.size() == 9);
1181 BOOST_CHECK(result[0] == KRecord(Datetime(199012240000), 113.57, 126.45, 109.13, 126.450, 28.2, 321));
1182 BOOST_CHECK(result[1] == KRecord(Datetime(199012310000), 126.56, 131.44, 126.48, 131.440, 47.3, 730));
1183 BOOST_CHECK(result[8] == KRecord(Datetime(199102180000), 133.12, 134.87, 133.08, 134.870, 551, 9271));
1186 result = stock.getKRecordList(0,0, KQuery::WEEK);
1187 BOOST_CHECK(result.size() == 0);
1190 result = stock.getKRecordList(total, total, KQuery::WEEK);
1191 BOOST_CHECK(result.size() == 0);
1194 result = stock.getKRecordList(2, 1, KQuery::WEEK);
1195 BOOST_CHECK(result.size() == 0);
1198 result = stock.getKRecordList(0, 1, KQuery::WEEK);
1199 BOOST_CHECK(result.size() == 1);
1200 BOOST_CHECK(result[0] == KRecord(Datetime(199012170000), 96.05, 109.13, 95.79, 109.130, 59.4, 1485));
1203 result = stock.getKRecordList(total - 1, total, KQuery::WEEK);
1204 BOOST_CHECK(result.size() == 1);
1205 BOOST_CHECK(result[0] == KRecord(Datetime(201112050000), 2363.111, 2363.127, 2310.155, 2325.905, 9126681.1, 98132048));
1208 result = stock.getKRecordList(total - 1, total + 1, KQuery::WEEK);
1209 BOOST_CHECK(result.size() == 1);
1210 BOOST_CHECK(result[0] == KRecord(Datetime(201112050000), 2363.111, 2363.127, 2310.155, 2325.905, 9126681.1, 98132048));
1217 total = stock.getCount(KQuery::MONTH);
1218 result = stock.getKRecordList(0, total, KQuery::MONTH);
1219 BOOST_CHECK(result.size() == total);
1220 BOOST_CHECK(result[0] == KRecord(Datetime(199012010000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1221 BOOST_CHECK(result[1] == KRecord(Datetime(199101010000), 127.61, 135.19, 127.61, 129.970, 3637.1, 67197));
1222 BOOST_CHECK(result[252] == KRecord(Datetime(201112010000), 2392.485, 2423.559, 2310.155, 2325.905, 24378748.5, 256650941));
1226 result = stock.getKRecordList(0, total + 1, KQuery::MONTH);
1227 BOOST_CHECK(result.size() == total);
1228 BOOST_CHECK(result[0] == KRecord(Datetime(199012010000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1229 BOOST_CHECK(result[1] == KRecord(Datetime(199101010000), 127.61, 135.19, 127.61, 129.970, 3637.1, 67197));
1230 BOOST_CHECK(result[252] == KRecord(Datetime(201112010000), 2392.485, 2423.559, 2310.155, 2325.905, 24378748.5, 256650941));
1233 result = stock.getKRecordList(1, 10, KQuery::MONTH);
1234 BOOST_CHECK(result.size() == 9);
1235 BOOST_CHECK(result[0] == KRecord(Datetime(199101010000), 127.61, 135.19, 127.61, 129.970, 3637.1, 67197));
1236 BOOST_CHECK(result[1] == KRecord(Datetime(199102010000), 129.5, 134.87, 128.06, 133.010, 3027.3, 50982));
1237 BOOST_CHECK(result[8] == KRecord(Datetime(199109010000), 180.08, 191.18, 178.43, 180.920, 19410.4, 286133));
1240 result = stock.getKRecordList(0,0, KQuery::MONTH);
1241 BOOST_CHECK(result.size() == 0);
1244 result = stock.getKRecordList(total, total, KQuery::MONTH);
1245 BOOST_CHECK(result.size() == 0);
1248 result = stock.getKRecordList(2, 1, KQuery::MONTH);
1249 BOOST_CHECK(result.size() == 0);
1252 result = stock.getKRecordList(0, 1, KQuery::MONTH);
1253 BOOST_CHECK(result.size() == 1);
1254 BOOST_CHECK(result[0] == KRecord(Datetime(199012010000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1257 result = stock.getKRecordList(total - 1, total, KQuery::MONTH);
1258 BOOST_CHECK(result.size() == 1);
1259 BOOST_CHECK(result[0] == KRecord(Datetime(201112010000), 2392.485, 2423.559, 2310.155, 2325.905, 24378748.5, 256650941));
1262 result = stock.getKRecordList(total - 1, total + 1, KQuery::MONTH);
1263 BOOST_CHECK(result.size() == 1);
1264 BOOST_CHECK(result[0] == KRecord(Datetime(201112010000), 2392.485, 2423.559, 2310.155, 2325.905, 24378748.5, 256650941));
1271 total = stock.getCount(KQuery::QUARTER);
1272 result = stock.getKRecordList(0, total, KQuery::QUARTER);
1273 BOOST_CHECK(result.size() == total);
1274 BOOST_CHECK(result[0] == KRecord(Datetime(199010010000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1275 BOOST_CHECK(result[1] == KRecord(Datetime(199101010000), 127.61, 135.19, 120.11, 120.190, 8389.7, 142707));
1276 BOOST_CHECK(result[84] == KRecord(Datetime(201110010000), 2363.078, 2536.779, 2307.146, 2325.905, 298278573.1, 3100147936));
1280 result = stock.getKRecordList(0, total + 1, KQuery::QUARTER);
1281 BOOST_CHECK(result.size() == total);
1282 BOOST_CHECK(result[0] == KRecord(Datetime(199010010000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1283 BOOST_CHECK(result[1] == KRecord(Datetime(199101010000), 127.61, 135.19, 120.11, 120.190, 8389.7, 142707));
1284 BOOST_CHECK(result[84] == KRecord(Datetime(201110010000), 2363.078, 2536.779, 2307.146, 2325.905, 298278573.1, 3100147936));
1287 result = stock.getKRecordList(1, 10, KQuery::QUARTER);
1288 BOOST_CHECK(result.size() == 9);
1289 BOOST_CHECK(result[0] == KRecord(Datetime(199101010000), 127.61, 135.19, 120.11, 120.190, 8389.7, 142707));
1290 BOOST_CHECK(result[1] == KRecord(Datetime(199104010000), 120.69, 137.56, 104.96, 137.560, 12095.6, 222753));
1291 BOOST_CHECK(result[8] == KRecord(Datetime(199301010000), 784.13, 1558.95, 777.16, 925.910, 5003866.3, 26182794));
1294 result = stock.getKRecordList(0,0, KQuery::QUARTER);
1295 BOOST_CHECK(result.size() == 0);
1298 result = stock.getKRecordList(total, total, KQuery::QUARTER);
1299 BOOST_CHECK(result.size() == 0);
1302 result = stock.getKRecordList(2, 1, KQuery::QUARTER);
1303 BOOST_CHECK(result.size() == 0);
1306 result = stock.getKRecordList(0, 1, KQuery::QUARTER);
1307 BOOST_CHECK(result.size() == 1);
1308 BOOST_CHECK(result[0] == KRecord(Datetime(199010010000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1311 result = stock.getKRecordList(total - 1, total, KQuery::QUARTER);
1312 BOOST_CHECK(result.size() == 1);
1313 BOOST_CHECK(result[0] == KRecord(Datetime(201110010000), 2363.078, 2536.779, 2307.146, 2325.905, 298278573.1, 3100147936));
1316 result = stock.getKRecordList(total - 1, total + 1, KQuery::QUARTER);
1317 BOOST_CHECK(result.size() == 1);
1318 BOOST_CHECK(result[0] == KRecord(Datetime(201110010000), 2363.078, 2536.779, 2307.146, 2325.905, 298278573.1, 3100147936));
1324 total = stock.getCount(KQuery::HALFYEAR);
1325 result = stock.getKRecordList(0, total, KQuery::HALFYEAR);
1326 BOOST_CHECK(result.size() == total);
1327 BOOST_CHECK(result[0] == KRecord(Datetime(199007010000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1328 BOOST_CHECK(result[1] == KRecord(Datetime(199101010000), 127.61, 137.56, 104.96, 137.560, 20485.3, 365460));
1329 BOOST_CHECK(result[42] == KRecord(Datetime(201107010000), 2767.834, 2826.959, 2307.146, 2325.905, 842271699.6, 8187717694));
1333 result = stock.getKRecordList(0, total + 1, KQuery::HALFYEAR);
1334 BOOST_CHECK(result.size() == total);
1335 BOOST_CHECK(result[0] == KRecord(Datetime(199007010000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1336 BOOST_CHECK(result[1] == KRecord(Datetime(199101010000), 127.61, 137.56, 104.96, 137.560, 20485.3, 365460));
1337 BOOST_CHECK(result[42] == KRecord(Datetime(201107010000), 2767.834, 2826.959, 2307.146, 2325.905, 842271699.6, 8187717694));
1340 result = stock.getKRecordList(1, 10, KQuery::HALFYEAR);
1341 BOOST_CHECK(result.size() == 9);
1342 BOOST_CHECK(result[0] == KRecord(Datetime(199101010000), 127.61, 137.56, 104.96, 137.560, 20485.3, 365460));
1343 BOOST_CHECK(result[1] == KRecord(Datetime(199107010000), 136.64, 292.75, 131.87, 292.750, 60078.8, 890458));
1344 BOOST_CHECK(result[8] == KRecord(Datetime(199501010000), 637.72, 926.41, 524.43, 630.580, 12294596.7, 164388191));
1347 result = stock.getKRecordList(0,0, KQuery::HALFYEAR);
1348 BOOST_CHECK(result.size() == 0);
1351 result = stock.getKRecordList(total, total, KQuery::HALFYEAR);
1352 BOOST_CHECK(result.size() == 0);
1355 result = stock.getKRecordList(2, 1, KQuery::HALFYEAR);
1356 BOOST_CHECK(result.size() == 0);
1359 result = stock.getKRecordList(0, 1, KQuery::HALFYEAR);
1360 BOOST_CHECK(result.size() == 1);
1361 BOOST_CHECK(result[0] == KRecord(Datetime(199007010000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1364 result = stock.getKRecordList(total - 1, total, KQuery::HALFYEAR);
1365 BOOST_CHECK(result.size() == 1);
1366 BOOST_CHECK(result[0] == KRecord(Datetime(201107010000), 2767.834, 2826.959, 2307.146, 2325.905, 842271699.6, 8187717694));
1369 result = stock.getKRecordList(total - 1, total + 1, KQuery::HALFYEAR);
1370 BOOST_CHECK(result.size() == 1);
1371 BOOST_CHECK(result[0] == KRecord(Datetime(201107010000), 2767.834, 2826.959, 2307.146, 2325.905, 842271699.6, 8187717694));
1378 total = stock.getCount(KQuery::YEAR);
1379 result = stock.getKRecordList(0, total, KQuery::YEAR);
1380 BOOST_CHECK(result.size() == total);
1381 BOOST_CHECK(result[0] == KRecord(Datetime(199001010000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1382 BOOST_CHECK(result[1] == KRecord(Datetime(199101010000), 127.61, 292.75, 104.96, 292.750, 80564.1, 1255918));
1383 BOOST_CHECK(result[21] == KRecord(Datetime(201101010000), 2825.329, 3067.456, 2307.146, 2325.905, 2308389935.3, 21513978512));
1387 result = stock.getKRecordList(0, total + 1, KQuery::YEAR);
1388 BOOST_CHECK(result.size() == total);
1389 BOOST_CHECK(result[0] == KRecord(Datetime(199001010000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1390 BOOST_CHECK(result[1] == KRecord(Datetime(199101010000), 127.61, 292.75, 104.96, 292.750, 80564.1, 1255918));
1391 BOOST_CHECK(result[21] == KRecord(Datetime(201101010000), 2825.329, 3067.456, 2307.146, 2325.905, 2308389935.3, 21513978512));
1394 result = stock.getKRecordList(1, 10, KQuery::YEAR);
1395 BOOST_CHECK(result.size() == 9);
1396 BOOST_CHECK(result[0] == KRecord(Datetime(199101010000), 127.61, 292.75, 104.96, 292.750, 80564.1, 1255918));
1397 BOOST_CHECK(result[1] == KRecord(Datetime(199201010000), 293.74, 1429.01, 292.76, 780.390, 2497452.9, 18170898));
1398 BOOST_CHECK(result[8] == KRecord(Datetime(199901010000), 1144.888, 1756.184, 1047.833, 1366.580, 181932093.8, 2287638100));
1401 result = stock.getKRecordList(0,0, KQuery::YEAR);
1402 BOOST_CHECK(result.size() == 0);
1405 result = stock.getKRecordList(total, total, KQuery::YEAR);
1406 BOOST_CHECK(result.size() == 0);
1409 result = stock.getKRecordList(2, 1, KQuery::YEAR);
1410 BOOST_CHECK(result.size() == 0);
1413 result = stock.getKRecordList(0, 1, KQuery::YEAR);
1414 BOOST_CHECK(result.size() == 1);
1415 BOOST_CHECK(result[0] == KRecord(Datetime(199001010000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1418 result = stock.getKRecordList(total - 1, total, KQuery::YEAR);
1419 BOOST_CHECK(result.size() == 1);
1420 BOOST_CHECK(result[0] == KRecord(Datetime(201101010000), 2825.329, 3067.456, 2307.146, 2325.905, 2308389935.3, 21513978512));
1423 result = stock.getKRecordList(total - 1, total + 1, KQuery::YEAR);
1424 BOOST_CHECK(result.size() == 1);
1425 BOOST_CHECK(result[0] == KRecord(Datetime(201101010000), 2825.329, 3067.456, 2307.146, 2325.905, 2308389935.3, 21513978512));
1432 total = stock.getCount(KQuery::MIN);
1433 result = stock.getKRecordList(0, total, KQuery::MIN);
1434 BOOST_CHECK(result.size() == total);
1435 BOOST_CHECK(result[0] == KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158));
1436 BOOST_CHECK(result[1] == KRecord(Datetime(200001040932), 1368.3, 1368.491, 1368.3, 1368.491, 2783200, 106916));
1437 BOOST_CHECK(result[682822] == KRecord(Datetime(201112061500), 2325.38, 2326.1, 2324.6, 2325.900, 5215150, 566312));
1441 result = stock.getKRecordList(0, total + 1, KQuery::MIN);
1442 BOOST_CHECK(result.size() == total);
1443 BOOST_CHECK(result[0] == KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158));
1444 BOOST_CHECK(result[1] == KRecord(Datetime(200001040932), 1368.3, 1368.491, 1368.3, 1368.491, 2783200, 106916));
1445 BOOST_CHECK(result[682822] == KRecord(Datetime(201112061500), 2325.38, 2326.1, 2324.6, 2325.900, 5215150, 566312));
1448 result = stock.getKRecordList(1, 10, KQuery::MIN);
1449 BOOST_CHECK(result.size() == 9);
1450 BOOST_CHECK(result[0] == KRecord(Datetime(200001040932), 1368.3, 1368.491, 1368.3, 1368.491, 2783200, 106916));
1451 BOOST_CHECK(result[1] == KRecord(Datetime(200001040933), 1368.859, 1369.474, 1368.859, 1369.308, 1060260, 37789));
1452 BOOST_CHECK(result[8] == KRecord(Datetime(200001040940), 1367.651, 1367.662, 1367.389, 1367.389, 1335200, 41924));
1455 result = stock.getKRecordList(0,0, KQuery::MIN);
1456 BOOST_CHECK(result.size() == 0);
1459 result = stock.getKRecordList(total, total, KQuery::MIN);
1460 BOOST_CHECK(result.size() == 0);
1463 result = stock.getKRecordList(2, 1, KQuery::MIN);
1464 BOOST_CHECK(result.size() == 0);
1467 result = stock.getKRecordList(0, 1, KQuery::MIN);
1468 BOOST_CHECK(result.size() == 1);
1469 BOOST_CHECK(result[0] == KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158));
1472 result = stock.getKRecordList(total - 1, total, KQuery::MIN);
1473 BOOST_CHECK(result.size() == 1);
1474 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2325.38, 2326.1, 2324.6, 2325.900, 5215150, 566312));
1477 result = stock.getKRecordList(total - 1, total + 1, KQuery::MIN);
1478 BOOST_CHECK(result.size() == 1);
1479 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2325.38, 2326.1, 2324.6, 2325.900, 5215150, 566312));
1486 total = stock.getCount(KQuery::MIN5);
1487 result = stock.getKRecordList(0, total, KQuery::MIN5);
1488 BOOST_CHECK(result.size() == total);
1489 BOOST_CHECK(result[0] == KRecord(Datetime(200001040935), 1366.58, 1369.68, 1366.579, 1369.187, 106611.5, 438171));
1490 BOOST_CHECK(result[1] == KRecord(Datetime(200001040940), 1369.187, 1369.371, 1367.389, 1367.389, 70687.3, 251473));
1491 BOOST_CHECK(result[133979] == KRecord(Datetime(201112061500), 2323.059, 2325.931, 2323.059, 2325.905, 176347.1, 1873675));
1495 result = stock.getKRecordList(0, total + 1, KQuery::MIN5);
1496 BOOST_CHECK(result.size() == total);
1497 BOOST_CHECK(result[0] == KRecord(Datetime(200001040935), 1366.58, 1369.68, 1366.579, 1369.187, 106611.5, 438171));
1498 BOOST_CHECK(result[1] == KRecord(Datetime(200001040940), 1369.187, 1369.371, 1367.389, 1367.389, 70687.3, 251473));
1499 BOOST_CHECK(result[133979] == KRecord(Datetime(201112061500), 2323.059, 2325.931, 2323.059, 2325.905, 176347.1, 1873675));
1502 result = stock.getKRecordList(1, 10, KQuery::MIN5);
1503 BOOST_CHECK(result.size() == 9);
1504 BOOST_CHECK(result[0] == KRecord(Datetime(200001040940), 1369.187, 1369.371, 1367.389, 1367.389, 70687.3, 251473));
1505 BOOST_CHECK(result[1] == KRecord(Datetime(200001040945), 1367.389, 1367.389, 1364.645, 1364.763, 73577.1, 223346));
1506 BOOST_CHECK(result[8] == KRecord(Datetime(200001041020), 1366.043, 1366.458, 1365.946, 1366.458, 111601.7, 205190));
1509 result = stock.getKRecordList(0,0, KQuery::MIN5);
1510 BOOST_CHECK(result.size() == 0);
1513 result = stock.getKRecordList(total, total, KQuery::MIN5);
1514 BOOST_CHECK(result.size() == 0);
1517 result = stock.getKRecordList(2, 1, KQuery::MIN5);
1518 BOOST_CHECK(result.size() == 0);
1521 result = stock.getKRecordList(0, 1, KQuery::MIN5);
1522 BOOST_CHECK(result.size() == 1);
1523 BOOST_CHECK(result[0] == KRecord(Datetime(200001040935), 1366.58, 1369.68, 1366.579, 1369.187, 106611.5, 438171));
1526 result = stock.getKRecordList(total - 1, total, KQuery::MIN5);
1527 BOOST_CHECK(result.size() == 1);
1528 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2323.059, 2325.931, 2323.059, 2325.905, 176347.1, 1873675));
1531 result = stock.getKRecordList(total - 1, total + 1, KQuery::MIN5);
1532 BOOST_CHECK(result.size() == 1);
1533 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2323.059, 2325.931, 2323.059, 2325.905, 176347.1, 1873675));
1539 total = stock.getCount(KQuery::MIN15);
1540 result = stock.getKRecordList(0, total, KQuery::MIN15);
1541 BOOST_CHECK(result.size() == total);
1542 BOOST_CHECK(result[0] == KRecord(Datetime(200001040945), 1366.58, 1369.68, 1364.645, 1364.763, 250875.9, 912990));
1543 BOOST_CHECK(result[1] == KRecord(Datetime(200001041000), 1364.763, 1364.763, 1361.459, 1361.459, 204277.1, 457452));
1544 BOOST_CHECK(result[44749] == KRecord(Datetime(201112061500), 2323.068, 2325.931, 2320.819, 2325.905, 402339.3, 4060591));
1548 result = stock.getKRecordList(0, total + 1, KQuery::MIN15);
1549 BOOST_CHECK(result.size() == total);
1550 BOOST_CHECK(result[0] == KRecord(Datetime(200001040945), 1366.58, 1369.68, 1364.645, 1364.763, 250875.9, 912990));
1551 BOOST_CHECK(result[1] == KRecord(Datetime(200001041000), 1364.763, 1364.763, 1361.459, 1361.459, 204277.1, 457452));
1552 BOOST_CHECK(result[44749] == KRecord(Datetime(201112061500), 2323.068, 2325.931, 2320.819, 2325.905, 402339.3, 4060591));
1555 result = stock.getKRecordList(1, 10, KQuery::MIN15);
1556 BOOST_CHECK(result.size() == 9);
1557 BOOST_CHECK(result[0] == KRecord(Datetime(200001041000), 1364.763, 1364.763, 1361.459, 1361.459, 204277.1, 457452));
1558 BOOST_CHECK(result[1] == KRecord(Datetime(200001041015), 1361.558, 1366.093, 1361.295, 1365.927, 307531.8, 548313));
1559 BOOST_CHECK(result[8] == KRecord(Datetime(200001041330), 1399.56, 1399.664, 1396.679, 1399.325, 407799.9, 554965));
1562 result = stock.getKRecordList(0,0, KQuery::MIN15);
1563 BOOST_CHECK(result.size() == 0);
1566 result = stock.getKRecordList(total, total, KQuery::MIN15);
1567 BOOST_CHECK(result.size() == 0);
1570 result = stock.getKRecordList(2, 1, KQuery::MIN15);
1571 BOOST_CHECK(result.size() == 0);
1574 result = stock.getKRecordList(0, 1, KQuery::MIN15);
1575 BOOST_CHECK(result.size() == 1);
1576 BOOST_CHECK(result[0] == KRecord(Datetime(200001040945), 1366.58, 1369.68, 1364.645, 1364.763, 250875.9, 912990));
1579 result = stock.getKRecordList(total - 1, total, KQuery::MIN15);
1580 BOOST_CHECK(result.size() == 1);
1581 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2323.068, 2325.931, 2320.819, 2325.905, 402339.3, 4060591));
1584 result = stock.getKRecordList(total - 1, total + 1, KQuery::MIN15);
1585 BOOST_CHECK(result.size() == 1);
1586 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2323.068, 2325.931, 2320.819, 2325.905, 402339.3, 4060591));
1593 total = stock.getCount(KQuery::MIN30);
1594 result = stock.getKRecordList(0, total, KQuery::MIN30);
1595 BOOST_CHECK(result.size() == total);
1596 BOOST_CHECK(result[0] == KRecord(Datetime(200001041000), 1366.58, 1369.68, 1361.459, 1361.459, 455153, 1370442));
1597 BOOST_CHECK(result[1] == KRecord(Datetime(200001041030), 1361.558, 1367.683, 1361.295, 1367.683, 586634.5, 1000294));
1598 BOOST_CHECK(result[22379] == KRecord(Datetime(201112061500), 2327.919, 2327.919, 2320.819, 2325.905, 660297.5, 6415054));
1602 result = stock.getKRecordList(0, total + 1, KQuery::MIN30);
1603 BOOST_CHECK(result.size() == total);
1604 BOOST_CHECK(result[0] == KRecord(Datetime(200001041000), 1366.58, 1369.68, 1361.459, 1361.459, 455153, 1370442));
1605 BOOST_CHECK(result[1] == KRecord(Datetime(200001041030), 1361.558, 1367.683, 1361.295, 1367.683, 586634.5, 1000294));
1606 BOOST_CHECK(result[22379] == KRecord(Datetime(201112061500), 2327.919, 2327.919, 2320.819, 2325.905, 660297.5, 6415054));
1609 result = stock.getKRecordList(1, 10, KQuery::MIN30);
1610 BOOST_CHECK(result.size() == 9);
1611 BOOST_CHECK(result[0] == KRecord(Datetime(200001041030), 1361.558, 1367.683, 1361.295, 1367.683, 586634.5, 1000294));
1612 BOOST_CHECK(result[1] == KRecord(Datetime(200001041100), 1367.667, 1378.543, 1367.6, 1377.098, 622250.5, 1248350));
1613 BOOST_CHECK(result[8] == KRecord(Datetime(200001051030), 1409.486, 1421.612, 1409.486, 1421.139, 1397089.8, 1777404));
1616 result = stock.getKRecordList(0,0, KQuery::MIN30);
1617 BOOST_CHECK(result.size() == 0);
1620 result = stock.getKRecordList(total, total, KQuery::MIN30);
1621 BOOST_CHECK(result.size() == 0);
1624 result = stock.getKRecordList(2, 1, KQuery::MIN30);
1625 BOOST_CHECK(result.size() == 0);
1628 result = stock.getKRecordList(0, 1, KQuery::MIN30);
1629 BOOST_CHECK(result.size() == 1);
1630 BOOST_CHECK(result[0] == KRecord(Datetime(200001041000), 1366.58, 1369.68, 1361.459, 1361.459, 455153, 1370442));
1633 result = stock.getKRecordList(total - 1, total, KQuery::MIN30);
1634 BOOST_CHECK(result.size() == 1);
1635 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2327.919, 2327.919, 2320.819, 2325.905, 660297.5, 6415054));
1638 result = stock.getKRecordList(total - 1, total + 1, KQuery::MIN30);
1639 BOOST_CHECK(result.size() == 1);
1640 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2327.919, 2327.919, 2320.819, 2325.905, 660297.5, 6415054));
1647 total = stock.getCount(KQuery::MIN60);
1648 result = stock.getKRecordList(0, total, KQuery::MIN60);
1649 BOOST_CHECK(result.size() == total);
1650 BOOST_CHECK(result[0] == KRecord(Datetime(200001041030), 1366.58, 1369.68, 1361.295, 1367.683, 1041787.5, 2370736));
1651 BOOST_CHECK(result[1] == KRecord(Datetime(200001041130), 1367.667, 1387.853, 1367.6, 1387.853, 1411191.4, 2172479));
1652 BOOST_CHECK(result[11192] == KRecord(Datetime(201112061500), 2326.036, 2331.378, 2320.819, 2325.905, 1332210, 11886356));
1656 result = stock.getKRecordList(0, total + 1, KQuery::MIN60);
1657 BOOST_CHECK(result.size() == total);
1658 BOOST_CHECK(result[0] == KRecord(Datetime(200001041030), 1366.58, 1369.68, 1361.295, 1367.683, 1041787.5, 2370736));
1659 BOOST_CHECK(result[1] == KRecord(Datetime(200001041130), 1367.667, 1387.853, 1367.6, 1387.853, 1411191.4, 2172479));
1660 BOOST_CHECK(result[11192] == KRecord(Datetime(201112061500), 2326.036, 2331.378, 2320.819, 2325.905, 1332210, 11886356));
1663 result = stock.getKRecordList(1, 10, KQuery::MIN60);
1664 BOOST_CHECK(result.size() == 9);
1665 BOOST_CHECK(result[0] == KRecord(Datetime(200001041130), 1367.667, 1387.853, 1367.6, 1387.853, 1411191.4, 2172479));
1666 BOOST_CHECK(result[1] == KRecord(Datetime(200001041400), 1389.996, 1403.996, 1389.97, 1400.685, 1740709.6, 2348753));
1667 BOOST_CHECK(result[8] == KRecord(Datetime(200001061130), 1420.098, 1420.098, 1410.706, 1411.387, 1291509.5, 1378193));
1670 result = stock.getKRecordList(0,0, KQuery::MIN60);
1671 BOOST_CHECK(result.size() == 0);
1674 result = stock.getKRecordList(total, total, KQuery::MIN60);
1675 BOOST_CHECK(result.size() == 0);
1678 result = stock.getKRecordList(2, 1, KQuery::MIN60);
1679 BOOST_CHECK(result.size() == 0);
1682 result = stock.getKRecordList(0, 1, KQuery::MIN60);
1683 BOOST_CHECK(result.size() == 1);
1684 BOOST_CHECK(result[0] == KRecord(Datetime(200001041030), 1366.58, 1369.68, 1361.295, 1367.683, 1041787.5, 2370736));
1687 result = stock.getKRecordList(total - 1, total, KQuery::MIN60);
1688 BOOST_CHECK(result.size() == 1);
1689 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2326.036, 2331.378, 2320.819, 2325.905, 1332210, 11886356));
1692 result = stock.getKRecordList(total - 1, total + 1, KQuery::MIN60);
1693 BOOST_CHECK(result.size() == 1);
1694 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2326.036, 2331.378, 2320.819, 2325.905, 1332210, 11886356));
1700 StockManager& sm = StockManager::instance();
1701 Stock stock = sm.getStock(
"sh000001");
1708 record = stock.getKRecordByDate(Datetime(199012180000), KQuery::DAY);
1709 BOOST_CHECK(record == Null<KRecord>());
1712 record = stock.getKRecordByDate(Datetime(199012190000), KQuery::DAY);
1713 BOOST_CHECK(record == KRecord(Datetime(199012190000), 96.0500, 99.9800, 95.7900, 99.9800, 49.4000, 1260.0000));
1716 record = stock.getKRecordByDate(Datetime(199502150000), KQuery::DAY);
1717 BOOST_CHECK(record == KRecord(Datetime(199502150000), 547.8300, 548.5900, 542.5000, 542.8400, 11889.3000, 232116.0000));
1720 record = stock.getKRecordByDate(Datetime(199502180000), KQuery::DAY);
1721 BOOST_CHECK(record == Null<KRecord>());
1724 record = stock.getKRecordByDate(Datetime(201112060000), KQuery::DAY);
1725 BOOST_CHECK(record == KRecord(Datetime(201112060000), 2326.6600, 2331.8920, 2310.1550, 2325.9050, 4262559.5000, 45917078.0000));
1728 record = stock.getKRecordByDate(Datetime(201112070000), KQuery::DAY);
1729 BOOST_CHECK(record == Null<KRecord>());
1736 record = stock.getKRecordByDate(Datetime(199012160000), KQuery::WEEK);
1737 BOOST_CHECK(record == Null<KRecord>());
1740 record = stock.getKRecordByDate(Datetime(199012170000), KQuery::WEEK);
1741 BOOST_CHECK(record == KRecord(Datetime(199012170000), 96.0500, 109.1300, 95.7900, 109.1300, 59.4000, 1485.0000));
1744 record = stock.getKRecordByDate(Datetime(199103250000), KQuery::WEEK);
1745 BOOST_CHECK(record == KRecord(Datetime(199103250000), 122.1200, 122.6200, 120.1100, 120.1900, 409.0000, 5421.0000));
1748 record = stock.getKRecordByDate(Datetime(199103120000), KQuery::WEEK);
1749 BOOST_CHECK(record == Null<KRecord>());
1752 record = stock.getKRecordByDate(Datetime(201112050000), KQuery::WEEK);
1753 BOOST_CHECK(record == KRecord(Datetime(201112050000), 2363.1110, 2363.1270, 2310.1550, 2325.9050, 9126681.1000, 98132048.0000));
1756 record = stock.getKRecordByDate(Datetime(201112060000), KQuery::WEEK);
1757 BOOST_CHECK(record == Null<KRecord>());
1764 record = stock.getKRecordByDate(Datetime(199011300000), KQuery::MONTH);
1765 BOOST_CHECK(record == Null<KRecord>());
1768 record = stock.getKRecordByDate(Datetime(199012010000), KQuery::MONTH);
1769 BOOST_CHECK(record == KRecord(Datetime(199012010000), 96.0500, 127.6100, 95.7900, 127.6100, 93.6000, 1884.0000));
1772 record = stock.getKRecordByDate(Datetime(199208010000), KQuery::MONTH);
1773 BOOST_CHECK(record == KRecord(Datetime(199208010000), 1034.7000, 1060.3600, 627.3600, 823.2700, 286256.7000, 2040679.0000));
1776 record = stock.getKRecordByDate(Datetime(199103120000), KQuery::MONTH);
1777 BOOST_CHECK(record == Null<KRecord>());
1780 record = stock.getKRecordByDate(Datetime(201112010000), KQuery::MONTH);
1781 BOOST_CHECK(record == KRecord(Datetime(201112010000), 2392.4850, 2423.5590, 2310.1550, 2325.9050, 24378748.5000, 256650941.0000));
1784 record = stock.getKRecordByDate(Datetime(201112020000), KQuery::MONTH);
1785 BOOST_CHECK(record == Null<KRecord>());
1792 record = stock.getKRecordByDate(Datetime(200001040944), KQuery::MIN15);
1793 BOOST_CHECK(record == Null<KRecord>());
1796 record = stock.getKRecordByDate(Datetime(200001040945), KQuery::MIN15);
1797 BOOST_CHECK(record == KRecord(Datetime(200001040945), 1366.5800, 1369.6800, 1364.6450, 1364.7630, 250875.9000, 912990.0000));
1800 record = stock.getKRecordByDate(Datetime(200001071045), KQuery::MIN15);
1801 BOOST_CHECK(record == KRecord(Datetime(200001071045), 1482.5210, 1490.0070, 1481.9910, 1485.2770, 1030800.2000, 1663302.0000));
1804 record = stock.getKRecordByDate(Datetime(200001071044), KQuery::MIN15);
1805 BOOST_CHECK(record == Null<KRecord>());
1808 record = stock.getKRecordByDate(Datetime(201112061500), KQuery::MIN15);
1809 BOOST_CHECK(record == KRecord(Datetime(201112061500), 2323.0680, 2325.9310, 2320.8190, 2325.9050, 402339.3000, 4060591.0000));
1812 record = stock.getKRecordByDate(Datetime(201112061501), KQuery::MIN15);
1813 BOOST_CHECK(record == Null<KRecord>());