susumu.yata
null+****@clear*****
Tue May 21 13:05:27 JST 2013
susumu.yata 2013-05-21 13:05:27 +0900 (Tue, 21 May 2013) New Revision: 02ee53eacdea1fad4e360eda73e48eb361885e22 https://github.com/groonga/grnxx/commit/02ee53eacdea1fad4e360eda73e48eb361885e22 Message: Add a test for grnxx::Array::get_value(). Modified files: test/test_array.cpp Modified: test/test_array.cpp (+32 -123) =================================================================== --- test/test_array.cpp 2013-05-21 13:04:56 +0900 (9038969) +++ test/test_array.cpp 2013-05-21 13:05:27 +0900 (66b2061) @@ -24,204 +24,113 @@ namespace { -void test_array1d() { - constexpr std::uint64_t PAGE_SIZE = 64; - constexpr std::uint64_t SIZE = PAGE_SIZE; - - GRNXX_NOTICE() << __PRETTY_FUNCTION__; - - std::unique_ptr<grnxx::Storage> storage(grnxx::Storage::create(nullptr)); - grnxx::Array<int, PAGE_SIZE, 1, 1> array; - uint32_t storage_node_id; - - assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID)); - assert(array); - assert(array.page_size() == PAGE_SIZE); - assert(array.table_size() == 1); - assert(array.secondary_table_size() == 1); - assert(array.size() == SIZE); - storage_node_id = array.storage_node_id(); - - for (std::uint64_t i = 0; i < SIZE; ++i) { - assert(array.set(i, static_cast<int>(i))); - } - for (std::uint64_t i = 0; i < SIZE; ++i) { - int value; - assert(array.get(i, &value)); - assert(value == static_cast<int>(i)); - } - for (std::uint64_t i = 0; i < (SIZE / PAGE_SIZE); ++i) { - assert(array.get_page(i)); - } - - assert(array.open(storage.get(), storage_node_id)); - for (std::uint64_t i = 0; i < SIZE; ++i) { - int value; - assert(array.get(i, &value)); - assert(value == static_cast<int>(i)); - } - - assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID, 1)); - assert(array); - for (std::uint64_t i = 0; i < SIZE; ++i) { - assert(array[i] == 1); - array[i] = static_cast<int>(i); - } - for (std::uint64_t i = 0; i < SIZE; ++i) { - assert(array[i] == static_cast<int>(i)); - } -} - -void test_array2d() { - constexpr std::uint64_t PAGE_SIZE = 64; - constexpr std::uint64_t TABLE_SIZE = 32; - constexpr std::uint64_t SIZE = PAGE_SIZE * TABLE_SIZE; - - GRNXX_NOTICE() << __PRETTY_FUNCTION__; - - std::unique_ptr<grnxx::Storage> storage(grnxx::Storage::create(nullptr)); - grnxx::Array<int, PAGE_SIZE, TABLE_SIZE, 1> array; - uint32_t storage_node_id; - - assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID)); - assert(array); - assert(array.page_size() == PAGE_SIZE); - assert(array.table_size() == TABLE_SIZE); - assert(array.secondary_table_size() == 1); - assert(array.size() == SIZE); - storage_node_id = array.storage_node_id(); - - for (std::uint64_t i = 0; i < SIZE; ++i) { - assert(array.set(i, static_cast<int>(i))); - } - for (std::uint64_t i = 0; i < SIZE; ++i) { - int value; - assert(array.get(i, &value)); - assert(value == static_cast<int>(i)); - } - for (std::uint64_t i = 0; i < (SIZE / PAGE_SIZE); ++i) { - assert(array.get_page(i)); - } - - assert(array.open(storage.get(), storage_node_id)); - for (std::uint64_t i = 0; i < SIZE; ++i) { - int value; - assert(array.get(i, &value)); - assert(value == static_cast<int>(i)); - } - - assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID, 1)); - assert(array); - for (std::uint64_t i = 0; i < SIZE; ++i) { - assert(array[i] == 1); - array[i] = static_cast<int>(i); - } - for (std::uint64_t i = 0; i < SIZE; ++i) { - assert(array[i] == static_cast<int>(i)); - } -} - -void test_array3d() { - constexpr std::uint64_t PAGE_SIZE = 64; - constexpr std::uint64_t TABLE_SIZE = 32; - constexpr std::uint64_t SECONDARY_TABLE_SIZE = 16; - constexpr std::uint64_t SIZE = - PAGE_SIZE * TABLE_SIZE * SECONDARY_TABLE_SIZE; - +template <std::uint64_t PAGE_SIZE, + std::uint64_t TABLE_SIZE, + std::uint64_t SECONDARY_TABLE_SIZE> +void test_array() { GRNXX_NOTICE() << __PRETTY_FUNCTION__; + // Create an anonymous Storage. std::unique_ptr<grnxx::Storage> storage(grnxx::Storage::create(nullptr)); grnxx::Array<int, PAGE_SIZE, TABLE_SIZE, SECONDARY_TABLE_SIZE> array; uint32_t storage_node_id; + // Create an Array and test its member functions. assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID)); assert(array); assert(array.page_size() == PAGE_SIZE); assert(array.table_size() == TABLE_SIZE); assert(array.secondary_table_size() == SECONDARY_TABLE_SIZE); - assert(array.size() == SIZE); + assert(array.size() == (PAGE_SIZE * TABLE_SIZE * SECONDARY_TABLE_SIZE)); storage_node_id = array.storage_node_id(); - for (std::uint64_t i = 0; i < SIZE; ++i) { + for (std::uint64_t i = 0; i < array.size(); ++i) { assert(array.set(i, static_cast<int>(i))); } - for (std::uint64_t i = 0; i < SIZE; ++i) { + for (std::uint64_t i = 0; i < array.size(); ++i) { int value; assert(array.get(i, &value)); assert(value == static_cast<int>(i)); } - for (std::uint64_t i = 0; i < (SIZE / PAGE_SIZE); ++i) { + for (std::uint64_t i = 0; i < (array.size() / array.page_size()); ++i) { assert(array.get_page(i)); } + // Open the Array. assert(array.open(storage.get(), storage_node_id)); - for (std::uint64_t i = 0; i < SIZE; ++i) { + for (std::uint64_t i = 0; i < array.size(); ++i) { int value; assert(array.get(i, &value)); assert(value == static_cast<int>(i)); } + // Create an Array with default value. assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID, 1)); assert(array); - for (std::uint64_t i = 0; i < SIZE; ++i) { + for (std::uint64_t i = 0; i < array.size(); ++i) { assert(array[i] == 1); array[i] = static_cast<int>(i); } - for (std::uint64_t i = 0; i < SIZE; ++i) { + for (std::uint64_t i = 0; i < array.size(); ++i) { assert(array[i] == static_cast<int>(i)); } + for (std::uint64_t i = 0; i < array.size(); ++i) { + assert(&array[i] == array.get_value(i)); + } } void test_bit_array() { constexpr std::uint64_t PAGE_SIZE = 64; constexpr std::uint64_t TABLE_SIZE = 32; constexpr std::uint64_t SECONDARY_TABLE_SIZE = 16; - constexpr std::uint64_t SIZE = - PAGE_SIZE * TABLE_SIZE * SECONDARY_TABLE_SIZE; GRNXX_NOTICE() << __PRETTY_FUNCTION__; + // Create an anonymous Storage. std::unique_ptr<grnxx::Storage> storage(grnxx::Storage::create(nullptr)); grnxx::Array<bool, PAGE_SIZE, TABLE_SIZE, SECONDARY_TABLE_SIZE> array; uint32_t storage_node_id; + // Create an Array and test its member functions. assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID)); assert(array); assert(array.page_size() == PAGE_SIZE); assert(array.table_size() == TABLE_SIZE); assert(array.secondary_table_size() == SECONDARY_TABLE_SIZE); - assert(array.size() == SIZE); + assert(array.size() == (PAGE_SIZE * TABLE_SIZE * SECONDARY_TABLE_SIZE)); storage_node_id = array.storage_node_id(); - for (std::uint64_t i = 0; i < SIZE; ++i) { + for (std::uint64_t i = 0; i < array.size(); ++i) { const bool value = (i % 3) != 0; assert(array.set(i, value)); } - for (std::uint64_t i = 0; i < SIZE; ++i) { + for (std::uint64_t i = 0; i < array.size(); ++i) { const bool expected_value = (i % 3) != 0; bool value; assert(array.get(i, &value)); assert(value == expected_value); } - for (std::uint64_t i = 0; i < SIZE; ++i) { + for (std::uint64_t i = 0; i < array.size(); ++i) { const bool expected_value = (i % 3) != 0; assert(array[i] == expected_value); } - for (std::uint64_t i = 0; i < (SIZE / PAGE_SIZE); ++i) { + for (std::uint64_t i = 0; i < (array.size() / array.page_size()); ++i) { assert(array.get_page(i)); } + // Open the Array. assert(array.open(storage.get(), storage_node_id)); - for (std::uint64_t i = 0; i < SIZE; ++i) { + for (std::uint64_t i = 0; i < array.size(); ++i) { const bool expected_value = (i % 3) != 0; bool value; assert(array.get(i, &value)); assert(value == expected_value); } + // Create an Array with default value. assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID, true)); assert(array); - for (std::uint64_t i = 0; i < SIZE; ++i) { + for (std::uint64_t i = 0; i < array.size(); ++i) { assert(array[i]); } } @@ -233,9 +142,9 @@ int main() { grnxx::LOGGER_ENABLE_COUT); grnxx::Logger::set_max_level(grnxx::NOTICE_LOGGER); - test_array1d(); - test_array2d(); - test_array3d(); + test_array<64, 1, 1>(); + test_array<64, 32, 1>(); + test_array<64, 32, 16>(); test_bit_array(); return 0; -------------- next part -------------- HTML����������������������������... 下载