susumu.yata
null+****@clear*****
Mon Dec 22 18:27:25 JST 2014
susumu.yata 2014-12-22 18:27:25 +0900 (Mon, 22 Dec 2014) New Revision: b37e243ef239968c208c3b710b98e3c7031498a5 https://github.com/groonga/grnxx/commit/b37e243ef239968c208c3b710b98e3c7031498a5 Message: Add a test for internal type conversion of Column<Int>. (#130) Modified files: test/test_column.cpp Modified: test/test_column.cpp (+80 -0) =================================================================== --- test/test_column.cpp 2014-12-22 18:14:03 +0900 (c039615) +++ test/test_column.cpp 2014-12-22 18:27:25 +0900 (9b14a81) @@ -199,6 +199,84 @@ void test_random_values() { } } +void test_internal_type_conversion() { + // Create a table and insert the first row. + auto db = grnxx::open_db(""); + auto table = db->create_table("Table"); + table->insert_row(); + table->insert_row(); + table->insert_row(); + table->insert_row(); + + auto column = table->create_column("Column", grnxx::INT_DATA); + + // Set the first 8-bit integer. + column->set(grnxx::Int(0), grnxx::Int(int64_t(1) << 0)); + grnxx::Datum datum; + column->get(grnxx::Int(0), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 0)); + + // Conversion from 8-bit to 16-bit. + column->set(grnxx::Int(1), grnxx::Int(int64_t(1) << 8)); + column->get(grnxx::Int(0), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 0)); + column->get(grnxx::Int(1), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 8)); + + // Conversion from 16-bit to 32-bit. + column->set(grnxx::Int(2), grnxx::Int(int64_t(1) << 16)); + column->get(grnxx::Int(0), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 0)); + column->get(grnxx::Int(1), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 8)); + column->get(grnxx::Int(2), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 16)); + + // Conversion from 32-bit to 64-bit. + column->set(grnxx::Int(3), grnxx::Int(int64_t(1) << 32)); + column->get(grnxx::Int(0), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 0)); + column->get(grnxx::Int(1), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 8)); + column->get(grnxx::Int(2), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 16)); + column->get(grnxx::Int(3), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 32)); + + table->remove_column("Column"); + column = table->create_column("Column", grnxx::INT_DATA); + + // Conversion from 8-bit to 32-bit. + column->set(grnxx::Int(0), grnxx::Int(int64_t(1) << 0)); + column->set(grnxx::Int(1), grnxx::Int(int64_t(1) << 16)); + column->get(grnxx::Int(0), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 0)); + column->get(grnxx::Int(1), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 16)); + + table->remove_column("Column"); + column = table->create_column("Column", grnxx::INT_DATA); + + // Conversion from 8-bit to 64-bit. + column->set(grnxx::Int(0), grnxx::Int(int64_t(1) << 0)); + column->set(grnxx::Int(1), grnxx::Int(int64_t(1) << 32)); + column->get(grnxx::Int(0), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 0)); + column->get(grnxx::Int(1), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 32)); + + table->remove_column("Column"); + column = table->create_column("Column", grnxx::INT_DATA); + + // Conversion from 16-bit to 64-bit. + column->set(grnxx::Int(0), grnxx::Int(int64_t(1) << 8)); + column->set(grnxx::Int(1), grnxx::Int(int64_t(1) << 32)); + column->get(grnxx::Int(0), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 8)); + column->get(grnxx::Int(1), &datum); + assert(datum.as_int().raw() == (int64_t(1) << 32)); +} + int main() { test_basic_operations(); @@ -208,5 +286,7 @@ int main() { test_random_values<grnxx::GeoPoint>(); test_random_values<grnxx::Text>(); + test_internal_type_conversion(); + return 0; } -------------- next part -------------- HTML����������������������������...Download