22 #include <glib/gstdio.h>
23 #include <cppcutter.h>
37 void create_key(std::string *key, std::size_t min_length,
38 std::size_t max_length)
40 key->resize(min_length + (std::rand() % (max_length - min_length + 1)));
41 for (std::size_t
i = 0;
i < key->size(); ++
i) {
42 (*key)[
i] =
'0' + (std::rand() % 10);
46 void create_keys(std::vector<std::string> *keys, std::size_t num_keys,
47 std::size_t min_length, std::size_t max_length)
50 std::set<std::string> keyset;
51 while (keyset.size() < num_keys) {
52 create_key(&key, min_length, max_length);
55 std::vector<std::string>(keyset.begin(), keyset.end()).swap(*keys);
56 std::random_shuffle(keys->begin(), keys->end());
60 namespace test_dat_cursor
66 std::srand(static_cast<unsigned int>(std::time(NULL)));
79 cppcut_assert_not_null(dat);
80 for (std::size_t
i = 0;
i < keys.size(); ++
i) {
81 const char *
const ptr = keys[
i].c_str();
82 const uint32_t length =
static_cast<uint32_t
>(keys[
i].length());
83 cppcut_assert_equal(static_cast<grn_id>(
i + 1),
92 cppcut_assert_not_null(dat);
95 cppcut_assert_not_null(cursor);
99 std::vector<std::string> keys;
100 create_keys(&keys, 100, 3, 5);
104 cppcut_assert_not_null(cursor);
111 std::vector<std::string> keys;
112 create_keys(&keys, 1000, 3, 5);
117 cppcut_assert_not_null(cursor);
118 for (std::size_t
i = 1;
i <= keys.size(); ++
i) {
119 cppcut_assert_equal(static_cast<grn_id>(
i),
122 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
131 std::vector<std::string> keys;
132 create_keys(&keys, 1000, 3, 5);
137 cppcut_assert_not_null(cursor);
138 for (std::size_t
i = 0;
i < keys.size(); ++
i) {
140 const int length =
static_cast<int>(keys[
i].length());
143 cppcut_assert_equal(length,
146 cppcut_assert_equal(
_grn_dat_key(&ctx, dat, key_id, &key_length),
147 static_cast<const char *>(key_ptr));
149 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
158 std::vector<std::string> keys;
159 create_keys(&keys, 1000, 3, 5);
164 cppcut_assert_not_null(cursor);
165 for (std::size_t
i = 1;
i <= keys.size(); ++
i) {
166 cppcut_assert_equal(static_cast<grn_id>(
i),
173 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
179 cppcut_assert_not_null(cursor);
180 for (std::size_t
i = 1;
i <= (keys.size() / 2); ++
i) {
181 cppcut_assert_equal(static_cast<grn_id>(
i * 2),
184 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
193 std::vector<std::string> keys;
194 keys.push_back(
"mandarin");
195 keys.push_back(
"grapefruit");
196 keys.push_back(
"orange");
197 keys.push_back(
"citron");
202 cppcut_assert_not_null(cursor);
203 cppcut_assert_equal(static_cast<grn_id>(1),
205 cppcut_assert_equal(static_cast<grn_id>(2),
207 cppcut_assert_equal(static_cast<grn_id>(3),
209 cppcut_assert_equal(static_cast<grn_id>(4),
211 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
217 cppcut_assert_not_null(cursor);
218 cppcut_assert_equal(static_cast<grn_id>(3),
220 cppcut_assert_equal(static_cast<grn_id>(4),
222 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
228 cppcut_assert_not_null(cursor);
229 cppcut_assert_equal(static_cast<grn_id>(1),
231 cppcut_assert_equal(static_cast<grn_id>(2),
233 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
239 cppcut_assert_not_null(cursor);
240 cppcut_assert_equal(static_cast<grn_id>(2),
242 cppcut_assert_equal(static_cast<grn_id>(3),
244 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
250 cppcut_assert_not_null(cursor);
251 cppcut_assert_equal(static_cast<grn_id>(2),
253 cppcut_assert_equal(static_cast<grn_id>(3),
255 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
261 cppcut_assert_not_null(cursor);
262 cppcut_assert_equal(static_cast<grn_id>(3),
264 cppcut_assert_equal(static_cast<grn_id>(2),
266 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
271 keys[2].c_str(), keys[2].length(),
273 cppcut_assert_not_null(cursor);
274 cppcut_assert_equal(static_cast<grn_id>(2),
276 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
281 keys[2].c_str(), keys[2].length(),
283 cppcut_assert_not_null(cursor);
284 cppcut_assert_equal(static_cast<grn_id>(3),
286 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
295 std::vector<std::string> keys;
296 keys.push_back(
"mandarin");
297 keys.push_back(
"grapefruit");
298 keys.push_back(
"orange");
299 keys.push_back(
"citron");
304 cppcut_assert_not_null(cursor);
305 cppcut_assert_equal(static_cast<grn_id>(4),
307 cppcut_assert_equal(static_cast<grn_id>(2),
309 cppcut_assert_equal(static_cast<grn_id>(1),
311 cppcut_assert_equal(static_cast<grn_id>(3),
313 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
319 cppcut_assert_not_null(cursor);
320 cppcut_assert_equal(static_cast<grn_id>(1),
322 cppcut_assert_equal(static_cast<grn_id>(3),
324 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
330 cppcut_assert_not_null(cursor);
331 cppcut_assert_equal(static_cast<grn_id>(4),
333 cppcut_assert_equal(static_cast<grn_id>(2),
335 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
341 cppcut_assert_not_null(cursor);
342 cppcut_assert_equal(static_cast<grn_id>(2),
344 cppcut_assert_equal(static_cast<grn_id>(1),
346 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
352 cppcut_assert_not_null(cursor);
353 cppcut_assert_equal(static_cast<grn_id>(2),
355 cppcut_assert_equal(static_cast<grn_id>(1),
357 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
363 cppcut_assert_not_null(cursor);
364 cppcut_assert_equal(static_cast<grn_id>(1),
366 cppcut_assert_equal(static_cast<grn_id>(2),
368 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
373 keys[0].c_str(), keys[0].length(),
375 cppcut_assert_not_null(cursor);
376 cppcut_assert_equal(static_cast<grn_id>(2),
378 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
383 keys[0].c_str(), keys[0].length(),
385 cppcut_assert_not_null(cursor);
386 cppcut_assert_equal(static_cast<grn_id>(1),
388 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
397 std::vector<std::string> keys;
398 keys.push_back(
"minimum");
399 keys.push_back(
"mind");
400 keys.push_back(
"minute");
401 keys.push_back(
"mild");
406 cut_assert_null(cursor);
410 cut_assert_null(cursor);
414 cppcut_assert_not_null(cursor);
415 cppcut_assert_equal(static_cast<grn_id>(4),
417 cppcut_assert_equal(static_cast<grn_id>(2),
419 cppcut_assert_equal(static_cast<grn_id>(1),
421 cppcut_assert_equal(static_cast<grn_id>(3),
423 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
429 cppcut_assert_not_null(cursor);
430 cppcut_assert_equal(static_cast<grn_id>(2),
432 cppcut_assert_equal(static_cast<grn_id>(1),
434 cppcut_assert_equal(static_cast<grn_id>(3),
436 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
442 cppcut_assert_not_null(cursor);
443 cppcut_assert_equal(static_cast<grn_id>(2),
445 cppcut_assert_equal(static_cast<grn_id>(1),
447 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
453 cppcut_assert_not_null(cursor);
454 cppcut_assert_equal(static_cast<grn_id>(2),
456 cppcut_assert_equal(static_cast<grn_id>(1),
458 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
464 cppcut_assert_not_null(cursor);
465 cppcut_assert_equal(static_cast<grn_id>(1),
467 cppcut_assert_equal(static_cast<grn_id>(2),
469 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
475 cppcut_assert_not_null(cursor);
476 cppcut_assert_equal(static_cast<grn_id>(2),
478 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
484 cppcut_assert_not_null(cursor);
485 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
494 std::vector<std::string> keys;
495 keys.push_back(
"not");
496 keys.push_back(
"no");
497 keys.push_back(
"note");
498 keys.push_back(
"nice");
503 cut_assert_null(cursor);
507 cut_assert_null(cursor);
511 cppcut_assert_not_null(cursor);
512 cppcut_assert_equal(static_cast<grn_id>(3),
514 cppcut_assert_equal(static_cast<grn_id>(1),
516 cppcut_assert_equal(static_cast<grn_id>(2),
518 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
524 cppcut_assert_not_null(cursor);
525 cppcut_assert_equal(static_cast<grn_id>(1),
527 cppcut_assert_equal(static_cast<grn_id>(2),
529 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
535 cppcut_assert_not_null(cursor);
536 cppcut_assert_equal(static_cast<grn_id>(3),
538 cppcut_assert_equal(static_cast<grn_id>(1),
540 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
546 cppcut_assert_not_null(cursor);
547 cppcut_assert_equal(static_cast<grn_id>(3),
549 cppcut_assert_equal(static_cast<grn_id>(1),
551 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
557 cppcut_assert_not_null(cursor);
558 cppcut_assert_equal(static_cast<grn_id>(1),
560 cppcut_assert_equal(static_cast<grn_id>(2),
562 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
568 cppcut_assert_not_null(cursor);
569 cppcut_assert_equal(static_cast<grn_id>(3),
571 cppcut_assert_equal(static_cast<grn_id>(1),
573 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
579 cppcut_assert_not_null(cursor);
580 cppcut_assert_equal(static_cast<grn_id>(3),
582 cppcut_assert_equal(static_cast<grn_id>(1),
584 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
590 cppcut_assert_not_null(cursor);
591 cppcut_assert_equal(static_cast<grn_id>(3),
593 cppcut_assert_equal(static_cast<grn_id>(1),
595 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
601 cppcut_assert_not_null(cursor);
602 cppcut_assert_equal(static_cast<grn_id>(3),
604 cppcut_assert_equal(static_cast<grn_id>(1),
606 cppcut_assert_equal(static_cast<grn_id>(2),
608 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),
614 cppcut_assert_not_null(cursor);
615 cppcut_assert_equal(static_cast<grn_id>(3),
617 cppcut_assert_equal(static_cast<grn_id>(1),
619 cppcut_assert_equal(static_cast<grn_id>(2),
621 cppcut_assert_equal(static_cast<grn_id>(
GRN_ID_NIL),