[Groonga-commit] groonga/grnxx at 213c5d7 [new_data_types] Enable tests for DereferenceNode. (#106)

Back to archive index

susumu.yata null+****@clear*****
Sat Nov 15 02:38:01 JST 2014


susumu.yata	2014-11-15 02:38:01 +0900 (Sat, 15 Nov 2014)

  New Revision: 213c5d7193095e86a15e907913ceed0f38217109
  https://github.com/groonga/grnxx/commit/213c5d7193095e86a15e907913ceed0f38217109

  Message:
    Enable tests for DereferenceNode. (#106)

  Modified files:
    test/test_expression.cpp

  Modified: test/test_expression.cpp (+72 -82)
===================================================================
--- test/test_expression.cpp    2014-11-15 02:30:14 +0900 (0af223a)
+++ test/test_expression.cpp    2014-11-15 02:38:01 +0900 (c876eb2)
@@ -2517,72 +2517,64 @@ void test_modulus() {
 //  }
 //}
 
-//void test_subexpression() {
-//  grnxx::Error error;
-
-//  // Create an object for building expressions.
-//  auto builder = grnxx::ExpressionBuilder::create(&error, test.table);
-//  assert(builder);
+void test_subexpression() {
+  // Create an object for building expressions.
+  auto builder = grnxx::ExpressionBuilder::create(test.table);
 
-//  // Test an expression (Ref.Bool).
-//  assert(builder->push_column(&error, "Ref"));
-//  assert(builder->begin_subexpression(&error));
-//  assert(builder->push_column(&error, "Bool"));
-//  assert(builder->end_subexpression(&error));
-//  auto expression = builder->release(&error);
-//  assert(expression);
+  // Test an expression (Ref.Bool).
+  builder->push_column("Ref");
+  builder->begin_subexpression();
+  builder->push_column("Bool");
+  builder->end_subexpression();
+  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);
-//    const auto ref_value = test.ref_values[row_id];
-//    const auto bool_value = test.bool_values[ref_value];
-//    assert(bool_results[i] == bool_value);
-//  }
+  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) {
+    const auto ref_value = test.ref_values[i];
+    const auto bool_value = test.bool_values[ref_value.value()];
+    assert(bool_results[i].value() == bool_value.value());
+  }
 
-//  assert(expression->filter(&error, &records));
-//  grnxx::Int count = 0;
-//  for (grnxx::Int i = 1; i < test.ref_values.size(); ++i) {
-//    const auto ref_value = test.ref_values[i];
-//    const auto bool_value = test.bool_values[ref_value];
-//    if (bool_value) {
-//      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.ref_values.size(); ++i) {
+    const auto ref_value = test.ref_values[i];
+    const auto bool_value = test.bool_values[ref_value.value()];
+    if (bool_value.is_true()) {
+      assert(records[count].row_id.value() == grnxx::Int(i).value());
+      ++count;
+    }
+  }
+  assert(records.size() == count);
 
-//  // Test an expression (Ref.Float).
-//  assert(builder->push_column(&error, "Ref"));
-//  assert(builder->begin_subexpression(&error));
-//  assert(builder->push_column(&error, "Float"));
-//  assert(builder->end_subexpression(&error));
-//  expression = builder->release(&error);
-//  assert(expression);
+  // Test an expression (Ref.Float).
+  builder->push_column("Ref");
+  builder->begin_subexpression();
+  builder->push_column("Float");
+  builder->end_subexpression();
+  expression = builder->release();
 
-//  records = create_input_records();
+  records = create_input_records();
 
-//  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) {
-//    grnxx::Int row_id = records.get_row_id(i);
-//    const auto ref_value = test.ref_values[row_id];
-//    const auto float_value = test.float_values[ref_value];
-//    assert(float_results[i] == float_value);
-//  }
+  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) {
+    const auto ref_value = test.ref_values[i];
+    const auto float_value = test.float_values[ref_value.value()];
+    assert(float_results[i].value() == float_value.value());
+  }
 
-//  assert(expression->adjust(&error, &records));
-//  for (grnxx::Int i = 0; i < float_results.size(); ++i) {
-//    grnxx::Int row_id = records.get_row_id(i);
-//    const auto ref_value = test.ref_values[row_id];
-//    const auto float_value = test.float_values[ref_value];
-//    assert(records.get_score(i) == float_value);
-//  }
+  expression->adjust(&records);
+  for (size_t i = 0; i < float_results.size(); ++i) {
+    const auto ref_value = test.ref_values[i];
+    const auto float_value = test.float_values[ref_value.value()];
+    assert(records[i].score.value() == float_value.value());
+  }
 
 //  // Test an expression (Ref.(Ref.Text)).
 //  assert(builder->push_column(&error, "Ref"));
@@ -2608,29 +2600,27 @@ void test_modulus() {
 //    assert(text_results[i] == text_value);
 //  }
 
-//  // Test an expression ((Ref.Ref).Int).
-//  assert(builder->push_column(&error, "Ref"));
-//  assert(builder->begin_subexpression(&error));
-//  assert(builder->push_column(&error, "Ref"));
-//  assert(builder->end_subexpression(&error));
-//  assert(builder->begin_subexpression(&error));
-//  assert(builder->push_column(&error, "Int"));
-//  assert(builder->end_subexpression(&error));
-//  expression = builder->release(&error);
-//  assert(expression);
+  // Test an expression ((Ref.Ref).Int).
+  builder->push_column("Ref");
+  builder->begin_subexpression();
+  builder->push_column("Ref");
+  builder->end_subexpression();
+  builder->begin_subexpression();
+  builder->push_column("Int");
+  builder->end_subexpression();
+  expression = builder->release();
 
-//  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) {
-//    grnxx::Int row_id = records.get_row_id(i);
-//    const auto ref_value = test.ref_values[row_id];
-//    const auto ref_ref_value = test.ref_values[ref_value];
-//    const auto int_value = test.int_values[ref_ref_value];
-//    assert(int_results[i] == int_value);
-//  }
+  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) {
+    const auto ref_value = test.ref_values[i];
+    const auto ref_ref_value = test.ref_values[ref_value.value()];
+    const auto int_value = test.int_values[ref_ref_value.value()];
+    assert(int_results[i].value() == int_value.value());
+  }
 
 //  // Test an expression (RefVector.Int).
 //  assert(builder->push_column(&error, "RefVector"));
@@ -2655,7 +2645,7 @@ void test_modulus() {
 //      assert(int_vector_results[i][j] == int_value);
 //    }
 //  }
-//}
+}
 
 //void test_sequential_filter() {
 //  grnxx::Error error;
@@ -2882,8 +2872,8 @@ int main() {
   test_modulus();
 //  test_subscript();
 
-//  // Subexpression.
-//  test_subexpression();
+  // Subexpression.
+  test_subexpression();
 
 //  // Test sequential operations.
 //  test_sequential_filter();
-------------- next part --------------
HTML����������������������������...
下載 



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