[Groonga-commit] groonga/grnxx at 7dddc55 [master] Add tests for incremental sorting. (#42)

Back to archive index

susumu.yata null+****@clear*****
Thu Dec 11 13:29:09 JST 2014


susumu.yata	2014-12-11 13:29:09 +0900 (Thu, 11 Dec 2014)

  New Revision: 7dddc55dff4d68dbb00d09536cba91702c60f8a6
  https://github.com/groonga/grnxx/commit/7dddc55dff4d68dbb00d09536cba91702c60f8a6

  Message:
    Add tests for incremental sorting. (#42)

  Modified files:
    test/test_sorter.cpp

  Modified: test/test_sorter.cpp (+39 -8)
===================================================================
--- test/test_sorter.cpp    2014-12-11 13:28:03 +0900 (6d2d94a)
+++ test/test_sorter.cpp    2014-12-11 13:29:09 +0900 (af3f194)
@@ -144,10 +144,9 @@ void test_row_id() {
   auto sorter = grnxx::Sorter::create(std::move(orders));
 
   sorter->sort(&records);
-  for (size_t i = 1; i < records.size(); ++i) {
-    size_t lhs_row_id = records[i - 1].row_id.raw();
-    size_t rhs_row_id = records[i].row_id.raw();
-    assert(lhs_row_id > rhs_row_id);
+  for (size_t i = 0; i < records.size(); ++i) {
+    assert(records[i].row_id.raw() ==
+           static_cast<int64_t>(test.table->num_rows() - i - 1));
   }
 
   // Create a regular sorter.
@@ -159,10 +158,42 @@ void test_row_id() {
   sorter = grnxx::Sorter::create(std::move(orders));
 
   sorter->sort(&records);
-  for (size_t i = 1; i < records.size(); ++i) {
-    size_t lhs_row_id = records[i - 1].row_id.raw();
-    size_t rhs_row_id = records[i].row_id.raw();
-    assert(lhs_row_id < rhs_row_id);
+  for (size_t i = 0; i < records.size(); ++i) {
+    assert(records[i].row_id.raw() == static_cast<int64_t>(i));
+  }
+
+  // Create a reverse range sorter.
+  orders.resize(1);
+  expression_builder->push_row_id();
+  expression = expression_builder->release();
+  orders[0].expression = std::move(expression);
+  orders[0].type = grnxx::SORTER_REVERSE_ORDER;
+  grnxx::SorterOptions options;
+  options.limit = 500;
+  sorter = grnxx::Sorter::create(std::move(orders), options);
+
+  sorter->sort(&records);
+  assert(records.size() == options.limit);
+  for (size_t i = 0; i < records.size(); ++i) {
+    assert(records[i].row_id.raw() ==
+           static_cast<int64_t>(test.table->num_rows() - i - 1));
+  }
+
+  // Create a regular range sorter.
+  orders.resize(1);
+  expression_builder->push_row_id();
+  expression = expression_builder->release();
+  orders[0].expression = std::move(expression);
+  orders[0].type = grnxx::SORTER_REGULAR_ORDER;
+  options.offset = 100;
+  options.limit = 100;
+  sorter = grnxx::Sorter::create(std::move(orders), options);
+
+  sorter->sort(&records);
+  assert(records.size() == options.limit);
+  for (size_t i = 0; i < records.size(); ++i) {
+    assert(records[i].row_id.raw() ==
+           static_cast<int64_t>(test.table->num_rows() - 500 + 100 + i));
   }
 }
 
-------------- next part --------------
HTML����������������������������...
다운로드 



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