susumu.yata
null+****@clear*****
Wed Nov 26 23:18:00 JST 2014
susumu.yata 2014-11-26 23:18:00 +0900 (Wed, 26 Nov 2014) New Revision: 8a87b5097a7d3d9705b688b36dcb7e5dbc9ee58b https://github.com/groonga/grnxx/commit/8a87b5097a7d3d9705b688b36dcb7e5dbc9ee58b Message: Add a test for sorting records in row ID order. (#119) Modified files: test/test_sorter.cpp Modified: test/test_sorter.cpp (+40 -0) =================================================================== --- test/test_sorter.cpp 2014-11-26 23:17:34 +0900 (a185367) +++ test/test_sorter.cpp 2014-11-26 23:18:00 +0900 (6d2d94a) @@ -127,6 +127,45 @@ grnxx::Array<grnxx::Record> create_input_records() { return records; } +void test_row_id() { + // Create a cursor which reads all the records. + auto records = create_input_records(); + + // Create an object for building expressions. + auto expression_builder = grnxx::ExpressionBuilder::create(test.table); + + // Create a reverse sorter. + grnxx::Array<grnxx::SorterOrder> orders; + orders.resize(1); + expression_builder->push_row_id(); + auto expression = expression_builder->release(); + orders[0].expression = std::move(expression); + orders[0].type = grnxx::SORTER_REVERSE_ORDER; + 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); + } + + // Create a regular 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; + 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); + } +} + void test_score() { // Create a cursor which reads all the records. auto records = create_input_records(); @@ -594,6 +633,7 @@ void test_composite() { int main() { init_test(); + test_row_id(); test_score(); test_bool(); test_int(); -------------- next part -------------- HTML����������������������������... 下載