[Groonga-commit] groonga/grnxx at c95160a [new_data_types] Enable tests for LOGICAL_AND/OR. (#106)

Back to archive index

susumu.yata null+****@clear*****
Thu Nov 13 20:01:30 JST 2014


susumu.yata	2014-11-13 20:01:30 +0900 (Thu, 13 Nov 2014)

  New Revision: c95160a153f46f89c3e8ba0a0d199ff43bc6a415
  https://github.com/groonga/grnxx/commit/c95160a153f46f89c3e8ba0a0d199ff43bc6a415

  Message:
    Enable tests for LOGICAL_AND/OR. (#106)

  Modified files:
    test/test_expression.cpp

  Modified: test/test_expression.cpp (+57 -65)
===================================================================
--- test/test_expression.cpp    2014-11-13 20:00:45 +0900 (4e9f567)
+++ test/test_expression.cpp    2014-11-13 20:01:30 +0900 (30cbb08)
@@ -1004,77 +1004,69 @@ void test_to_float() {
   }
 }
 
-//void test_logical_and() {
-//  grnxx::Error error;
-
-//  // Create an object for building expressions.
-//  auto builder = grnxx::ExpressionBuilder::create(&error, test.table);
-//  assert(builder);
-
-//  // Test an expression (Bool && Bool2).
-//  assert(builder->push_column(&error, "Bool"));
-//  assert(builder->push_column(&error, "Bool2"));
-//  assert(builder->push_operator(&error, grnxx::LOGICAL_AND_OPERATOR));
-//  auto expression = builder->release(&error);
-//  assert(expression);
+void test_logical_and() {
+  // Create an object for building expressions.
+  auto builder = grnxx::ExpressionBuilder::create(test.table);
 
-//  auto records = create_input_records();
+  // Test an expression (Bool && Bool2).
+  builder->push_column("Bool");
+  builder->push_column("Bool2");
+  builder->push_operator(grnxx::LOGICAL_AND_OPERATOR);
+  auto expression = builder->release();
 
-//  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) {
-//    grnxx::Int row_id = records.get_row_id(i);
-//    assert(bool_results[i] ==
-//           (test.bool_values[row_id] && test.bool2_values[row_id]));
-//  }
+  auto records = create_input_records();
 
-//  assert(expression->filter(&error, &records));
-//  grnxx::Int count = 0;
-//  for (grnxx::Int i = 1; i < test.bool_values.size(); ++i) {
-//    if (test.bool_values[i] && test.bool2_values[i]) {
-//      assert(records.get_row_id(count) == i);
-//      ++count;
-//    }
-//  }
-//  assert(records.size() == count);
-//}
+  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) {
+    size_t row_id = records[i].row_id.value();
+    assert(bool_results[i] ==
+           (test.bool_values[row_id] & test.bool2_values[row_id]));
+  }
 
-//void test_logical_or() {
-//  grnxx::Error error;
+  expression->filter(&records);
+  size_t count = 0;
+  for (size_t i = 0; i < test.bool_values.size(); ++i) {
+    if (test.bool_values[i] & test.bool2_values[i]) {
+      assert(records[count].row_id == grnxx::Int(i));
+      ++count;
+    }
+  }
+  assert(records.size() == count);
+}
 
-//  // Create an object for building expressions.
-//  auto builder = grnxx::ExpressionBuilder::create(&error, test.table);
-//  assert(builder);
+void test_logical_or() {
+  // Create an object for building expressions.
+  auto builder = grnxx::ExpressionBuilder::create(test.table);
 
-//  // Test an expression (Bool || Bool2).
-//  assert(builder->push_column(&error, "Bool"));
-//  assert(builder->push_column(&error, "Bool2"));
-//  assert(builder->push_operator(&error, grnxx::LOGICAL_OR_OPERATOR));
-//  auto expression = builder->release(&error);
-//  assert(expression);
+  // Test an expression (Bool || Bool2).
+  builder->push_column("Bool");
+  builder->push_column("Bool2");
+  builder->push_operator(grnxx::LOGICAL_OR_OPERATOR);
+  auto expression = builder->release();
 
-//  auto records = create_input_records();
+  auto records = create_input_records();
 
-//  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) {
-//    grnxx::Int row_id = records.get_row_id(i);
-//    assert(bool_results[i] ==
-//           (test.bool_values[row_id] || test.bool2_values[row_id]));
-//  }
+  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) {
+    size_t row_id = records[i].row_id.value();
+    assert(bool_results[i] ==
+           (test.bool_values[row_id] | test.bool2_values[row_id]));
+  }
 
-//  assert(expression->filter(&error, &records));
-//  grnxx::Int count = 0;
-//  for (grnxx::Int i = 1; i < test.bool_values.size(); ++i) {
-//    if (test.bool_values[i] || test.bool2_values[i]) {
-//      assert(records.get_row_id(count) == i);
-//      ++count;
-//    }
-//  }
-//  assert(records.size() == count);
-//}
+  expression->filter(&records);
+  size_t count = 0;
+  for (size_t i = 0; i < test.bool_values.size(); ++i) {
+    if (test.bool_values[i] | test.bool2_values[i]) {
+      assert(records[count].row_id == grnxx::Int(i));
+      ++count;
+    }
+  }
+  assert(records.size() == count);
+}
 
 //void test_equal() {
 //  grnxx::Error error;
@@ -2998,9 +2990,9 @@ int main() {
   test_to_int();
   test_to_float();
 
-//  // Binary operators.
-//  test_logical_and();
-//  test_logical_or();
+  // Binary operators.
+  test_logical_and();
+  test_logical_or();
 //  test_equal();
 //  test_not_equal();
 //  test_less();
-------------- next part --------------
HTML����������������������������...
Download 



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