[Groonga-commit] groonga/grnxx at 0564870 [new_data_types] Enable a test for ConstantNode of Expression. (#104)

Back to archive index

susumu.yata null+****@clear*****
Wed Nov 12 18:55:09 JST 2014


susumu.yata	2014-11-12 18:55:09 +0900 (Wed, 12 Nov 2014)

  New Revision: 05648703e31f440b4e26879408024c14923451b2
  https://github.com/groonga/grnxx/commit/05648703e31f440b4e26879408024c14923451b2

  Message:
    Enable a test for ConstantNode of Expression. (#104)

  Modified files:
    test/test_expression.cpp

  Modified: test/test_expression.cpp (+75 -71)
===================================================================
--- test/test_expression.cpp    2014-11-12 18:54:27 +0900 (2f389f1)
+++ test/test_expression.cpp    2014-11-12 18:55:09 +0900 (deb637c)
@@ -78,7 +78,7 @@ struct {
 //  }
 //}
 
-void init_test() {
+void init_test() try {
   // Create a database with the default options.
   test.db = grnxx::open_db("");
 
@@ -377,9 +377,12 @@ void init_test() {
 //    assert(ref_vector_column->set(&error, i, test.ref_vector_values[i]));
 //    assert(ref_vector2_column->set(&error, i, test.ref_vector2_values[i]));
 //  }
+} catch (const char *msg) {
+  std::cout << msg << std::endl;
+  throw;
 }
 
-grnxx::Array<grnxx::Record> create_input_records() {
+grnxx::Array<grnxx::Record> create_input_records() try {
   auto cursor = test.table->create_cursor();
 
   grnxx::Array<grnxx::Record> records;
@@ -387,90 +390,86 @@ grnxx::Array<grnxx::Record> create_input_records() {
   assert(count == test.table->num_rows());
 
   return records;
+} catch (const char *msg) {
+  std::cout << msg << std::endl;
+  throw;
 }
 
-//void test_constant() {
-//  grnxx::Error error;
+void test_constant() try {
+  // Create an object for building expressions.
+  auto builder = grnxx::ExpressionBuilder::create(test.table);
 
-//  // Create an object for building expressions.
-//  auto builder = grnxx::ExpressionBuilder::create(&error, test.table);
-//  assert(builder);
+  // Test an expression (true).
+  builder->push_constant(grnxx::Bool(true));
+  auto expression = builder->release();
 
-//  // Test an expression (true).
-//  assert(builder->push_constant(&error, grnxx::Bool(true)));
-//  auto expression = builder->release(&error);
-//  assert(expression);
+  auto records = create_input_records();
 
-//  auto records = create_input_records();
+  grnxx::Array<grnxx::Bool> bool_results;
+  expression->evaluate(records, &bool_results);
+  assert(bool_results.size() == test.table->num_rows());
+  for (size_t i = 0; i < bool_results.size(); ++i) {
+    assert(bool_results[i]);
+  }
 
-//  grnxx::Array<grnxx::Bool> bool_results;
-//  assert(expression->evaluate(&error, records, &bool_results));
-//  assert(bool_results.size() == test.table->num_rows());
-//  for (grnxx::Int i = 0; i < bool_results.size(); ++i) {
-//    assert(bool_results[i]);
-//  }
+  expression->filter(&records);
+  assert(records.size() == test.table->num_rows());
 
-//  assert(expression->filter(&error, &records));
-//  assert(records.size() == test.table->num_rows());
+  // Test an expression (false).
+  builder->push_constant(grnxx::Bool(false));
+  expression = builder->release();
 
-//  // Test an expression (false).
-//  assert(builder->push_constant(&error, grnxx::Bool(false)));
-//  expression = builder->release(&error);
-//  assert(expression);
+  bool_results.clear();
+  expression->evaluate(records, &bool_results);
+  assert(bool_results.size() == test.table->num_rows());
+  for (size_t i = 0; i < bool_results.size(); ++i) {
+    assert(!bool_results[i]);
+  }
 
-//  bool_results.clear();
-//  assert(expression->evaluate(&error, records, &bool_results));
-//  assert(bool_results.size() == test.table->num_rows());
-//  for (grnxx::Int i = 0; i < bool_results.size(); ++i) {
-//    assert(!bool_results[i]);
-//  }
+  expression->filter(&records);
+  assert(records.size() == 0);
 
-//  assert(expression->filter(&error, &records));
-//  assert(records.size() == 0);
+  // Test an expression (100).
+  builder->push_constant(grnxx::Int(100));
+  expression = builder->release();
 
-//  // Test an expression (100).
-//  assert(builder->push_constant(&error, grnxx::Int(100)));
-//  expression = builder->release(&error);
-//  assert(expression);
+  records = create_input_records();
 
-//  records = create_input_records();
-
-//  grnxx::Array<grnxx::Int> int_results;
-//  assert(expression->evaluate(&error, records, &int_results));
-//  assert(int_results.size() == test.table->num_rows());
-//  for (grnxx::Int i = 0; i < int_results.size(); ++i) {
-//    assert(int_results[i] == 100);
-//  }
+  grnxx::Array<grnxx::Int> int_results;
+  expression->evaluate(records, &int_results);
+  assert(int_results.size() == test.table->num_rows());
+  for (size_t i = 0; i < int_results.size(); ++i) {
+    assert(int_results[i] == grnxx::Int(100));
+  }
 
-//  // Test an expression (1.25).
-//  assert(builder->push_constant(&error, grnxx::Float(1.25)));
-//  expression = builder->release(&error);
-//  assert(expression);
+  // Test an expression (1.25).
+  builder->push_constant(grnxx::Float(1.25));
+  expression = builder->release();
 
-//  grnxx::Array<grnxx::Float> float_results;
-//  assert(expression->evaluate(&error, records, &float_results));
-//  assert(float_results.size() == test.table->num_rows());
-//  for (grnxx::Int i = 0; i < float_results.size(); ++i) {
-//    assert(float_results[i] == 1.25);
-//  }
+  grnxx::Array<grnxx::Float> float_results;
+  expression->evaluate(records, &float_results);
+  assert(float_results.size() == test.table->num_rows());
+  for (size_t i = 0; i < float_results.size(); ++i) {
+    assert(float_results[i] == grnxx::Float(1.25));
+  }
 
-//  assert(expression->adjust(&error, &records));
-//  assert(records.size() == test.table->num_rows());
-//  for (grnxx::Int i = 0; i < records.size(); ++i) {
-//    assert(records.get_score(i) == 1.25);
-//  }
+  expression->adjust(&records);
+  assert(records.size() == test.table->num_rows());
+  for (size_t i = 0; i < records.size(); ++i) {
+    assert(records[i].score == grnxx::Float(1.25));
+  }
 
-//  // Test an expression ({ 123, 456 }).
-//  assert(builder->push_constant(&error, grnxx::GeoPoint(123, 456)));
-//  expression = builder->release(&error);
-//  assert(expression);
+  // Test an expression ({ 123, 456 }).
+  grnxx::GeoPoint geo_point(grnxx::Int(123), grnxx::Int(456));
+  builder->push_constant(geo_point);
+  expression = builder->release();
 
-//  grnxx::Array<grnxx::GeoPoint> geo_point_results;
-//  assert(expression->evaluate(&error, records, &geo_point_results));
-//  assert(geo_point_results.size() == test.table->num_rows());
-//  for (grnxx::Int i = 0; i < geo_point_results.size(); ++i) {
-//    assert(geo_point_results[i] == grnxx::GeoPoint(123, 456));
-//  }
+  grnxx::Array<grnxx::GeoPoint> geo_point_results;
+  expression->evaluate(records, &geo_point_results);
+  assert(geo_point_results.size() == test.table->num_rows());
+  for (size_t i = 0; i < geo_point_results.size(); ++i) {
+    assert(geo_point_results[i] == geo_point);
+  }
 
 //  // Test an expression ("ABC").
 //  assert(builder->push_constant(&error, grnxx::Text("ABC")));
@@ -553,7 +552,10 @@ grnxx::Array<grnxx::Record> create_input_records() {
 //  for (grnxx::Int i = 0; i < text_vector_results.size(); ++i) {
 //    assert(text_vector_results[i] == grnxx::TextVector(text_values, 3));
 //  }
-//}
+} catch (const char *msg) {
+  std::cout << msg << std::endl;
+  throw;
+}
 
 void test_row_id() try {
   // Create an object for building expressions.
@@ -572,6 +574,7 @@ void test_row_id() try {
   }
 } catch (const char *msg) {
   std::cout << msg << std::endl;
+  throw;
 }
 
 void test_score() try {
@@ -598,6 +601,7 @@ void test_score() try {
   }
 } catch (const char *msg) {
   std::cout << msg << std::endl;
+  throw;
 }
 
 //void test_column() {
@@ -3018,7 +3022,7 @@ int main() {
   init_test();
 
   // Data.
-//  test_constant();
+  test_constant();
   test_row_id();
 //  test_score();
 //  test_column();
-------------- next part --------------
HTML����������������������������...
다운로드 



More information about the Groonga-commit mailing list
Back to archive index