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> 23 #define MEMORY_CHECK {Stock mem_stock = sm["sh000001"]; \ 24 BOOST_CHECK(mem_stock.isBuffer(KQuery::DAY) == true);\ 25 BOOST_CHECK(mem_stock.isBuffer(KQuery::WEEK) == false);\ 26 BOOST_CHECK(mem_stock.isBuffer(KQuery::MONTH) == false);\ 27 BOOST_CHECK(mem_stock.isBuffer(KQuery::QUARTER) == false);\ 28 BOOST_CHECK(mem_stock.isBuffer(KQuery::HALFYEAR) == false);\ 29 BOOST_CHECK(mem_stock.isBuffer(KQuery::YEAR) == false);\ 30 BOOST_CHECK(mem_stock.isBuffer(KQuery::MIN) == false);\ 31 BOOST_CHECK(mem_stock.isBuffer(KQuery::MIN5) == false);\ 32 BOOST_CHECK(mem_stock.isBuffer(KQuery::MIN15) == false);\ 33 BOOST_CHECK(mem_stock.isBuffer(KQuery::MIN30) == false);\ 34 BOOST_CHECK(mem_stock.isBuffer(KQuery::MIN60) == false);\ 45 StockManager& sm = StockManager::instance();
49 BOOST_CHECK(s1 == Null<Stock>());
52 s1 = sm.getStock(
"sh000001");
53 BOOST_CHECK(s1 != Null<Stock>());
56 Stock s2 = sm.getStock(
"sh000001");
57 BOOST_CHECK(s1 == s2);
60 s2 = sm.getStock(
"sz000001");
61 BOOST_CHECK(s1 != s2);
68 StockManager& sm = StockManager::instance();
70 Stock stock = sm.getStock(
"sz000001");
74 StockWeightList weightList = stock.getWeight();
75 BOOST_CHECK(weightList.size() == 23);
76 weight = weightList.front();
77 BOOST_CHECK(weight.datetime() == Datetime(199104030000L));
78 BOOST_CHECK(weight.countAsGift() == 0.0);
79 BOOST_CHECK(weight.countForSell() == 0.0);
80 BOOST_CHECK(weight.priceForSell() == 0.0);
81 BOOST_CHECK(weight.bonus() == 0.0);
82 BOOST_CHECK(weight.increasement() == 0.0);
83 BOOST_CHECK(weight.totalCount() == 150);
84 BOOST_CHECK(weight.freeCount() == 68);
86 weight = weightList.back();
87 BOOST_CHECK(weight.datetime() == Datetime(201108050000L));
88 BOOST_CHECK(weight.countAsGift() == 0.0);
89 BOOST_CHECK(weight.countForSell() == 0.0);
90 BOOST_CHECK(weight.priceForSell() == 0.0);
91 BOOST_CHECK(weight.bonus() == 0.0);
92 BOOST_CHECK(weight.increasement() == 0.0);
93 BOOST_CHECK(weight.totalCount() == 512335);
94 BOOST_CHECK(weight.freeCount() == 310536);
97 weightList = stock.getWeight(Datetime(199501010000),
98 Datetime(199701010000));
99 BOOST_CHECK(weightList.size() == 2);
100 weight = weightList.front();
101 BOOST_CHECK(weight.datetime() == Datetime(199509250000));
102 BOOST_CHECK(weight.countAsGift() == 2.0);
103 BOOST_CHECK(weight.countForSell() == 0.0);
104 BOOST_CHECK(weight.priceForSell() == 0.0);
105 BOOST_CHECK(weight.bonus() == 3.0);
106 BOOST_CHECK(weight.increasement() == 0.0);
107 BOOST_CHECK(weight.totalCount() == 51728);
108 BOOST_CHECK(weight.freeCount() == 35721);
110 weight = weightList.back();
111 BOOST_CHECK(weight.datetime() == Datetime(199605270000));
112 BOOST_CHECK(weight.countAsGift() == 5.0);
113 BOOST_CHECK(weight.countForSell() == 0.0);
114 BOOST_CHECK(weight.priceForSell() == 0.0);
115 BOOST_CHECK(weight.bonus() == 0.0);
116 BOOST_CHECK(weight.increasement() == 5.0);
117 BOOST_CHECK(weight.totalCount() == 103456);
118 BOOST_CHECK(weight.freeCount() == 71393);
121 weightList = stock.getWeight(Datetime(199509250000),
122 Datetime(199701010000));
123 BOOST_CHECK(weightList.size() == 2);
124 weight = weightList.front();
125 BOOST_CHECK(weight.datetime() == Datetime(199509250000));
126 BOOST_CHECK(weight.countAsGift() == 2.0);
127 BOOST_CHECK(weight.countForSell() == 0.0);
128 BOOST_CHECK(weight.priceForSell() == 0.0);
129 BOOST_CHECK(weight.bonus() == 3.0);
130 BOOST_CHECK(weight.increasement() == 0.0);
131 BOOST_CHECK(weight.totalCount() == 51728);
132 BOOST_CHECK(weight.freeCount() == 35721);
134 weight = weightList.back();
135 BOOST_CHECK(weight.datetime() == Datetime(199605270000));
136 BOOST_CHECK(weight.countAsGift() == 5.0);
137 BOOST_CHECK(weight.countForSell() == 0.0);
138 BOOST_CHECK(weight.priceForSell() == 0.0);
139 BOOST_CHECK(weight.bonus() == 0.0);
140 BOOST_CHECK(weight.increasement() == 5.0);
141 BOOST_CHECK(weight.totalCount() == 103456);
142 BOOST_CHECK(weight.freeCount() == 71393);
145 weightList = stock.getWeight(Datetime(199501010000),
146 Datetime(199605270000));
147 BOOST_CHECK(weightList.size() == 1);
148 weight = weightList.front();
149 BOOST_CHECK(weight.datetime() == Datetime(199509250000));
150 BOOST_CHECK(weight.countAsGift() == 2.0);
151 BOOST_CHECK(weight.countForSell() == 0.0);
152 BOOST_CHECK(weight.priceForSell() == 0.0);
153 BOOST_CHECK(weight.bonus() == 3.0);
154 BOOST_CHECK(weight.increasement() == 0.0);
155 BOOST_CHECK(weight.totalCount() == 51728);
156 BOOST_CHECK(weight.freeCount() == 35721);
159 weightList = stock.getWeight(Datetime(201101010000), Null<Datetime>());
160 BOOST_CHECK(weightList.size() == 1);
161 weight = weightList.front();
162 BOOST_CHECK(weight.datetime() == Datetime(201108050000));
163 BOOST_CHECK(weight.countAsGift() == 0.0);
164 BOOST_CHECK(weight.countForSell() == 0.0);
165 BOOST_CHECK(weight.priceForSell() == 0.0);
166 BOOST_CHECK(weight.bonus() == 0.0);
167 BOOST_CHECK(weight.increasement() == 0.0);
168 BOOST_CHECK(weight.totalCount() == 512335);
169 BOOST_CHECK(weight.freeCount() == 310536);
172 weightList = stock.getWeight(Datetime(201101010000));
173 BOOST_CHECK(weightList.size() == 1);
174 weight = weightList.front();
175 BOOST_CHECK(weight.datetime() == Datetime(201108050000));
176 BOOST_CHECK(weight.countAsGift() == 0.0);
177 BOOST_CHECK(weight.countForSell() == 0.0);
178 BOOST_CHECK(weight.priceForSell() == 0.0);
179 BOOST_CHECK(weight.bonus() == 0.0);
180 BOOST_CHECK(weight.increasement() == 0.0);
181 BOOST_CHECK(weight.totalCount() == 512335);
182 BOOST_CHECK(weight.freeCount() == 310536);
190 StockManager& sm = StockManager::instance();
193 Stock stock = sm.getStock(
"sh000001");
194 BOOST_CHECK(stock.getCount(KQuery::DAY) == 5121);
197 stock = sm.getStock(
"Sz000001");
198 BOOST_CHECK(stock.getCount(KQuery::DAY) == 4937);
201 stock = sm.getStock(
"sh000001");
202 BOOST_CHECK(stock.getCount(KQuery::WEEK) == 1059);
205 stock = sm.getStock(
"Sz000001");
206 BOOST_CHECK(stock.getCount(KQuery::WEEK) == 1037);
209 stock = sm.getStock(
"sh000001");
210 BOOST_CHECK(stock.getCount(KQuery::MONTH) == 253);
213 stock = sm.getStock(
"Sz000001");
214 BOOST_CHECK(stock.getCount(KQuery::MONTH) == 250);
217 stock = sm.getStock(
"sh000001");
218 BOOST_CHECK(stock.getCount(KQuery::QUARTER) == 85);
221 stock = sm.getStock(
"Sz000001");
222 BOOST_CHECK(stock.getCount(KQuery::QUARTER) == 84);
225 stock = sm.getStock(
"sh000001");
226 BOOST_CHECK(stock.getCount(KQuery::HALFYEAR) == 43);
229 stock = sm.getStock(
"Sz000001");
230 BOOST_CHECK(stock.getCount(KQuery::HALFYEAR) == 42);
233 stock = sm.getStock(
"sh000001");
234 BOOST_CHECK(stock.getCount(KQuery::YEAR) == 22);
237 stock = sm.getStock(
"Sz000001");
238 BOOST_CHECK(stock.getCount(KQuery::YEAR) == 21);
241 stock = sm.getStock(
"sh000001");
242 BOOST_CHECK(stock.getCount(KQuery::MIN) == 682823L);
245 stock = sm.getStock(
"Sz000001");
246 BOOST_CHECK(stock.getCount(KQuery::MIN) == 641091L);
249 stock = sm.getStock(
"sh000001");
250 BOOST_CHECK(stock.getCount(KQuery::MIN5) == 133980L);
253 stock = sm.getStock(
"Sz000001");
254 BOOST_CHECK(stock.getCount(KQuery::MIN5) == 126381L);
257 stock = sm.getStock(
"sh000001");
258 BOOST_CHECK(stock.getCount(KQuery::MIN15) == 44750L);
261 stock = sm.getStock(
"Sz000001");
262 BOOST_CHECK(stock.getCount(KQuery::MIN15) == 42195L);
265 stock = sm.getStock(
"sh000001");
266 BOOST_CHECK(stock.getCount(KQuery::MIN30) == 22380L);
269 stock = sm.getStock(
"Sz000001");
270 BOOST_CHECK(stock.getCount(KQuery::MIN30) == 21101L);
273 stock = sm.getStock(
"sh000001");
274 BOOST_CHECK(stock.getCount(KQuery::MIN60) == 11193L);
277 stock = sm.getStock(
"Sz000001");
278 BOOST_CHECK(stock.getCount(KQuery::MIN60) == 10553L);
286 StockManager& sm = StockManager::instance();
287 Stock stock = sm.getStock(
"sh000001");
288 KRecord record, expect;
291 record = stock.getKRecord(0);
292 expect = KRecord(Datetime(199012190000), 96.05, 99.98, 95.79, 99.98, 49.4, 1260);
293 BOOST_CHECK(record == expect);
296 record = stock.getKRecord(10);
297 expect = KRecord(Datetime(199101030000), 128.840, 130.14, 128.84, 130.140, 9.3, 141);
298 BOOST_CHECK(record == expect);
301 size_t total = stock.getCount();
302 record = stock.getKRecord(total - 1);
303 expect = KRecord(Datetime(201112060000), 2326.66, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078);
304 BOOST_CHECK(record == expect);
307 record = stock.getKRecord(0, KQuery::WEEK);
308 expect = KRecord(Datetime(199012210000), 96.05, 109.130, 95.790, 109.130, 59.4, 1485);
309 BOOST_CHECK(record == expect);
312 record = stock.getKRecord(10, KQuery::WEEK);
313 expect = KRecord(Datetime(199103010000), 134.37, 134.87, 132.47, 132.53, 827.1, 11500);
314 BOOST_CHECK(record == expect);
317 total = stock.getCount(KQuery::WEEK);
318 record = stock.getKRecord(total - 1, KQuery::WEEK);
319 expect = KRecord(Datetime(201112090000), 2363.111, 2363.127, 2310.155, 2325.905, 9126681.1, 98132048);
320 BOOST_CHECK(record == expect);
323 record = stock.getKRecord(0, KQuery::MONTH);
324 expect = KRecord(Datetime(199012310000), 96.05, 127.610, 95.790, 127.610, 93.6, 1884);
325 BOOST_CHECK(record == expect);
328 record = stock.getKRecord(10, KQuery::MONTH);
329 expect = KRecord(Datetime(199110310000), 181.550, 218.600, 179.800, 218.600, 14953.6, 223443);
330 BOOST_CHECK(record == expect);
333 total = stock.getCount(KQuery::MONTH);
334 record = stock.getKRecord(total - 1, KQuery::MONTH);
335 expect = KRecord(Datetime(201112310000), 2392.485, 2423.559, 2310.155, 2325.905, 24378748.5, 256650941);
336 BOOST_CHECK(record == expect);
339 record = stock.getKRecord(0, KQuery::QUARTER);
340 expect = KRecord(Datetime(199012310000), 96.05, 127.610, 95.790, 127.610, 93.6, 1884);
341 BOOST_CHECK(record == expect);
344 record = stock.getKRecord(10, KQuery::QUARTER);
345 expect = KRecord(Datetime(199306300000), 921.590, 1392.620, 859.48, 1007.050, 5181883.5, 27631999);
346 BOOST_CHECK(record == expect);
349 total = stock.getCount(KQuery::QUARTER);
350 record = stock.getKRecord(total - 1, KQuery::QUARTER);
351 expect = KRecord(Datetime(201112310000), 2363.078, 2536.779, 2307.146, 2325.905, 298278573.1, 3100147936);
352 BOOST_CHECK(record == expect);
355 record = stock.getKRecord(0, KQuery::HALFYEAR);
356 expect = KRecord(Datetime(199012310000), 96.05, 127.610, 95.790, 127.610, 93.6, 1884);
357 BOOST_CHECK(record == expect);
360 record = stock.getKRecord(10, KQuery::HALFYEAR);
361 expect = KRecord(Datetime(199512310000), 623.140, 792.540, 552.840, 555.290, 18764625.6, 351276329);
362 BOOST_CHECK(record == expect);
365 total = stock.getCount(KQuery::HALFYEAR);
366 record = stock.getKRecord(total - 1, KQuery::HALFYEAR);
367 expect = KRecord(Datetime(201112310000), 2767.834, 2826.959, 2307.146, 2325.905, 842271699.6, 8187717694);
368 BOOST_CHECK(record == expect);
371 record = stock.getKRecord(0, KQuery::YEAR);
372 expect = KRecord(Datetime(199012310000), 96.05, 127.61, 95.79, 127.61, 93.6, 1884);
373 BOOST_CHECK(record == expect);
376 record = stock.getKRecord(10, KQuery::YEAR);
377 expect = KRecord(Datetime(200012310000), 1368.693, 2125.724, 1361.214, 2073.476, 326945832.5, 3433225623);
378 BOOST_CHECK(record == expect);
381 total = stock.getCount(KQuery::YEAR);
382 record = stock.getKRecord(total - 1, KQuery::YEAR);
383 expect = KRecord(Datetime(201112310000), 2825.329, 3067.456, 2307.146, 2325.905, 2308389935.3, 21513978512);
384 BOOST_CHECK(record == expect);
387 record = stock.getKRecord(0, KQuery::MIN);
388 expect = KRecord(Datetime(
"2000-1-4 9:31"), 1366.580, 1368.692, 1366.579, 1368.692, 4124880, 191158);
389 BOOST_CHECK(record == expect);
392 record = stock.getKRecord(10, KQuery::MIN);
393 expect = KRecord(Datetime(200001040941), 1367.389, 1367.389, 1366.578, 1366.578, 1214910.4, 31811);
394 BOOST_CHECK(record == expect);
397 total = stock.getCount(KQuery::MIN);
398 record = stock.getKRecord(total - 1, KQuery::MIN);
399 expect = KRecord(Datetime(
"2011-12-06 15:00"), 2325.380, 2326.1, 2324.6, 2325.9, 5215150, 566312);
400 BOOST_CHECK(record == expect);
403 record = stock.getKRecord(0, KQuery::MIN5);
404 expect = KRecord(Datetime(200001040935), 1366.580, 1369.680, 1366.579, 1369.187, 106611.5, 438171);
405 BOOST_CHECK(record == expect);
408 record = stock.getKRecord(10, KQuery::MIN5);
409 expect = KRecord(Datetime(200001041025), 1366.291, 1366.582, 1366.144, 1366.526, 89332, 118007);
410 BOOST_CHECK(record == expect);
413 total = stock.getCount(KQuery::MIN5);
414 record = stock.getKRecord(total - 1, KQuery::MIN5);
415 expect = KRecord(Datetime(201112061500), 2323.059, 2325.931, 2323.059, 2325.905, 176347.1, 1873675);
416 BOOST_CHECK(record == expect);
419 record = stock.getKRecord(0, KQuery::MIN15);
420 expect = KRecord(Datetime(200001040945), 1366.580, 1369.680, 1364.645, 1364.763, 250875.9, 912990);
421 BOOST_CHECK(record == expect);
424 record = stock.getKRecord(10, KQuery::MIN15);
425 expect = KRecord(Datetime(200001041345), 1399.325, 1403.996, 1399.325, 1403.056, 441489.9, 547552);
426 BOOST_CHECK(record == expect);
429 total = stock.getCount(KQuery::MIN15);
430 record = stock.getKRecord(total - 1, KQuery::MIN15);
431 expect = KRecord(Datetime(201112061500), 2323.068, 2325.931, 2320.819, 2325.905, 402339.3, 4060591);
432 BOOST_CHECK(record == expect);
435 record = stock.getKRecord(0, KQuery::MIN30);
436 expect = KRecord(Datetime(200001041000), 1366.580, 1369.68, 1361.459, 1361.459, 455153, 1370442);
437 BOOST_CHECK(record == expect);
440 record = stock.getKRecord(10, KQuery::MIN30);
441 expect = KRecord(Datetime(200001051100), 1421.179, 1425.868, 1421.179, 1423.859, 1109219.5, 1282851);
442 BOOST_CHECK(record == expect);
445 total = stock.getCount(KQuery::MIN30);
446 record = stock.getKRecord(total - 1, KQuery::MIN30);
447 expect = KRecord(Datetime(201112061500), 2327.919, 2327.919, 2320.819, 2325.905, 660297.5, 6415054);
448 BOOST_CHECK(record == expect);
451 record = stock.getKRecord(0, KQuery::MIN60);
452 expect = KRecord(Datetime(200001041030), 1366.580, 1369.68, 1361.295, 1367.683, 1041787.5, 2370736);
453 BOOST_CHECK(record == expect);
456 record = stock.getKRecord(10, KQuery::MIN60);
457 expect = KRecord(Datetime(200001061400), 1411.490, 1436.53, 1411.49, 1436.53, 2432679.2, 3016536);
458 BOOST_CHECK(record == expect);
461 total = stock.getCount(KQuery::MIN60);
462 record = stock.getKRecord(total - 1, KQuery::MIN60);
463 expect = KRecord(Datetime(201112061500), 2326.036, 2331.378, 2320.819, 2325.905, 1332210, 11886356);
464 BOOST_CHECK(record == expect);
472 StockManager& sm = StockManager::instance();
476 size_t out_start, out_end;
477 stock = sm.getStock(
"sh000001");
481 success = stock.getIndexRange(query, out_start, out_end);
482 BOOST_CHECK(success ==
true);
483 BOOST_CHECK(out_start == 0);
484 BOOST_CHECK(out_end == 5121);
486 query = KQuery(0, Null<hku_int64>(), KQuery::WEEK);
487 success = stock.getIndexRange(query, out_start, out_end);
488 BOOST_CHECK(success ==
true);
489 BOOST_CHECK(out_start == 0);
490 BOOST_CHECK(out_end == 1059);
492 query = KQuery(0, Null<hku_int64>(), KQuery::MONTH);
493 success = stock.getIndexRange(query, out_start, out_end);
494 BOOST_CHECK(success ==
true);
495 BOOST_CHECK(out_start == 0);
496 BOOST_CHECK(out_end == 253);
498 query = KQuery(0, Null<hku_int64>(), KQuery::QUARTER);
499 success = stock.getIndexRange(query, out_start, out_end);
500 BOOST_CHECK(success ==
true);
501 BOOST_CHECK(out_start == 0);
502 BOOST_CHECK(out_end == 85);
504 query = KQuery(0, Null<hku_int64>(), KQuery::HALFYEAR);
505 success = stock.getIndexRange(query, out_start, out_end);
506 BOOST_CHECK(success ==
true);
507 BOOST_CHECK(out_start == 0);
508 BOOST_CHECK(out_end == 43);
510 query = KQuery(0, Null<hku_int64>(), KQuery::YEAR);
511 success = stock.getIndexRange(query, out_start, out_end);
512 BOOST_CHECK(success ==
true);
513 BOOST_CHECK(out_start == 0);
514 BOOST_CHECK(out_end == 22);
516 query = KQuery(0, Null<hku_int64>(), KQuery::MIN);
517 success = stock.getIndexRange(query, out_start, out_end);
518 BOOST_CHECK(success ==
true);
519 BOOST_CHECK(out_start == 0);
520 BOOST_CHECK(out_end == 682823L);
522 query = KQuery(0, Null<hku_int64>(), KQuery::MIN5);
523 success = stock.getIndexRange(query, out_start, out_end);
524 BOOST_CHECK(success ==
true);
525 BOOST_CHECK(out_start == 0);
526 BOOST_CHECK(out_end == 133980L);
528 query = KQuery(0, Null<hku_int64>(), KQuery::MIN15);
529 success = stock.getIndexRange(query, out_start, out_end);
530 BOOST_CHECK(success ==
true);
531 BOOST_CHECK(out_start == 0);
532 BOOST_CHECK(out_end == 44750);
534 query = KQuery(0, Null<hku_int64>(), KQuery::MIN30);
535 success = stock.getIndexRange(query, out_start, out_end);
536 BOOST_CHECK(success ==
true);
537 BOOST_CHECK(out_start == 0);
538 BOOST_CHECK(out_end == 22380L);
540 query = KQuery(0, Null<hku_int64>(), KQuery::MIN60);
541 success = stock.getIndexRange(query, out_start, out_end);
542 BOOST_CHECK(success ==
true);
543 BOOST_CHECK(out_start == 0);
544 BOOST_CHECK(out_end == 11193);
547 query = KQueryByDate();
548 success = stock.getIndexRange(query, out_start, out_end);
549 BOOST_CHECK(success ==
true);
550 BOOST_CHECK(out_start == 0);
551 BOOST_CHECK(out_end == 5121);
553 query = KQueryByDate(Datetime::min(), Null<Datetime>(), KQuery::WEEK);
554 success = stock.getIndexRange(query, out_start, out_end);
555 BOOST_CHECK(success ==
true);
556 BOOST_CHECK(out_start == 0);
557 BOOST_CHECK(out_end == 1059);
559 query = KQueryByDate(Datetime::min(), Null<Datetime>(), KQuery::MONTH);
560 success = stock.getIndexRange(query, out_start, out_end);
561 BOOST_CHECK(success ==
true);
562 BOOST_CHECK(out_start == 0);
563 BOOST_CHECK(out_end == 253);
565 query = KQueryByDate(Datetime::min(), Null<Datetime>(), KQuery::QUARTER);
566 success = stock.getIndexRange(query, out_start, out_end);
567 BOOST_CHECK(success ==
true);
568 BOOST_CHECK(out_start == 0);
569 BOOST_CHECK(out_end == 85);
571 query = KQueryByDate(Datetime::min(), Null<Datetime>(), KQuery::HALFYEAR);
572 success = stock.getIndexRange(query, out_start, out_end);
573 BOOST_CHECK(success ==
true);
574 BOOST_CHECK(out_start == 0);
575 BOOST_CHECK(out_end == 43);
577 query = KQueryByDate(Datetime::min(), Null<Datetime>(), KQuery::YEAR);
578 success = stock.getIndexRange(query, out_start, out_end);
579 BOOST_CHECK(success ==
true);
580 BOOST_CHECK(out_start == 0);
581 BOOST_CHECK(out_end == 22);
583 query = KQueryByDate(Datetime::min(), Null<Datetime>(), KQuery::MIN);
584 success = stock.getIndexRange(query, out_start, out_end);
585 BOOST_CHECK(success ==
true);
586 BOOST_CHECK(out_start == 0);
587 BOOST_CHECK(out_end == 682823L);
589 query = KQueryByDate(Datetime::min(), Null<Datetime>(), KQuery::MIN5);
590 success = stock.getIndexRange(query, out_start, out_end);
591 BOOST_CHECK(success ==
true);
592 BOOST_CHECK(out_start == 0);
593 BOOST_CHECK(out_end == 133980L);
595 query = KQueryByDate(Datetime::min(), Null<Datetime>(), KQuery::MIN15);
596 success = stock.getIndexRange(query, out_start, out_end);
597 BOOST_CHECK(success ==
true);
598 BOOST_CHECK(out_start == 0);
599 BOOST_CHECK(out_end == 44750);
601 query = KQueryByDate(Datetime::min(), Null<Datetime>(), KQuery::MIN30);
602 success = stock.getIndexRange(query, out_start, out_end);
603 BOOST_CHECK(success ==
true);
604 BOOST_CHECK(out_start == 0);
605 BOOST_CHECK(out_end == 22380L);
607 query = KQueryByDate(Datetime::min(), Null<Datetime>(), KQuery::MIN60);
608 success = stock.getIndexRange(query, out_start, out_end);
609 BOOST_CHECK(success ==
true);
610 BOOST_CHECK(out_start == 0);
611 BOOST_CHECK(out_end == 11193);
614 query = KQuery(168,165);
615 success = stock.getIndexRange(query, out_start, out_end);
616 BOOST_CHECK(success ==
false);
617 BOOST_CHECK(out_start == 0);
618 BOOST_CHECK(out_end == 0);
620 query = KQuery(168,165, KQuery::WEEK);
621 success = stock.getIndexRange(query, out_start, out_end);
622 BOOST_CHECK(success ==
false);
623 BOOST_CHECK(out_start == 0);
624 BOOST_CHECK(out_end == 0);
626 query = KQuery(168,165, KQuery::MONTH);
627 success = stock.getIndexRange(query, out_start, out_end);
628 BOOST_CHECK(success ==
false);
629 BOOST_CHECK(out_start == 0);
630 BOOST_CHECK(out_end == 0);
632 query = KQuery(168,165, KQuery::QUARTER);
633 success = stock.getIndexRange(query, out_start, out_end);
634 BOOST_CHECK(success ==
false);
635 BOOST_CHECK(out_start == 0);
636 BOOST_CHECK(out_end == 0);
638 query = KQuery(168,165, KQuery::HALFYEAR);
639 success = stock.getIndexRange(query, out_start, out_end);
640 BOOST_CHECK(success ==
false);
641 BOOST_CHECK(out_start == 0);
642 BOOST_CHECK(out_end == 0);
644 query = KQuery(168,165, KQuery::YEAR);
645 success = stock.getIndexRange(query, out_start, out_end);
646 BOOST_CHECK(success ==
false);
647 BOOST_CHECK(out_start == 0);
648 BOOST_CHECK(out_end == 0);
650 query = KQuery(168,165, KQuery::MIN);
651 success = stock.getIndexRange(query, out_start, out_end);
652 BOOST_CHECK(success ==
false);
653 BOOST_CHECK(out_start == 0);
654 BOOST_CHECK(out_end == 0);
656 query = KQuery(168,165, KQuery::MIN5);
657 success = stock.getIndexRange(query, out_start, out_end);
658 BOOST_CHECK(success ==
false);
659 BOOST_CHECK(out_start == 0);
660 BOOST_CHECK(out_end == 0);
662 query = KQuery(168,165, KQuery::MIN15);
663 success = stock.getIndexRange(query, out_start, out_end);
664 BOOST_CHECK(success ==
false);
665 BOOST_CHECK(out_start == 0);
666 BOOST_CHECK(out_end == 0);
668 query = KQuery(168,165, KQuery::MIN30);
669 success = stock.getIndexRange(query, out_start, out_end);
670 BOOST_CHECK(success ==
false);
671 BOOST_CHECK(out_start == 0);
672 BOOST_CHECK(out_end == 0);
674 query = KQuery(168,165, KQuery::MIN60);
675 success = stock.getIndexRange(query, out_start, out_end);
676 BOOST_CHECK(success ==
false);
677 BOOST_CHECK(out_start == 0);
678 BOOST_CHECK(out_end == 0);
681 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000));
682 success = stock.getIndexRange(query, out_start, out_end);
683 BOOST_CHECK(success ==
false);
684 BOOST_CHECK(out_start == 0);
685 BOOST_CHECK(out_end == 0);
687 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::WEEK);
688 success = stock.getIndexRange(query, out_start, out_end);
689 BOOST_CHECK(success ==
false);
690 BOOST_CHECK(out_start == 0);
691 BOOST_CHECK(out_end == 0);
693 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::MONTH);
694 success = stock.getIndexRange(query, out_start, out_end);
695 BOOST_CHECK(success ==
false);
696 BOOST_CHECK(out_start == 0);
697 BOOST_CHECK(out_end == 0);
699 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::QUARTER);
700 success = stock.getIndexRange(query, out_start, out_end);
701 BOOST_CHECK(success ==
false);
702 BOOST_CHECK(out_start == 0);
703 BOOST_CHECK(out_end == 0);
705 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::HALFYEAR);
706 success = stock.getIndexRange(query, out_start, out_end);
707 BOOST_CHECK(success ==
false);
708 BOOST_CHECK(out_start == 0);
709 BOOST_CHECK(out_end == 0);
711 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::YEAR);
712 success = stock.getIndexRange(query, out_start, out_end);
713 BOOST_CHECK(success ==
false);
714 BOOST_CHECK(out_start == 0);
715 BOOST_CHECK(out_end == 0);
717 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::MIN);
718 success = stock.getIndexRange(query, out_start, out_end);
719 BOOST_CHECK(success ==
false);
720 BOOST_CHECK(out_start == 0);
721 BOOST_CHECK(out_end == 0);
723 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::MIN5);
724 success = stock.getIndexRange(query, out_start, out_end);
725 BOOST_CHECK(success ==
false);
726 BOOST_CHECK(out_start == 0);
727 BOOST_CHECK(out_end == 0);
729 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::MIN15);
730 success = stock.getIndexRange(query, out_start, out_end);
731 BOOST_CHECK(success ==
false);
732 BOOST_CHECK(out_start == 0);
733 BOOST_CHECK(out_end == 0);
735 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::MIN30);
736 success = stock.getIndexRange(query, out_start, out_end);
737 BOOST_CHECK(success ==
false);
738 BOOST_CHECK(out_start == 0);
739 BOOST_CHECK(out_end == 0);
741 query = KQueryByDate(Datetime(200001010900), Datetime(200001010000), KQuery::MIN60);
742 success = stock.getIndexRange(query, out_start, out_end);
743 BOOST_CHECK(success ==
false);
744 BOOST_CHECK(out_start == 0);
745 BOOST_CHECK(out_end == 0);
748 query = KQuery(165,165);
749 success = stock.getIndexRange(query, out_start, out_end);
750 BOOST_CHECK(success ==
false);
751 BOOST_CHECK(out_start == 0);
752 BOOST_CHECK(out_end == 0);
754 query = KQuery(165,165, KQuery::WEEK);
755 success = stock.getIndexRange(query, out_start, out_end);
756 BOOST_CHECK(success ==
false);
757 BOOST_CHECK(out_start == 0);
758 BOOST_CHECK(out_end == 0);
760 query = KQuery(165,165, KQuery::MONTH);
761 success = stock.getIndexRange(query, out_start, out_end);
762 BOOST_CHECK(success ==
false);
763 BOOST_CHECK(out_start == 0);
764 BOOST_CHECK(out_end == 0);
766 query = KQuery(165,165, KQuery::QUARTER);
767 success = stock.getIndexRange(query, out_start, out_end);
768 BOOST_CHECK(success ==
false);
769 BOOST_CHECK(out_start == 0);
770 BOOST_CHECK(out_end == 0);
772 query = KQuery(165,165, KQuery::HALFYEAR);
773 success = stock.getIndexRange(query, out_start, out_end);
774 BOOST_CHECK(success ==
false);
775 BOOST_CHECK(out_start == 0);
776 BOOST_CHECK(out_end == 0);
778 query = KQuery(165,165, KQuery::YEAR);
779 success = stock.getIndexRange(query, out_start, out_end);
780 BOOST_CHECK(success ==
false);
781 BOOST_CHECK(out_start == 0);
782 BOOST_CHECK(out_end == 0);
784 query = KQuery(165,165, KQuery::MIN);
785 success = stock.getIndexRange(query, out_start, out_end);
786 BOOST_CHECK(success ==
false);
787 BOOST_CHECK(out_start == 0);
788 BOOST_CHECK(out_end == 0);
790 query = KQuery(165,165, KQuery::MIN5);
791 success = stock.getIndexRange(query, out_start, out_end);
792 BOOST_CHECK(success ==
false);
793 BOOST_CHECK(out_start == 0);
794 BOOST_CHECK(out_end == 0);
796 query = KQuery(165,165, KQuery::MIN15);
797 success = stock.getIndexRange(query, out_start, out_end);
798 BOOST_CHECK(success ==
false);
799 BOOST_CHECK(out_start == 0);
800 BOOST_CHECK(out_end == 0);
802 query = KQuery(165,165, KQuery::MIN30);
803 success = stock.getIndexRange(query, out_start, out_end);
804 BOOST_CHECK(success ==
false);
805 BOOST_CHECK(out_start == 0);
806 BOOST_CHECK(out_end == 0);
808 query = KQuery(165,165, KQuery::MIN60);
809 success = stock.getIndexRange(query, out_start, out_end);
810 BOOST_CHECK(success ==
false);
811 BOOST_CHECK(out_start == 0);
812 BOOST_CHECK(out_end == 0);
815 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000));
816 success = stock.getIndexRange(query, out_start, out_end);
817 BOOST_CHECK(success ==
false);
818 BOOST_CHECK(out_start == 0);
819 BOOST_CHECK(out_end == 0);
821 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::WEEK);
822 success = stock.getIndexRange(query, out_start, out_end);
823 BOOST_CHECK(success ==
false);
824 BOOST_CHECK(out_start == 0);
825 BOOST_CHECK(out_end == 0);
827 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::MONTH);
828 success = stock.getIndexRange(query, out_start, out_end);
829 BOOST_CHECK(success ==
false);
830 BOOST_CHECK(out_start == 0);
831 BOOST_CHECK(out_end == 0);
833 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::QUARTER);
834 success = stock.getIndexRange(query, out_start, out_end);
835 BOOST_CHECK(success ==
false);
836 BOOST_CHECK(out_start == 0);
837 BOOST_CHECK(out_end == 0);
839 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::HALFYEAR);
840 success = stock.getIndexRange(query, out_start, out_end);
841 BOOST_CHECK(success ==
false);
842 BOOST_CHECK(out_start == 0);
843 BOOST_CHECK(out_end == 0);
845 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::YEAR);
846 success = stock.getIndexRange(query, out_start, out_end);
847 BOOST_CHECK(success ==
false);
848 BOOST_CHECK(out_start == 0);
849 BOOST_CHECK(out_end == 0);
851 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::MIN);
852 success = stock.getIndexRange(query, out_start, out_end);
853 BOOST_CHECK(success ==
false);
854 BOOST_CHECK(out_start == 0);
855 BOOST_CHECK(out_end == 0);
857 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::MIN5);
858 success = stock.getIndexRange(query, out_start, out_end);
859 BOOST_CHECK(success ==
false);
860 BOOST_CHECK(out_start == 0);
861 BOOST_CHECK(out_end == 0);
863 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::MIN15);
864 success = stock.getIndexRange(query, out_start, out_end);
865 BOOST_CHECK(success ==
false);
866 BOOST_CHECK(out_start == 0);
867 BOOST_CHECK(out_end == 0);
869 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::MIN30);
870 success = stock.getIndexRange(query, out_start, out_end);
871 BOOST_CHECK(success ==
false);
872 BOOST_CHECK(out_start == 0);
873 BOOST_CHECK(out_end == 0);
875 query = KQueryByDate(Datetime(200001010000), Datetime(200001010000), KQuery::MIN60);
876 success = stock.getIndexRange(query, out_start, out_end);
877 BOOST_CHECK(success ==
false);
878 BOOST_CHECK(out_start == 0);
879 BOOST_CHECK(out_end == 0);
882 query = KQuery(1,10);
883 success = stock.getIndexRange(query, out_start, out_end);
884 BOOST_CHECK(success ==
true);
885 BOOST_CHECK(out_start == 1);
886 BOOST_CHECK(out_end == 10);
888 query = KQuery(1,10, KQuery::WEEK);
889 success = stock.getIndexRange(query, out_start, out_end);
890 BOOST_CHECK(success ==
true);
891 BOOST_CHECK(out_start == 1);
892 BOOST_CHECK(out_end == 10);
894 query = KQuery(1,10, KQuery::MONTH);
895 success = stock.getIndexRange(query, out_start, out_end);
896 BOOST_CHECK(success ==
true);
897 BOOST_CHECK(out_start == 1);
898 BOOST_CHECK(out_end == 10);
900 query = KQuery(1,10, KQuery::QUARTER);
901 success = stock.getIndexRange(query, out_start, out_end);
902 BOOST_CHECK(success ==
true);
903 BOOST_CHECK(out_start == 1);
904 BOOST_CHECK(out_end == 10);
906 query = KQuery(1,10, KQuery::HALFYEAR);
907 success = stock.getIndexRange(query, out_start, out_end);
908 BOOST_CHECK(success ==
true);
909 BOOST_CHECK(out_start == 1);
910 BOOST_CHECK(out_end == 10);
912 query = KQuery(1,10, KQuery::YEAR);
913 success = stock.getIndexRange(query, out_start, out_end);
914 BOOST_CHECK(success ==
true);
915 BOOST_CHECK(out_start == 1);
916 BOOST_CHECK(out_end == 10);
918 query = KQuery(1,10, KQuery::MIN);
919 success = stock.getIndexRange(query, out_start, out_end);
920 BOOST_CHECK(success ==
true);
921 BOOST_CHECK(out_start == 1);
922 BOOST_CHECK(out_end == 10);
924 query = KQuery(1,10, KQuery::MIN5);
925 success = stock.getIndexRange(query, out_start, out_end);
926 BOOST_CHECK(success ==
true);
927 BOOST_CHECK(out_start == 1);
928 BOOST_CHECK(out_end == 10);
930 query = KQuery(1,10, KQuery::MIN15);
931 success = stock.getIndexRange(query, out_start, out_end);
932 BOOST_CHECK(success ==
true);
933 BOOST_CHECK(out_start == 1);
934 BOOST_CHECK(out_end == 10);
936 query = KQuery(1,10, KQuery::MIN30);
937 success = stock.getIndexRange(query, out_start, out_end);
938 BOOST_CHECK(success ==
true);
939 BOOST_CHECK(out_start == 1);
940 BOOST_CHECK(out_end == 10);
942 query = KQuery(1,10, KQuery::MIN60);
943 success = stock.getIndexRange(query, out_start, out_end);
944 BOOST_CHECK(success ==
true);
945 BOOST_CHECK(out_start == 1);
946 BOOST_CHECK(out_end == 10);
949 query = KQueryByDate(Datetime(199012200000), Datetime(199101030000));
950 success = stock.getIndexRange(query, out_start, out_end);
951 BOOST_CHECK(success ==
true);
952 BOOST_CHECK(out_start == 1);
953 BOOST_CHECK(out_end == 10);
955 query = KQueryByDate(Datetime(199102250000), Datetime(199104290000), KQuery::WEEK);
956 success = stock.getIndexRange(query, out_start, out_end);
957 BOOST_CHECK(success ==
true);
958 BOOST_CHECK(out_start == 10);
959 BOOST_CHECK(out_end == 19);
961 query = KQueryByDate(Datetime(199108010000), Datetime(199201010000), KQuery::MONTH);
962 success = stock.getIndexRange(query, out_start, out_end);
963 BOOST_CHECK(success ==
true);
964 BOOST_CHECK(out_start == 8);
965 BOOST_CHECK(out_end == 13);
967 query = KQueryByDate(Datetime(199201010000), Datetime(199310010000), KQuery::QUARTER);
968 success = stock.getIndexRange(query, out_start, out_end);
969 BOOST_CHECK(success ==
true);
970 BOOST_CHECK(out_start == 5);
971 BOOST_CHECK(out_end == 12);
973 query = KQueryByDate(Datetime(199401010000), Datetime(199801010000), KQuery::HALFYEAR);
974 success = stock.getIndexRange(query, out_start, out_end);
975 BOOST_CHECK(success ==
true);
976 BOOST_CHECK(out_start == 7);
977 BOOST_CHECK(out_end == 15);
979 query = KQueryByDate(Datetime(199601010000), Datetime(200001010000), KQuery::YEAR);
980 success = stock.getIndexRange(query, out_start, out_end);
981 BOOST_CHECK(success ==
true);
982 BOOST_CHECK(out_start == 6);
983 BOOST_CHECK(out_end == 10);
985 query = KQueryByDate(Datetime(200602171016), Datetime(200602171026), KQuery::MIN);
986 success = stock.getIndexRange(query, out_start, out_end);
987 BOOST_CHECK(success ==
true);
988 BOOST_CHECK(out_start == 343796L);
989 BOOST_CHECK(out_end == 343806L);
991 query = KQueryByDate(Datetime(200001041025), Datetime(200001041100), KQuery::MIN5);
992 success = stock.getIndexRange(query, out_start, out_end);
993 BOOST_CHECK(success ==
true);
994 BOOST_CHECK(out_start == 10);
995 BOOST_CHECK(out_end == 17);
997 query = KQueryByDate(Datetime(200001041415), Datetime(200001050945), KQuery::MIN15);
998 success = stock.getIndexRange(query, out_start, out_end);
999 BOOST_CHECK(success ==
true);
1000 BOOST_CHECK(out_start == 12);
1001 BOOST_CHECK(out_end == 16);
1003 query = KQueryByDate(Datetime(200001041330), Datetime(200001051500), KQuery::MIN30);
1004 success = stock.getIndexRange(query, out_start, out_end);
1005 BOOST_CHECK(success ==
true);
1006 BOOST_CHECK(out_start == 4);
1007 BOOST_CHECK(out_end == 15);
1009 query = KQueryByDate(Datetime(200001061400), Datetime(200001101130), KQuery::MIN60);
1010 success = stock.getIndexRange(query, out_start, out_end);
1011 BOOST_CHECK(success ==
true);
1012 BOOST_CHECK(out_start == 10);
1013 BOOST_CHECK(out_end == 17);
1016 query = KQueryByDate(Datetime(199012220000), Datetime(199101050000));
1017 success = stock.getIndexRange(query, out_start, out_end);
1018 BOOST_CHECK(success ==
true);
1019 BOOST_CHECK(out_start == 3);
1020 BOOST_CHECK(out_end == 12);
1022 query = KQueryByDate(Datetime(199102200000), Datetime(199104230000), KQuery::WEEK);
1023 success = stock.getIndexRange(query, out_start, out_end);
1024 BOOST_CHECK(success ==
true);
1025 BOOST_CHECK(out_start == 9);
1026 BOOST_CHECK(out_end == 18);
1028 query = KQueryByDate(Datetime(199107020000), Datetime(199112300000), KQuery::MONTH);
1029 success = stock.getIndexRange(query, out_start, out_end);
1030 BOOST_CHECK(success ==
true);
1031 BOOST_CHECK(out_start == 7);
1032 BOOST_CHECK(out_end == 12);
1034 query = KQueryByDate(Datetime(199112210000), Datetime(199308010000), KQuery::QUARTER);
1035 success = stock.getIndexRange(query, out_start, out_end);
1036 BOOST_CHECK(success ==
true);
1037 BOOST_CHECK(out_start == 4);
1038 BOOST_CHECK(out_end == 11);
1040 query = KQueryByDate(Datetime(199311010000), Datetime(199711010000), KQuery::HALFYEAR);
1041 success = stock.getIndexRange(query, out_start, out_end);
1042 BOOST_CHECK(success ==
true);
1043 BOOST_CHECK(out_start == 6);
1044 BOOST_CHECK(out_end == 14);
1046 query = KQueryByDate(Datetime(199502010000), Datetime(199912010000), KQuery::YEAR);
1047 success = stock.getIndexRange(query, out_start, out_end);
1048 BOOST_CHECK(success ==
true);
1049 BOOST_CHECK(out_start == 5);
1050 BOOST_CHECK(out_end == 9);
1052 query = KQueryByDate(Datetime(200602171016), Datetime(200602171026), KQuery::MIN);
1053 success = stock.getIndexRange(query, out_start, out_end);
1054 BOOST_CHECK(success ==
true);
1055 BOOST_CHECK(out_start == 343796L);
1056 BOOST_CHECK(out_end == 343806L);
1058 query = KQueryByDate(Datetime(200001041025), Datetime(200001041100), KQuery::MIN5);
1059 success = stock.getIndexRange(query, out_start, out_end);
1060 BOOST_CHECK(success ==
true);
1061 BOOST_CHECK(out_start == 10);
1062 BOOST_CHECK(out_end == 17);
1064 query = KQueryByDate(Datetime(200001041415), Datetime(200001050945), KQuery::MIN15);
1065 success = stock.getIndexRange(query, out_start, out_end);
1066 BOOST_CHECK(success ==
true);
1067 BOOST_CHECK(out_start == 12);
1068 BOOST_CHECK(out_end == 16);
1070 query = KQueryByDate(Datetime(200001041330), Datetime(200001051500), KQuery::MIN30);
1071 success = stock.getIndexRange(query, out_start, out_end);
1072 BOOST_CHECK(success ==
true);
1073 BOOST_CHECK(out_start == 4);
1074 BOOST_CHECK(out_end == 15);
1076 query = KQueryByDate(Datetime(200001061400), Datetime(200001101130), KQuery::MIN60);
1077 success = stock.getIndexRange(query, out_start, out_end);
1078 BOOST_CHECK(success ==
true);
1079 BOOST_CHECK(out_start == 10);
1080 BOOST_CHECK(out_end == 17);
1083 query = KQuery(-1,0);
1084 success = stock.getIndexRange(query, out_start, out_end);
1085 BOOST_CHECK(success ==
false);
1086 BOOST_CHECK(out_start == 0);
1087 BOOST_CHECK(out_end == 0);
1089 query = KQuery(0,-1);
1090 success = stock.getIndexRange(query, out_start, out_end);
1091 BOOST_CHECK(success ==
true);
1092 BOOST_CHECK(out_start == 0);
1093 BOOST_CHECK(out_end == 5120);
1095 query = KQuery(-1,-1);
1096 success = stock.getIndexRange(query, out_start, out_end);
1097 BOOST_CHECK(success ==
false);
1098 BOOST_CHECK(out_start == 0);
1099 BOOST_CHECK(out_end == 0);
1101 query = KQuery(-1, -2);
1102 success = stock.getIndexRange(query, out_start, out_end);
1103 BOOST_CHECK(success ==
false);
1104 BOOST_CHECK(out_start == 0);
1105 BOOST_CHECK(out_end == 0);
1107 query = KQuery(-2,-1);
1108 success = stock.getIndexRange(query, out_start, out_end);
1109 BOOST_CHECK(success ==
true);
1110 BOOST_CHECK(out_start == 5119);
1111 BOOST_CHECK(out_end == 5120);
1113 query = KQuery(-5120,-1);
1114 success = stock.getIndexRange(query, out_start, out_end);
1115 BOOST_CHECK(success ==
true);
1116 BOOST_CHECK(out_start == 1);
1117 BOOST_CHECK(out_end == 5120);
1125 StockManager& sm = StockManager::instance();
1126 Stock stock = sm.getStock(
"sh000001");
1128 KRecord record, expect;
1137 total = stock.getCount(KQuery::DAY);
1138 result = stock.getKRecordList(0, total, KQuery::DAY);
1139 BOOST_CHECK(result.size() == total);
1140 BOOST_CHECK(result[0] == KRecord(Datetime(199012190000), 96.050, 99.980, 95.790, 99.980, 49.4, 1260));
1141 BOOST_CHECK(result[10] == KRecord(Datetime(199101030000), 128.840, 130.140, 128.840, 130.140, 9.3, 141));
1142 BOOST_CHECK(result[5120] == KRecord(Datetime(201112060000), 2326.660, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078));
1145 result = stock.getKRecordList(0, total + 1, KQuery::DAY);
1146 BOOST_CHECK(result.size() == total);
1147 BOOST_CHECK(result[0] == KRecord(Datetime(199012190000), 96.050, 99.980, 95.790, 99.980, 49.4, 1260));
1148 BOOST_CHECK(result[10] == KRecord(Datetime(199101030000), 128.840, 130.140, 128.840, 130.140, 9.3, 141));
1149 BOOST_CHECK(result[5120] == KRecord(Datetime(201112060000), 2326.660, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078));
1152 result = stock.getKRecordList(1, 10, KQuery::DAY);
1153 BOOST_CHECK(result.size() == 9);
1154 BOOST_CHECK(result[0] == KRecord(Datetime(199012200000), 104.300, 104.390, 99.980, 104.390, 8.4, 197));
1155 BOOST_CHECK(result[1] == KRecord(Datetime(199012210000), 109.070, 109.130, 103.730, 109.130, 1.6, 28));
1156 BOOST_CHECK(result[8] == KRecord(Datetime(199101020000), 127.610, 128.840, 127.610, 128.840, 5.9, 91));
1159 result = stock.getKRecordList(0,0, KQuery::DAY);
1160 BOOST_CHECK(result.size() == 0);
1163 result = stock.getKRecordList(total, total, KQuery::DAY);
1164 BOOST_CHECK(result.size() == 0);
1167 result = stock.getKRecordList(2, 1, KQuery::DAY);
1168 BOOST_CHECK(result.size() == 0);
1171 result = stock.getKRecordList(0, 1, KQuery::DAY);
1172 BOOST_CHECK(result.size() == 1);
1173 BOOST_CHECK(result[0] == KRecord(Datetime(199012190000), 96.050, 99.980, 95.790, 99.980, 49.4, 1260));
1176 result = stock.getKRecordList(total - 1, total, KQuery::DAY);
1177 BOOST_CHECK(result.size() == 1);
1178 BOOST_CHECK(result[0] == KRecord(Datetime(201112060000), 2326.660, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078));
1181 result = stock.getKRecordList(total - 1, total + 1, KQuery::DAY);
1182 BOOST_CHECK(result.size() == 1);
1183 BOOST_CHECK(result[0] == KRecord(Datetime(201112060000), 2326.660, 2331.892, 2310.155, 2325.905, 4262559.5, 45917078));
1189 total = stock.getCount(KQuery::WEEK);
1190 result = stock.getKRecordList(0, total, KQuery::WEEK);
1191 BOOST_CHECK(result.size() == total);
1192 BOOST_CHECK(result[0] == KRecord(Datetime(199012210000), 96.05, 109.13, 95.79, 109.130, 59.4, 1485));
1193 BOOST_CHECK(result[1] == KRecord(Datetime(199012280000), 113.57, 126.45, 109.13, 126.450, 28.2, 321));
1194 BOOST_CHECK(result[1058] == KRecord(Datetime(201112090000), 2363.111, 2363.127, 2310.155, 2325.905, 9126681.1, 98132048));
1198 result = stock.getKRecordList(0, total + 1, KQuery::WEEK);
1199 BOOST_CHECK(result.size() == total);
1200 BOOST_CHECK(result[0] == KRecord(Datetime(199012210000), 96.05, 109.13, 95.79, 109.130, 59.4, 1485));
1201 BOOST_CHECK(result[1] == KRecord(Datetime(199012280000), 113.57, 126.45, 109.13, 126.450, 28.2, 321));
1202 BOOST_CHECK(result[1058] == KRecord(Datetime(201112090000), 2363.111, 2363.127, 2310.155, 2325.905, 9126681.1, 98132048));
1205 result = stock.getKRecordList(1, 10, KQuery::WEEK);
1206 BOOST_CHECK(result.size() == 9);
1207 BOOST_CHECK(result[0] == KRecord(Datetime(199012280000), 113.57, 126.45, 109.13, 126.450, 28.2, 321));
1208 BOOST_CHECK(result[1] == KRecord(Datetime(199101040000), 126.56, 131.44, 126.48, 131.440, 47.3, 730));
1209 BOOST_CHECK(result[8] == KRecord(Datetime(199102220000), 133.12, 134.87, 133.08, 134.870, 551, 9271));
1212 result = stock.getKRecordList(0,0, KQuery::WEEK);
1213 BOOST_CHECK(result.size() == 0);
1216 result = stock.getKRecordList(total, total, KQuery::WEEK);
1217 BOOST_CHECK(result.size() == 0);
1220 result = stock.getKRecordList(2, 1, KQuery::WEEK);
1221 BOOST_CHECK(result.size() == 0);
1224 result = stock.getKRecordList(0, 1, KQuery::WEEK);
1225 BOOST_CHECK(result.size() == 1);
1226 BOOST_CHECK(result[0] == KRecord(Datetime(199012210000), 96.05, 109.13, 95.79, 109.130, 59.4, 1485));
1229 result = stock.getKRecordList(total - 1, total, KQuery::WEEK);
1230 BOOST_CHECK(result.size() == 1);
1231 BOOST_CHECK(result[0] == KRecord(Datetime(201112090000), 2363.111, 2363.127, 2310.155, 2325.905, 9126681.1, 98132048));
1234 result = stock.getKRecordList(total - 1, total + 1, KQuery::WEEK);
1235 BOOST_CHECK(result.size() == 1);
1236 BOOST_CHECK(result[0] == KRecord(Datetime(201112090000), 2363.111, 2363.127, 2310.155, 2325.905, 9126681.1, 98132048));
1243 total = stock.getCount(KQuery::MONTH);
1244 result = stock.getKRecordList(0, total, KQuery::MONTH);
1245 BOOST_CHECK(result.size() == total);
1246 BOOST_CHECK(result[0] == KRecord(Datetime(199012310000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1247 BOOST_CHECK(result[1] == KRecord(Datetime(199101310000), 127.61, 135.19, 127.61, 129.970, 3637.1, 67197));
1248 BOOST_CHECK(result[252] == KRecord(Datetime(201112310000), 2392.485, 2423.559, 2310.155, 2325.905, 24378748.5, 256650941));
1252 result = stock.getKRecordList(0, total + 1, KQuery::MONTH);
1253 BOOST_CHECK(result.size() == total);
1254 BOOST_CHECK(result[0] == KRecord(Datetime(199012310000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1255 BOOST_CHECK(result[1] == KRecord(Datetime(199101310000), 127.61, 135.19, 127.61, 129.970, 3637.1, 67197));
1256 BOOST_CHECK(result[252] == KRecord(Datetime(201112310000), 2392.485, 2423.559, 2310.155, 2325.905, 24378748.5, 256650941));
1259 result = stock.getKRecordList(1, 10, KQuery::MONTH);
1260 BOOST_CHECK(result.size() == 9);
1261 BOOST_CHECK(result[0] == KRecord(Datetime(199101310000), 127.61, 135.19, 127.61, 129.970, 3637.1, 67197));
1262 BOOST_CHECK(result[1] == KRecord(Datetime(199102280000), 129.5, 134.87, 128.06, 133.010, 3027.3, 50982));
1263 BOOST_CHECK(result[8] == KRecord(Datetime(199109300000), 180.08, 191.18, 178.43, 180.920, 19410.4, 286133));
1266 result = stock.getKRecordList(0,0, KQuery::MONTH);
1267 BOOST_CHECK(result.size() == 0);
1270 result = stock.getKRecordList(total, total, KQuery::MONTH);
1271 BOOST_CHECK(result.size() == 0);
1274 result = stock.getKRecordList(2, 1, KQuery::MONTH);
1275 BOOST_CHECK(result.size() == 0);
1278 result = stock.getKRecordList(0, 1, KQuery::MONTH);
1279 BOOST_CHECK(result.size() == 1);
1280 BOOST_CHECK(result[0] == KRecord(Datetime(199012310000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1283 result = stock.getKRecordList(total - 1, total, KQuery::MONTH);
1284 BOOST_CHECK(result.size() == 1);
1285 BOOST_CHECK(result[0] == KRecord(Datetime(201112310000), 2392.485, 2423.559, 2310.155, 2325.905, 24378748.5, 256650941));
1288 result = stock.getKRecordList(total - 1, total + 1, KQuery::MONTH);
1289 BOOST_CHECK(result.size() == 1);
1290 BOOST_CHECK(result[0] == KRecord(Datetime(201112310000), 2392.485, 2423.559, 2310.155, 2325.905, 24378748.5, 256650941));
1297 total = stock.getCount(KQuery::QUARTER);
1298 result = stock.getKRecordList(0, total, KQuery::QUARTER);
1299 BOOST_CHECK(result.size() == total);
1300 BOOST_CHECK(result[0] == KRecord(Datetime(199012310000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1301 BOOST_CHECK(result[1] == KRecord(Datetime(199103310000), 127.61, 135.19, 120.11, 120.190, 8389.7, 142707));
1302 BOOST_CHECK(result[84] == KRecord(Datetime(201112310000), 2363.078, 2536.779, 2307.146, 2325.905, 298278573.1, 3100147936));
1306 result = stock.getKRecordList(0, total + 1, KQuery::QUARTER);
1307 BOOST_CHECK(result.size() == total);
1308 BOOST_CHECK(result[0] == KRecord(Datetime(199012310000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1309 BOOST_CHECK(result[1] == KRecord(Datetime(199103310000), 127.61, 135.19, 120.11, 120.190, 8389.7, 142707));
1310 BOOST_CHECK(result[84] == KRecord(Datetime(201112310000), 2363.078, 2536.779, 2307.146, 2325.905, 298278573.1, 3100147936));
1313 result = stock.getKRecordList(1, 10, KQuery::QUARTER);
1314 BOOST_CHECK(result.size() == 9);
1315 BOOST_CHECK(result[0] == KRecord(Datetime(199103310000), 127.61, 135.19, 120.11, 120.190, 8389.7, 142707));
1316 BOOST_CHECK(result[1] == KRecord(Datetime(199106300000), 120.69, 137.56, 104.96, 137.560, 12095.6, 222753));
1317 BOOST_CHECK(result[8] == KRecord(Datetime(199303310000), 784.13, 1558.95, 777.16, 925.910, 5003866.3, 26182794));
1320 result = stock.getKRecordList(0,0, KQuery::QUARTER);
1321 BOOST_CHECK(result.size() == 0);
1324 result = stock.getKRecordList(total, total, KQuery::QUARTER);
1325 BOOST_CHECK(result.size() == 0);
1328 result = stock.getKRecordList(2, 1, KQuery::QUARTER);
1329 BOOST_CHECK(result.size() == 0);
1332 result = stock.getKRecordList(0, 1, KQuery::QUARTER);
1333 BOOST_CHECK(result.size() == 1);
1334 BOOST_CHECK(result[0] == KRecord(Datetime(199012310000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1337 result = stock.getKRecordList(total - 1, total, KQuery::QUARTER);
1338 BOOST_CHECK(result.size() == 1);
1339 BOOST_CHECK(result[0] == KRecord(Datetime(201112310000), 2363.078, 2536.779, 2307.146, 2325.905, 298278573.1, 3100147936));
1342 result = stock.getKRecordList(total - 1, total + 1, KQuery::QUARTER);
1343 BOOST_CHECK(result.size() == 1);
1344 BOOST_CHECK(result[0] == KRecord(Datetime(201112310000), 2363.078, 2536.779, 2307.146, 2325.905, 298278573.1, 3100147936));
1350 total = stock.getCount(KQuery::HALFYEAR);
1351 result = stock.getKRecordList(0, total, KQuery::HALFYEAR);
1352 BOOST_CHECK(result.size() == total);
1353 BOOST_CHECK(result[0] == KRecord(Datetime(199012310000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1354 BOOST_CHECK(result[1] == KRecord(Datetime(199106300000), 127.61, 137.56, 104.96, 137.560, 20485.3, 365460));
1355 BOOST_CHECK(result[42] == KRecord(Datetime(201112310000), 2767.834, 2826.959, 2307.146, 2325.905, 842271699.6, 8187717694));
1359 result = stock.getKRecordList(0, total + 1, KQuery::HALFYEAR);
1360 BOOST_CHECK(result.size() == total);
1361 BOOST_CHECK(result[0] == KRecord(Datetime(199012310000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1362 BOOST_CHECK(result[1] == KRecord(Datetime(199106300000), 127.61, 137.56, 104.96, 137.560, 20485.3, 365460));
1363 BOOST_CHECK(result[42] == KRecord(Datetime(201112310000), 2767.834, 2826.959, 2307.146, 2325.905, 842271699.6, 8187717694));
1366 result = stock.getKRecordList(1, 10, KQuery::HALFYEAR);
1367 BOOST_CHECK(result.size() == 9);
1368 BOOST_CHECK(result[0] == KRecord(Datetime(199106300000), 127.61, 137.56, 104.96, 137.560, 20485.3, 365460));
1369 BOOST_CHECK(result[1] == KRecord(Datetime(199112310000), 136.64, 292.75, 131.87, 292.750, 60078.8, 890458));
1370 BOOST_CHECK(result[8] == KRecord(Datetime(199506300000), 637.72, 926.41, 524.43, 630.580, 12294596.7, 164388191));
1373 result = stock.getKRecordList(0,0, KQuery::HALFYEAR);
1374 BOOST_CHECK(result.size() == 0);
1377 result = stock.getKRecordList(total, total, KQuery::HALFYEAR);
1378 BOOST_CHECK(result.size() == 0);
1381 result = stock.getKRecordList(2, 1, KQuery::HALFYEAR);
1382 BOOST_CHECK(result.size() == 0);
1385 result = stock.getKRecordList(0, 1, KQuery::HALFYEAR);
1386 BOOST_CHECK(result.size() == 1);
1387 BOOST_CHECK(result[0] == KRecord(Datetime(199012310000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1390 result = stock.getKRecordList(total - 1, total, KQuery::HALFYEAR);
1391 BOOST_CHECK(result.size() == 1);
1392 BOOST_CHECK(result[0] == KRecord(Datetime(201112310000), 2767.834, 2826.959, 2307.146, 2325.905, 842271699.6, 8187717694));
1395 result = stock.getKRecordList(total - 1, total + 1, KQuery::HALFYEAR);
1396 BOOST_CHECK(result.size() == 1);
1397 BOOST_CHECK(result[0] == KRecord(Datetime(201112310000), 2767.834, 2826.959, 2307.146, 2325.905, 842271699.6, 8187717694));
1404 total = stock.getCount(KQuery::YEAR);
1405 result = stock.getKRecordList(0, total, KQuery::YEAR);
1406 BOOST_CHECK(result.size() == total);
1407 BOOST_CHECK(result[0] == KRecord(Datetime(199012310000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1408 BOOST_CHECK(result[1] == KRecord(Datetime(199112310000), 127.61, 292.75, 104.96, 292.750, 80564.1, 1255918));
1409 BOOST_CHECK(result[21] == KRecord(Datetime(201112310000), 2825.329, 3067.456, 2307.146, 2325.905, 2308389935.3, 21513978512));
1413 result = stock.getKRecordList(0, total + 1, KQuery::YEAR);
1414 BOOST_CHECK(result.size() == total);
1415 BOOST_CHECK(result[0] == KRecord(Datetime(199012310000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1416 BOOST_CHECK(result[1] == KRecord(Datetime(199112310000), 127.61, 292.75, 104.96, 292.750, 80564.1, 1255918));
1417 BOOST_CHECK(result[21] == KRecord(Datetime(201112310000), 2825.329, 3067.456, 2307.146, 2325.905, 2308389935.3, 21513978512));
1420 result = stock.getKRecordList(1, 10, KQuery::YEAR);
1421 BOOST_CHECK(result.size() == 9);
1422 BOOST_CHECK(result[0] == KRecord(Datetime(199112310000), 127.61, 292.75, 104.96, 292.750, 80564.1, 1255918));
1423 BOOST_CHECK(result[1] == KRecord(Datetime(199212310000), 293.74, 1429.01, 292.76, 780.390, 2497452.9, 18170898));
1424 BOOST_CHECK(result[8] == KRecord(Datetime(199912310000), 1144.888, 1756.184, 1047.833, 1366.580, 181932093.8, 2287638100));
1427 result = stock.getKRecordList(0,0, KQuery::YEAR);
1428 BOOST_CHECK(result.size() == 0);
1431 result = stock.getKRecordList(total, total, KQuery::YEAR);
1432 BOOST_CHECK(result.size() == 0);
1435 result = stock.getKRecordList(2, 1, KQuery::YEAR);
1436 BOOST_CHECK(result.size() == 0);
1439 result = stock.getKRecordList(0, 1, KQuery::YEAR);
1440 BOOST_CHECK(result.size() == 1);
1441 BOOST_CHECK(result[0] == KRecord(Datetime(199012310000), 96.05, 127.61, 95.79, 127.610, 93.6, 1884));
1444 result = stock.getKRecordList(total - 1, total, KQuery::YEAR);
1445 BOOST_CHECK(result.size() == 1);
1446 BOOST_CHECK(result[0] == KRecord(Datetime(201112310000), 2825.329, 3067.456, 2307.146, 2325.905, 2308389935.3, 21513978512));
1449 result = stock.getKRecordList(total - 1, total + 1, KQuery::YEAR);
1450 BOOST_CHECK(result.size() == 1);
1451 BOOST_CHECK(result[0] == KRecord(Datetime(201112310000), 2825.329, 3067.456, 2307.146, 2325.905, 2308389935.3, 21513978512));
1458 total = stock.getCount(KQuery::MIN);
1459 result = stock.getKRecordList(0, total, KQuery::MIN);
1460 BOOST_CHECK(result.size() == total);
1461 BOOST_CHECK(result[0] == KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158));
1462 BOOST_CHECK(result[1] == KRecord(Datetime(200001040932), 1368.3, 1368.491, 1368.3, 1368.491, 2783200, 106916));
1463 BOOST_CHECK(result[682822] == KRecord(Datetime(201112061500), 2325.38, 2326.1, 2324.6, 2325.900, 5215150, 566312));
1467 result = stock.getKRecordList(0, total + 1, KQuery::MIN);
1468 BOOST_CHECK(result.size() == total);
1469 BOOST_CHECK(result[0] == KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158));
1470 BOOST_CHECK(result[1] == KRecord(Datetime(200001040932), 1368.3, 1368.491, 1368.3, 1368.491, 2783200, 106916));
1471 BOOST_CHECK(result[682822] == KRecord(Datetime(201112061500), 2325.38, 2326.1, 2324.6, 2325.900, 5215150, 566312));
1474 result = stock.getKRecordList(1, 10, KQuery::MIN);
1475 BOOST_CHECK(result.size() == 9);
1476 BOOST_CHECK(result[0] == KRecord(Datetime(200001040932), 1368.3, 1368.491, 1368.3, 1368.491, 2783200, 106916));
1477 BOOST_CHECK(result[1] == KRecord(Datetime(200001040933), 1368.859, 1369.474, 1368.859, 1369.308, 1060260, 37789));
1478 BOOST_CHECK(result[8] == KRecord(Datetime(200001040940), 1367.651, 1367.662, 1367.389, 1367.389, 1335200, 41924));
1481 result = stock.getKRecordList(0,0, KQuery::MIN);
1482 BOOST_CHECK(result.size() == 0);
1485 result = stock.getKRecordList(total, total, KQuery::MIN);
1486 BOOST_CHECK(result.size() == 0);
1489 result = stock.getKRecordList(2, 1, KQuery::MIN);
1490 BOOST_CHECK(result.size() == 0);
1493 result = stock.getKRecordList(0, 1, KQuery::MIN);
1494 BOOST_CHECK(result.size() == 1);
1495 BOOST_CHECK(result[0] == KRecord(Datetime(200001040931), 1366.58, 1368.692, 1366.579, 1368.692, 4124880, 191158));
1498 result = stock.getKRecordList(total - 1, total, KQuery::MIN);
1499 BOOST_CHECK(result.size() == 1);
1500 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2325.38, 2326.1, 2324.6, 2325.900, 5215150, 566312));
1503 result = stock.getKRecordList(total - 1, total + 1, KQuery::MIN);
1504 BOOST_CHECK(result.size() == 1);
1505 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2325.38, 2326.1, 2324.6, 2325.900, 5215150, 566312));
1512 total = stock.getCount(KQuery::MIN5);
1513 result = stock.getKRecordList(0, total, KQuery::MIN5);
1514 BOOST_CHECK(result.size() == total);
1515 BOOST_CHECK(result[0] == KRecord(Datetime(200001040935), 1366.58, 1369.68, 1366.579, 1369.187, 106611.5, 438171));
1516 BOOST_CHECK(result[1] == KRecord(Datetime(200001040940), 1369.187, 1369.371, 1367.389, 1367.389, 70687.3, 251473));
1517 BOOST_CHECK(result[133979] == KRecord(Datetime(201112061500), 2323.059, 2325.931, 2323.059, 2325.905, 176347.1, 1873675));
1521 result = stock.getKRecordList(0, total + 1, KQuery::MIN5);
1522 BOOST_CHECK(result.size() == total);
1523 BOOST_CHECK(result[0] == KRecord(Datetime(200001040935), 1366.58, 1369.68, 1366.579, 1369.187, 106611.5, 438171));
1524 BOOST_CHECK(result[1] == KRecord(Datetime(200001040940), 1369.187, 1369.371, 1367.389, 1367.389, 70687.3, 251473));
1525 BOOST_CHECK(result[133979] == KRecord(Datetime(201112061500), 2323.059, 2325.931, 2323.059, 2325.905, 176347.1, 1873675));
1528 result = stock.getKRecordList(1, 10, KQuery::MIN5);
1529 BOOST_CHECK(result.size() == 9);
1530 BOOST_CHECK(result[0] == KRecord(Datetime(200001040940), 1369.187, 1369.371, 1367.389, 1367.389, 70687.3, 251473));
1531 BOOST_CHECK(result[1] == KRecord(Datetime(200001040945), 1367.389, 1367.389, 1364.645, 1364.763, 73577.1, 223346));
1532 BOOST_CHECK(result[8] == KRecord(Datetime(200001041020), 1366.043, 1366.458, 1365.946, 1366.458, 111601.7, 205190));
1535 result = stock.getKRecordList(0,0, KQuery::MIN5);
1536 BOOST_CHECK(result.size() == 0);
1539 result = stock.getKRecordList(total, total, KQuery::MIN5);
1540 BOOST_CHECK(result.size() == 0);
1543 result = stock.getKRecordList(2, 1, KQuery::MIN5);
1544 BOOST_CHECK(result.size() == 0);
1547 result = stock.getKRecordList(0, 1, KQuery::MIN5);
1548 BOOST_CHECK(result.size() == 1);
1549 BOOST_CHECK(result[0] == KRecord(Datetime(200001040935), 1366.58, 1369.68, 1366.579, 1369.187, 106611.5, 438171));
1552 result = stock.getKRecordList(total - 1, total, KQuery::MIN5);
1553 BOOST_CHECK(result.size() == 1);
1554 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2323.059, 2325.931, 2323.059, 2325.905, 176347.1, 1873675));
1557 result = stock.getKRecordList(total - 1, total + 1, KQuery::MIN5);
1558 BOOST_CHECK(result.size() == 1);
1559 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2323.059, 2325.931, 2323.059, 2325.905, 176347.1, 1873675));
1565 total = stock.getCount(KQuery::MIN15);
1566 result = stock.getKRecordList(0, total, KQuery::MIN15);
1567 BOOST_CHECK(result.size() == total);
1568 BOOST_CHECK(result[0] == KRecord(Datetime(200001040945), 1366.58, 1369.68, 1364.645, 1364.763, 250875.9, 912990));
1569 BOOST_CHECK(result[1] == KRecord(Datetime(200001041000), 1364.763, 1364.763, 1361.459, 1361.459, 204277.1, 457452));
1570 BOOST_CHECK(result[44749] == KRecord(Datetime(201112061500), 2323.068, 2325.931, 2320.819, 2325.905, 402339.3, 4060591));
1574 result = stock.getKRecordList(0, total + 1, KQuery::MIN15);
1575 BOOST_CHECK(result.size() == total);
1576 BOOST_CHECK(result[0] == KRecord(Datetime(200001040945), 1366.58, 1369.68, 1364.645, 1364.763, 250875.9, 912990));
1577 BOOST_CHECK(result[1] == KRecord(Datetime(200001041000), 1364.763, 1364.763, 1361.459, 1361.459, 204277.1, 457452));
1578 BOOST_CHECK(result[44749] == KRecord(Datetime(201112061500), 2323.068, 2325.931, 2320.819, 2325.905, 402339.3, 4060591));
1581 result = stock.getKRecordList(1, 10, KQuery::MIN15);
1582 BOOST_CHECK(result.size() == 9);
1583 BOOST_CHECK(result[0] == KRecord(Datetime(200001041000), 1364.763, 1364.763, 1361.459, 1361.459, 204277.1, 457452));
1584 BOOST_CHECK(result[1] == KRecord(Datetime(200001041015), 1361.558, 1366.093, 1361.295, 1365.927, 307531.8, 548313));
1585 BOOST_CHECK(result[8] == KRecord(Datetime(200001041330), 1399.56, 1399.664, 1396.679, 1399.325, 407799.9, 554965));
1588 result = stock.getKRecordList(0,0, KQuery::MIN15);
1589 BOOST_CHECK(result.size() == 0);
1592 result = stock.getKRecordList(total, total, KQuery::MIN15);
1593 BOOST_CHECK(result.size() == 0);
1596 result = stock.getKRecordList(2, 1, KQuery::MIN15);
1597 BOOST_CHECK(result.size() == 0);
1600 result = stock.getKRecordList(0, 1, KQuery::MIN15);
1601 BOOST_CHECK(result.size() == 1);
1602 BOOST_CHECK(result[0] == KRecord(Datetime(200001040945), 1366.58, 1369.68, 1364.645, 1364.763, 250875.9, 912990));
1605 result = stock.getKRecordList(total - 1, total, KQuery::MIN15);
1606 BOOST_CHECK(result.size() == 1);
1607 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2323.068, 2325.931, 2320.819, 2325.905, 402339.3, 4060591));
1610 result = stock.getKRecordList(total - 1, total + 1, KQuery::MIN15);
1611 BOOST_CHECK(result.size() == 1);
1612 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2323.068, 2325.931, 2320.819, 2325.905, 402339.3, 4060591));
1619 total = stock.getCount(KQuery::MIN30);
1620 result = stock.getKRecordList(0, total, KQuery::MIN30);
1621 BOOST_CHECK(result.size() == total);
1622 BOOST_CHECK(result[0] == KRecord(Datetime(200001041000), 1366.58, 1369.68, 1361.459, 1361.459, 455153, 1370442));
1623 BOOST_CHECK(result[1] == KRecord(Datetime(200001041030), 1361.558, 1367.683, 1361.295, 1367.683, 586634.5, 1000294));
1624 BOOST_CHECK(result[22379] == KRecord(Datetime(201112061500), 2327.919, 2327.919, 2320.819, 2325.905, 660297.5, 6415054));
1628 result = stock.getKRecordList(0, total + 1, KQuery::MIN30);
1629 BOOST_CHECK(result.size() == total);
1630 BOOST_CHECK(result[0] == KRecord(Datetime(200001041000), 1366.58, 1369.68, 1361.459, 1361.459, 455153, 1370442));
1631 BOOST_CHECK(result[1] == KRecord(Datetime(200001041030), 1361.558, 1367.683, 1361.295, 1367.683, 586634.5, 1000294));
1632 BOOST_CHECK(result[22379] == KRecord(Datetime(201112061500), 2327.919, 2327.919, 2320.819, 2325.905, 660297.5, 6415054));
1635 result = stock.getKRecordList(1, 10, KQuery::MIN30);
1636 BOOST_CHECK(result.size() == 9);
1637 BOOST_CHECK(result[0] == KRecord(Datetime(200001041030), 1361.558, 1367.683, 1361.295, 1367.683, 586634.5, 1000294));
1638 BOOST_CHECK(result[1] == KRecord(Datetime(200001041100), 1367.667, 1378.543, 1367.6, 1377.098, 622250.5, 1248350));
1639 BOOST_CHECK(result[8] == KRecord(Datetime(200001051030), 1409.486, 1421.612, 1409.486, 1421.139, 1397089.8, 1777404));
1642 result = stock.getKRecordList(0,0, KQuery::MIN30);
1643 BOOST_CHECK(result.size() == 0);
1646 result = stock.getKRecordList(total, total, KQuery::MIN30);
1647 BOOST_CHECK(result.size() == 0);
1650 result = stock.getKRecordList(2, 1, KQuery::MIN30);
1651 BOOST_CHECK(result.size() == 0);
1654 result = stock.getKRecordList(0, 1, KQuery::MIN30);
1655 BOOST_CHECK(result.size() == 1);
1656 BOOST_CHECK(result[0] == KRecord(Datetime(200001041000), 1366.58, 1369.68, 1361.459, 1361.459, 455153, 1370442));
1659 result = stock.getKRecordList(total - 1, total, KQuery::MIN30);
1660 BOOST_CHECK(result.size() == 1);
1661 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2327.919, 2327.919, 2320.819, 2325.905, 660297.5, 6415054));
1664 result = stock.getKRecordList(total - 1, total + 1, KQuery::MIN30);
1665 BOOST_CHECK(result.size() == 1);
1666 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2327.919, 2327.919, 2320.819, 2325.905, 660297.5, 6415054));
1673 total = stock.getCount(KQuery::MIN60);
1674 result = stock.getKRecordList(0, total, KQuery::MIN60);
1675 BOOST_CHECK(result.size() == total);
1676 BOOST_CHECK(result[0] == KRecord(Datetime(200001041030), 1366.58, 1369.68, 1361.295, 1367.683, 1041787.5, 2370736));
1677 BOOST_CHECK(result[1] == KRecord(Datetime(200001041130), 1367.667, 1387.853, 1367.6, 1387.853, 1411191.4, 2172479));
1678 BOOST_CHECK(result[11192] == KRecord(Datetime(201112061500), 2326.036, 2331.378, 2320.819, 2325.905, 1332210, 11886356));
1682 result = stock.getKRecordList(0, total + 1, KQuery::MIN60);
1683 BOOST_CHECK(result.size() == total);
1684 BOOST_CHECK(result[0] == KRecord(Datetime(200001041030), 1366.58, 1369.68, 1361.295, 1367.683, 1041787.5, 2370736));
1685 BOOST_CHECK(result[1] == KRecord(Datetime(200001041130), 1367.667, 1387.853, 1367.6, 1387.853, 1411191.4, 2172479));
1686 BOOST_CHECK(result[11192] == KRecord(Datetime(201112061500), 2326.036, 2331.378, 2320.819, 2325.905, 1332210, 11886356));
1689 result = stock.getKRecordList(1, 10, KQuery::MIN60);
1690 BOOST_CHECK(result.size() == 9);
1691 BOOST_CHECK(result[0] == KRecord(Datetime(200001041130), 1367.667, 1387.853, 1367.6, 1387.853, 1411191.4, 2172479));
1692 BOOST_CHECK(result[1] == KRecord(Datetime(200001041400), 1389.996, 1403.996, 1389.97, 1400.685, 1740709.6, 2348753));
1693 BOOST_CHECK(result[8] == KRecord(Datetime(200001061130), 1420.098, 1420.098, 1410.706, 1411.387, 1291509.5, 1378193));
1696 result = stock.getKRecordList(0,0, KQuery::MIN60);
1697 BOOST_CHECK(result.size() == 0);
1700 result = stock.getKRecordList(total, total, KQuery::MIN60);
1701 BOOST_CHECK(result.size() == 0);
1704 result = stock.getKRecordList(2, 1, KQuery::MIN60);
1705 BOOST_CHECK(result.size() == 0);
1708 result = stock.getKRecordList(0, 1, KQuery::MIN60);
1709 BOOST_CHECK(result.size() == 1);
1710 BOOST_CHECK(result[0] == KRecord(Datetime(200001041030), 1366.58, 1369.68, 1361.295, 1367.683, 1041787.5, 2370736));
1713 result = stock.getKRecordList(total - 1, total, KQuery::MIN60);
1714 BOOST_CHECK(result.size() == 1);
1715 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2326.036, 2331.378, 2320.819, 2325.905, 1332210, 11886356));
1718 result = stock.getKRecordList(total - 1, total + 1, KQuery::MIN60);
1719 BOOST_CHECK(result.size() == 1);
1720 BOOST_CHECK(result[0] == KRecord(Datetime(201112061500), 2326.036, 2331.378, 2320.819, 2325.905, 1332210, 11886356));
1728 StockManager& sm = StockManager::instance();
1729 Stock stock = sm.getStock(
"sh000001");
1736 record = stock.getKRecordByDate(Datetime(199012180000), KQuery::DAY);
1737 BOOST_CHECK(record == Null<KRecord>());
1740 record = stock.getKRecordByDate(Datetime(199012190000), KQuery::DAY);
1741 BOOST_CHECK(record == KRecord(Datetime(199012190000), 96.0500, 99.9800, 95.7900, 99.9800, 49.4000, 1260.0000));
1744 record = stock.getKRecordByDate(Datetime(199502150000), KQuery::DAY);
1745 BOOST_CHECK(record == KRecord(Datetime(199502150000), 547.8300, 548.5900, 542.5000, 542.8400, 11889.3000, 232116.0000));
1748 record = stock.getKRecordByDate(Datetime(199502180000), KQuery::DAY);
1749 BOOST_CHECK(record == Null<KRecord>());
1752 record = stock.getKRecordByDate(Datetime(201112060000), KQuery::DAY);
1753 BOOST_CHECK(record == KRecord(Datetime(201112060000), 2326.6600, 2331.8920, 2310.1550, 2325.9050, 4262559.5000, 45917078.0000));
1756 record = stock.getKRecordByDate(Datetime(201112070000), KQuery::DAY);
1757 BOOST_CHECK(record == Null<KRecord>());
1764 record = stock.getKRecordByDate(Datetime(199012160000), KQuery::WEEK);
1765 BOOST_CHECK(record == Null<KRecord>());
1768 record = stock.getKRecordByDate(Datetime(199012210000), KQuery::WEEK);
1769 BOOST_CHECK(record == KRecord(Datetime(199012210000), 96.0500, 109.1300, 95.7900, 109.1300, 59.4000, 1485.0000));
1772 record = stock.getKRecordByDate(Datetime(199103290000), KQuery::WEEK);
1773 BOOST_CHECK(record == KRecord(Datetime(199103290000), 122.1200, 122.6200, 120.1100, 120.1900, 409.0000, 5421.0000));
1776 record = stock.getKRecordByDate(Datetime(199103120000), KQuery::WEEK);
1777 BOOST_CHECK(record == Null<KRecord>());
1780 record = stock.getKRecordByDate(Datetime(201112090000), KQuery::WEEK);
1781 BOOST_CHECK(record == KRecord(Datetime(201112090000), 2363.1110, 2363.1270, 2310.1550, 2325.9050, 9126681.1000, 98132048.0000));
1784 record = stock.getKRecordByDate(Datetime(201112100000), KQuery::WEEK);
1785 BOOST_CHECK(record == Null<KRecord>());
1792 record = stock.getKRecordByDate(Datetime(199011300000), KQuery::MONTH);
1793 BOOST_CHECK(record == Null<KRecord>());
1796 record = stock.getKRecordByDate(Datetime(199012310000), KQuery::MONTH);
1797 BOOST_CHECK(record == KRecord(Datetime(199012310000), 96.0500, 127.6100, 95.7900, 127.6100, 93.6000, 1884.0000));
1800 record = stock.getKRecordByDate(Datetime(199208310000), KQuery::MONTH);
1801 BOOST_CHECK(record == KRecord(Datetime(199208310000), 1034.7000, 1060.3600, 627.3600, 823.2700, 286256.7000, 2040679.0000));
1804 record = stock.getKRecordByDate(Datetime(199103120000), KQuery::MONTH);
1805 BOOST_CHECK(record == Null<KRecord>());
1808 record = stock.getKRecordByDate(Datetime(201112310000), KQuery::MONTH);
1809 BOOST_CHECK(record == KRecord(Datetime(201112310000), 2392.4850, 2423.5590, 2310.1550, 2325.9050, 24378748.5000, 256650941.0000));
1812 record = stock.getKRecordByDate(Datetime(201201010000), KQuery::MONTH);
1813 BOOST_CHECK(record == Null<KRecord>());
1820 record = stock.getKRecordByDate(Datetime(200001040944), KQuery::MIN15);
1821 BOOST_CHECK(record == Null<KRecord>());
1824 record = stock.getKRecordByDate(Datetime(200001040945), KQuery::MIN15);
1825 BOOST_CHECK(record == KRecord(Datetime(200001040945), 1366.5800, 1369.6800, 1364.6450, 1364.7630, 250875.9000, 912990.0000));
1828 record = stock.getKRecordByDate(Datetime(200001071045), KQuery::MIN15);
1829 BOOST_CHECK(record == KRecord(Datetime(200001071045), 1482.5210, 1490.0070, 1481.9910, 1485.2770, 1030800.2000, 1663302.0000));
1832 record = stock.getKRecordByDate(Datetime(200001071044), KQuery::MIN15);
1833 BOOST_CHECK(record == Null<KRecord>());
1836 record = stock.getKRecordByDate(Datetime(201112061500), KQuery::MIN15);
1837 BOOST_CHECK(record == KRecord(Datetime(201112061500), 2323.0680, 2325.9310, 2320.8190, 2325.9050, 402339.3000, 4060591.0000));
1840 record = stock.getKRecordByDate(Datetime(201112061501), KQuery::MIN15);
1841 BOOST_CHECK(record == Null<KRecord>());
1849 StockManager& sm = StockManager::instance();
1851 price_t result = 0.0;
1854 result = stock.getMarketValue(Datetime::now(), KQuery::DAY);
1855 BOOST_CHECK(result == 0.0);
1858 stock = sm.getStock(
"sh600000");
1859 result = stock.getMarketValue(Datetime::now(), KQuery::DAY);
1860 BOOST_CHECK(result == 8.73);
1862 result = stock.getMarketValue(Datetime(201112010000), KQuery::DAY);
1863 BOOST_CHECK(result == 8.81);
1865 result = stock.getMarketValue(Datetime(201112020000), KQuery::DAY);
1866 BOOST_CHECK(result == 8.80);
1868 result = stock.getMarketValue(Datetime(201112030000), KQuery::DAY);
1869 BOOST_CHECK(result == 8.80);
1871 result = stock.getMarketValue(Datetime(201112040000), KQuery::DAY);
1872 BOOST_CHECK(result == 8.80);
1874 result = stock.getMarketValue(Datetime(201112050000), KQuery::DAY);
1875 BOOST_CHECK(result == 8.80);
1877 result = stock.getMarketValue(Datetime(201112060000), KQuery::DAY);
1878 BOOST_CHECK(result == 8.73);
1881 result = stock.getMarketValue(Datetime::now(), KQuery::MIN5);
1882 BOOST_CHECK(result == 8.73);
1884 result = stock.getMarketValue(Datetime(201111211344), KQuery::MIN5);
1885 BOOST_CHECK(std::fabs(result - 8.70) < 0.001);
1887 result = stock.getMarketValue(Datetime(201111211345), KQuery::MIN5);
1888 BOOST_CHECK(result == 8.71);
1890 result = stock.getMarketValue(Datetime(201111211346), KQuery::MIN5);
1891 BOOST_CHECK(result == 8.71);
1893 result = stock.getMarketValue(Datetime(201111211350), KQuery::MIN5);
1894 BOOST_CHECK(std::fabs(result - 8.70) < 0.001);
1904 BOOST_CHECK(x1.id() == x2.id());
1907 StockManager& sm = StockManager::instance();
1908 x1 = sm.getStock(
"sh600001");
1909 x2 = sm.getStock(
"sh600001");
1910 BOOST_CHECK(x1.id() == x2.id());
1913 map<Stock, int> dict;
1914 Stock x3 = sm.getStock(
"sh600000");
1919 BOOST_CHECK(dict.count(x1) != 0);
1920 BOOST_CHECK(dict.count(x2) != 0);
1921 BOOST_CHECK(dict.count(x3) != 0);
1922 BOOST_CHECK(dict[x1] == 1);
1923 BOOST_CHECK(dict[x2] == 1);
1924 BOOST_CHECK(dict[Stock()] == 0);
1925 BOOST_CHECK(dict[x3] == 3);
1926 BOOST_CHECK(dict[x4] == 1);
BOOST_AUTO_TEST_CASE(test_Stock_Relational_comparison)