null+****@clear*****
null+****@clear*****
2011年 11月 15日 (火) 10:41:16 JST
Susumu Yata 2011-11-15 01:41:16 +0000 (Tue, 15 Nov 2011) New Revision: b5d83ec29217594dbbc38c773dea5cc4b57084d9 Log: add tests of grn_dat_get_key2(). Modified files: test/unit/core/dat/test-dat.cpp Modified: test/unit/core/dat/test-dat.cpp (+32 -5) =================================================================== --- test/unit/core/dat/test-dat.cpp 2011-11-15 01:15:35 +0000 (0f50c26) +++ test/unit/core/dat/test-dat.cpp 2011-11-15 01:41:16 +0000 (9abc2f3) @@ -212,12 +212,10 @@ namespace test_dat cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat)); } - void test_get_key2(void) + void test_get_key2_with_refer(void) { - cut_omit("Not implemented yet."); - grn_obj bulk; - GRN_OBJ_INIT(&bulk, 0, 0, 0); + GRN_OBJ_INIT(&bulk, 0, GRN_OBJ_REFER, 0); std::vector<std::string> keys; create_keys(&keys, 1000, 6, 15); @@ -232,7 +230,6 @@ namespace test_dat cut_assert_not_null(key_ptr); cppcut_assert_equal(length, static_cast<int>(key_length)); - bulk.header.impl_flags |= GRN_OBJ_REFER; cppcut_assert_equal(length, grn_dat_get_key2(&ctx, dat, key_id, &bulk)); cppcut_assert_equal(key_ptr, bulk.u.b.head); cppcut_assert_equal(length, static_cast<int>(bulk.u.b.curr - bulk.u.b.head)); @@ -243,6 +240,36 @@ namespace test_dat GRN_OBJ_FIN(&ctx, &bulk); } + void test_get_key2_with_outplace(void) + { + grn_obj bulk; + GRN_OBJ_INIT(&bulk, 0, GRN_OBJ_OUTPLACE, 0); + cppcut_assert_equal(GRN_SUCCESS, grn_bulk_reserve(&ctx, &bulk, 16)); + + std::vector<std::string> keys; + create_keys(&keys, 1000, 6, 15); + + grn_dat * const dat = create_trie(keys, NULL); + for (std::size_t i = 0; i < keys.size(); ++i) { + const grn_id key_id = static_cast<grn_id>(i + 1); + const int length = static_cast<int>(keys[i].length()); + + uint32_t key_length; + const char * const key_ptr = _grn_dat_key(&ctx, dat, key_id, &key_length); + cut_assert_not_null(key_ptr); + cppcut_assert_equal(length, static_cast<int>(key_length)); + + GRN_BULK_REWIND(&bulk); + cppcut_assert_equal(length, grn_dat_get_key2(&ctx, dat, key_id, &bulk)); + cppcut_assert_equal(keys[i], std::string(bulk.u.b.head, length)); + cppcut_assert_equal(length, static_cast<int>(bulk.u.b.curr - bulk.u.b.head)); + } + cppcut_assert_equal(0, grn_dat_get_key2(&ctx, dat, GRN_ID_NIL, &bulk)); + cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat)); + + GRN_OBJ_FIN(&ctx, &bulk); + } + void test_delete_by_id(void) { std::vector<std::string> keys;