susumu.yata
null+****@clear*****
Wed Jul 30 16:59:14 JST 2014
susumu.yata 2014-07-30 16:59:14 +0900 (Wed, 30 Jul 2014) New Revision: 15c34d1791b3629679cd9c09fa2736919b77da00 https://github.com/groonga/grnxx/commit/15c34d1791b3629679cd9c09fa2736919b77da00 Message: Add tests for unary operators. Modified files: test/test_grnxx.cpp Modified: test/test_grnxx.cpp (+71 -0) =================================================================== --- test/test_grnxx.cpp 2014-07-30 16:57:14 +0900 (3dee464) +++ test/test_grnxx.cpp 2014-07-30 16:59:14 +0900 (88dd0d8) @@ -613,6 +613,77 @@ void test_expression() { assert(cursor); assert(cursor->read_all(&error, &record_set) == 2); + // 符号(+)を試す. + assert(builder->push_column(&error, "IntColumn")); + assert(builder->push_operator(&error, grnxx::POSITIVE_OPERATOR)); + assert(builder->push_datum(&error, grnxx::Int(123))); + assert(builder->push_operator(&error, grnxx::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, "IntColumn")); + assert(builder->push_operator(&error, grnxx::NEGATIVE_OPERATOR)); + assert(builder->push_datum(&error, grnxx::Int(-456))); + assert(builder->push_operator(&error, grnxx::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 == 2); + + record_set.clear(); + cursor = table->create_cursor(&error); + assert(cursor); + assert(cursor->read_all(&error, &record_set) == 2); + + // 型変換(整数)を試す. + assert(builder->push_column(&error, "FloatColumn")); + assert(builder->push_operator(&error, grnxx::TO_INT_OPERATOR)); + assert(builder->push_datum(&error, grnxx::Int(0))); + assert(builder->push_operator(&error, grnxx::EQUAL_OPERATOR)); + expression = builder->release(&error); + assert(expression); + + // フィルタとして使ったときの結果を確認する. + assert(expression->filter(&error, &record_set)); + assert(record_set.size() == 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_operator(&error, grnxx::TO_FLOAT_OPERATOR)); + assert(builder->push_datum(&error, grnxx::Float(300.0))); + assert(builder->push_operator(&error, grnxx::LESS_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, "IntColumn")); assert(builder->push_datum(&error, grnxx::Int(255))); -------------- next part -------------- HTML����������������������������... 下載