[Groonga-commit] groonga/grnxx at b37e243 [master] Add a test for internal type conversion of Column<Int>. (#130)

Zurück zum Archiv-Index

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 



More information about the Groonga-commit mailing list
Zurück zum Archiv-Index