[Groonga-commit] groonga/grnxx at 305854f [master] Add tests for constants and columns in Expression. (#37)

Back to archive index

susumu.yata null+****@clear*****
Mon Aug 18 15:43:57 JST 2014


susumu.yata	2014-08-18 15:43:57 +0900 (Mon, 18 Aug 2014)

  New Revision: 305854fa36e4b530ad4220cf343228a9cfa40496
  https://github.com/groonga/grnxx/commit/305854fa36e4b530ad4220cf343228a9cfa40496

  Message:
    Add tests for constants and columns in Expression. (#37)

  Modified files:
    test/test_expression.cpp

  Modified: test/test_expression.cpp (+72 -0)
===================================================================
--- test/test_expression.cpp    2014-08-18 15:35:05 +0900 (c7ddf3d)
+++ test/test_expression.cpp    2014-08-18 15:43:57 +0900 (29d022b)
@@ -111,6 +111,13 @@ void test_constant() {
   assert(cursor);
   assert(cursor->read_all(&error, &records) == test.table->num_rows());
 
+  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]);
+  }
+
   assert(expression->filter(&error, &records));
   assert(records.size() == test.table->num_rows());
 
@@ -119,6 +126,13 @@ void test_constant() {
   expression = builder->release(&error);
   assert(expression);
 
+  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]);
+  }
+
   assert(expression->filter(&error, &records));
   assert(records.size() == 0);
 
@@ -143,6 +157,13 @@ void test_constant() {
   expression = builder->release(&error);
   assert(expression);
 
+  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);
+  }
+
   assert(expression->adjust(&error, &records));
   assert(records.size() == test.table->num_rows());
   for (grnxx::Int i = 0; i < records.size(); ++i) {
@@ -179,6 +200,14 @@ void test_column() {
   assert(cursor);
   assert(cursor->read_all(&error, &records) == test.table->num_rows());
 
+  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]);
+  }
+
   assert(expression->filter(&error, &records));
   grnxx::Int count = 0;
   for (grnxx::Int i = 1; i < test.bool_values.size(); ++i) {
@@ -212,6 +241,14 @@ void test_column() {
   expression = builder->release(&error);
   assert(expression);
 
+  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);
+    assert(float_results[i] == test.float_values[row_id]);
+  }
+
   assert(expression->adjust(&error, &records));
   assert(records.size() == test.table->num_rows());
   for (grnxx::Int i = 0; i < records.size(); ++i) {
@@ -224,6 +261,11 @@ void test_column() {
   expression = builder->release(&error);
   assert(expression);
 
+  records.clear();
+  cursor = test.table->create_cursor(&error);
+  assert(cursor);
+  assert(cursor->read_all(&error, &records) == test.table->num_rows());
+
   grnxx::Array<grnxx::Text> text_results;
   assert(expression->evaluate(&error, records, &text_results));
   assert(text_results.size() == test.table->num_rows());
@@ -231,6 +273,36 @@ void test_column() {
     grnxx::Int row_id = records.get_row_id(i);
     assert(text_results[i] == test.text_values[row_id]);
   }
+
+  // Test and expression (_id).
+  assert(builder->push_column(&error, "_id"));
+  expression = builder->release(&error);
+  assert(expression);
+
+  grnxx::Array<grnxx::Int> id_results;
+  assert(expression->evaluate(&error, records, &id_results));
+  assert(id_results.size() == test.table->num_rows());
+  for (grnxx::Int i = 0; i < id_results.size(); ++i) {
+    assert(id_results[i] == records.get_row_id(i));
+  }
+
+  // Test and expression (_score).
+  assert(builder->push_column(&error, "_score"));
+  expression = builder->release(&error);
+  assert(expression);
+
+  grnxx::Array<grnxx::Float> score_results;
+  assert(expression->evaluate(&error, records, &score_results));
+  assert(score_results.size() == test.table->num_rows());
+  for (grnxx::Int i = 0; i < score_results.size(); ++i) {
+    assert(score_results[i] == records.get_score(i));
+  }
+
+  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) == 0.0);
+  }
 }
 
 void test_expression() {
-------------- next part --------------
HTML����������������������������...
下載 



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