susumu.yata
null+****@clear*****
Thu Jul 17 10:40:54 JST 2014
susumu.yata 2014-07-17 10:40:54 +0900 (Thu, 17 Jul 2014) New Revision: 71a33722d37029b845a226ccb1b05725404b1f5f https://github.com/groonga/grnxx/commit/71a33722d37029b845a226ccb1b05725404b1f5f Message: Add tests for Text operations. Modified files: test/test_grnxx.cpp Modified: test/test_grnxx.cpp (+43 -3) =================================================================== --- test/test_grnxx.cpp 2014-07-17 10:36:16 +0900 (7cf6da1) +++ test/test_grnxx.cpp 2014-07-17 10:40:54 +0900 (0a29cfb) @@ -344,23 +344,29 @@ void test_expression() { grnxx::FLOAT_DATA); assert(float_column); + auto text_column = table->create_column(&error, "TextColumn", + grnxx::TEXT_DATA); + assert(text_column); + // 下記のデータを格納する. // - // RowID BoolColumn IntColumn FloatColumn - // 1 false 123 -0.25 - // 2 true 456 0.25 + // RowID BoolColumn IntColumn FloatColumn TextColumn + // 1 false 123 -0.25 "ABC" + // 2 true 456 0.25 "XYZ" grnxx::Int row_id; assert(table->insert_row(&error, grnxx::NULL_ROW_ID, grnxx::Datum(), &row_id)); assert(bool_column->set(&error, row_id, grnxx::Bool(false))); assert(int_column->set(&error, row_id, grnxx::Int(123))); assert(float_column->set(&error, row_id, grnxx::Float(-0.25))); + assert(text_column->set(&error, row_id, grnxx::Text("ABC"))); assert(table->insert_row(&error, grnxx::NULL_ROW_ID, grnxx::Datum(), &row_id)); assert(bool_column->set(&error, row_id, grnxx::Bool(true))); assert(int_column->set(&error, row_id, grnxx::Int(456))); assert(float_column->set(&error, row_id, grnxx::Float(0.25))); + assert(text_column->set(&error, row_id, grnxx::Text("XYZ"))); // 式構築用のオブジェクトを用意する. auto builder = grnxx::ExpressionBuilder::create(&error, table); @@ -459,6 +465,40 @@ void test_expression() { assert(cursor->read_all(&error, &record_set) == 2); // 大小関係による比較を試す. + assert(builder->push_column(&error, "TextColumn")); + assert(builder->push_datum(&error, grnxx::Text("ABC"))); + assert(builder->push_operator(&error, grnxx::LESS_EQUAL_OPERATOR)); + expression = builder->release(&error); + assert(expression); + + // フィルタとして使ったときの結果を確認する. + assert(expression->filter(&error, &record_set)); + assert(record_set.size() == 1); + assert(record_set.get(0).row_id == 1); + + record_set.clear(); + cursor = table->create_cursor(&error); + assert(cursor); + assert(cursor->read_all(&error, &record_set) == 2); + + // 大小関係による比較を試す. + assert(builder->push_column(&error, "TextColumn")); + assert(builder->push_datum(&error, grnxx::Text("ABC"))); + assert(builder->push_operator(&error, grnxx::GREATER_OPERATOR)); + expression = builder->release(&error); + assert(expression); + + // フィルタとして使ったときの結果を確認する. + assert(expression->filter(&error, &record_set)); + assert(record_set.size() == 1); + assert(record_set.get(0).row_id == 2); + + record_set.clear(); + cursor = table->create_cursor(&error); + assert(cursor); + assert(cursor->read_all(&error, &record_set) == 2); + + // 大小関係による比較を試す. assert(builder->push_column(&error, "IntColumn")); assert(builder->push_datum(&error, grnxx::Int(456))); assert(builder->push_operator(&error, grnxx::GREATER_EQUAL_OPERATOR)); -------------- next part -------------- HTML����������������������������...Download