susumu.yata
null+****@clear*****
Tue Dec 16 10:43:08 JST 2014
susumu.yata 2014-11-17 18:49:27 +0900 (Mon, 17 Nov 2014) New Revision: efb33324be6962ddc763cd990052be31da94f160 https://github.com/groonga/grnxx/commit/efb33324be6962ddc763cd990052be31da94f160 Message: Add tests for ColumnNode<Vector<T>>. (#104). Modified files: test/test_expression.cpp Modified: test/test_expression.cpp (+213 -201) =================================================================== --- test/test_expression.cpp 2014-11-17 18:49:07 +0900 (9981f50) +++ test/test_expression.cpp 2014-11-17 18:49:27 +0900 (2d5a2ee) @@ -43,30 +43,32 @@ struct { grnxx::Array<grnxx::Text> text2_values; grnxx::Array<std::string> text_bodies; grnxx::Array<std::string> text2_bodies; -// grnxx::Array<grnxx::BoolVector> bool_vector_values; -// grnxx::Array<grnxx::BoolVector> bool_vector2_values; -// grnxx::Array<grnxx::IntVector> int_vector_values; -// grnxx::Array<grnxx::IntVector> int_vector2_values; -// grnxx::Array<grnxx::Array<grnxx::Int>> int_vector_bodies; -// grnxx::Array<grnxx::Array<grnxx::Int>> int_vector2_bodies; -// grnxx::Array<grnxx::FloatVector> float_vector_values; -// grnxx::Array<grnxx::FloatVector> float_vector2_values; -// grnxx::Array<grnxx::Array<grnxx::Float>> float_vector_bodies; -// grnxx::Array<grnxx::Array<grnxx::Float>> float_vector2_bodies; -// grnxx::Array<grnxx::GeoPointVector> geo_point_vector_values; -// grnxx::Array<grnxx::GeoPointVector> geo_point_vector2_values; -// grnxx::Array<grnxx::Array<grnxx::GeoPoint>> geo_point_vector_bodies; -// grnxx::Array<grnxx::Array<grnxx::GeoPoint>> geo_point_vector2_bodies; + grnxx::Array<grnxx::BoolVector> bool_vector_values; + grnxx::Array<grnxx::BoolVector> bool_vector2_values; + grnxx::Array<grnxx::Array<grnxx::Bool>> bool_vector_bodies; + grnxx::Array<grnxx::Array<grnxx::Bool>> bool_vector2_bodies; + grnxx::Array<grnxx::IntVector> int_vector_values; + grnxx::Array<grnxx::IntVector> int_vector2_values; + grnxx::Array<grnxx::Array<grnxx::Int>> int_vector_bodies; + grnxx::Array<grnxx::Array<grnxx::Int>> int_vector2_bodies; + grnxx::Array<grnxx::FloatVector> float_vector_values; + grnxx::Array<grnxx::FloatVector> float_vector2_values; + grnxx::Array<grnxx::Array<grnxx::Float>> float_vector_bodies; + grnxx::Array<grnxx::Array<grnxx::Float>> float_vector2_bodies; + grnxx::Array<grnxx::GeoPointVector> geo_point_vector_values; + grnxx::Array<grnxx::GeoPointVector> geo_point_vector2_values; + grnxx::Array<grnxx::Array<grnxx::GeoPoint>> geo_point_vector_bodies; + grnxx::Array<grnxx::Array<grnxx::GeoPoint>> geo_point_vector2_bodies; // grnxx::Array<grnxx::TextVector> text_vector_values; // grnxx::Array<grnxx::TextVector> text_vector2_values; // grnxx::Array<grnxx::Array<grnxx::Text>> text_vector_bodies; // grnxx::Array<grnxx::Array<grnxx::Text>> text_vector2_bodies; grnxx::Array<grnxx::Int> ref_values; grnxx::Array<grnxx::Int> ref2_values; -// grnxx::Array<grnxx::IntVector> ref_vector_values; -// grnxx::Array<grnxx::IntVector> ref_vector2_values; -// grnxx::Array<grnxx::Array<grnxx::Int>> ref_vector_bodies; -// grnxx::Array<grnxx::Array<grnxx::Int>> ref_vector2_bodies; + grnxx::Array<grnxx::IntVector> ref_vector_values; + grnxx::Array<grnxx::IntVector> ref_vector2_values; + grnxx::Array<grnxx::Array<grnxx::Int>> ref_vector_bodies; + grnxx::Array<grnxx::Array<grnxx::Int>> ref_vector2_bodies; } test; void generate_text(size_t min_size, size_t max_size, std::string *string) { @@ -106,37 +108,29 @@ void init_test() try { auto text_column = test.table->create_column("Text", data_type); auto text2_column = test.table->create_column("Text2", data_type); -// data_type = grnxx::BOOL_VECTOR_DATA; -// auto bool_vector_column = -// test.table->create_column(&error, "BoolVector", data_type); -// auto bool_vector2_column = -// test.table->create_column(&error, "BoolVector2", data_type); -// assert(bool_vector_column); -// assert(bool_vector2_column); - -// data_type = grnxx::INT_VECTOR_DATA; -// auto int_vector_column = -// test.table->create_column(&error, "IntVector", data_type); -// auto int_vector2_column = -// test.table->create_column(&error, "IntVector2", data_type); -// assert(int_vector_column); -// assert(int_vector2_column); - -// data_type = grnxx::FLOAT_VECTOR_DATA; -// auto float_vector_column = -// test.table->create_column(&error, "FloatVector", data_type); -// auto float_vector2_column = -// test.table->create_column(&error, "FloatVector2", data_type); -// assert(float_vector_column); -// assert(float_vector2_column); - -// data_type = grnxx::GEO_POINT_VECTOR_DATA; -// auto geo_point_vector_column = -// test.table->create_column(&error, "GeoPointVector", data_type); -// auto geo_point_vector2_column = -// test.table->create_column(&error, "GeoPointVector2", data_type); -// assert(geo_point_vector_column); -// assert(geo_point_vector2_column); + data_type = grnxx::BOOL_VECTOR_DATA; + auto bool_vector_column = + test.table->create_column("BoolVector", data_type); + auto bool_vector2_column = + test.table->create_column("BoolVector2", data_type); + + data_type = grnxx::INT_VECTOR_DATA; + auto int_vector_column = + test.table->create_column("IntVector", data_type); + auto int_vector2_column = + test.table->create_column("IntVector2", data_type); + + data_type = grnxx::FLOAT_VECTOR_DATA; + auto float_vector_column = + test.table->create_column("FloatVector", data_type); + auto float_vector2_column = + test.table->create_column("FloatVector2", data_type); + + data_type = grnxx::GEO_POINT_VECTOR_DATA; + auto geo_point_vector_column = + test.table->create_column("GeoPointVector", data_type); + auto geo_point_vector2_column = + test.table->create_column("GeoPointVector2", data_type); // data_type = grnxx::TEXT_VECTOR_DATA; // auto text_vector_column = @@ -152,13 +146,11 @@ void init_test() try { auto ref_column = test.table->create_column("Ref", data_type, options); auto ref2_column = test.table->create_column("Ref2", data_type, options); -// data_type = grnxx::INT_VECTOR_DATA; -// auto ref_vector_column = -// test.table->create_column(&error, "RefVector", data_type, options); -// auto ref_vector2_column = -// test.table->create_column(&error, "RefVector2", data_type, options); -// assert(ref_vector_column); -// assert(ref_vector2_column); + data_type = grnxx::INT_VECTOR_DATA; + auto ref_vector_column = + test.table->create_column("RefVector", data_type, options); + auto ref_vector2_column = + test.table->create_column("RefVector2", data_type, options); // Generate random values. // Bool: true or false. @@ -166,7 +158,7 @@ void init_test() try { // Float: [0.0, 1.0]. // GeoPoint: { [0, 100), [0, 100) }. // Text: byte = ['0', '9'], length = [1, 4]. - // BoolVector: value = true or false, size = [0, 58]. + // BoolVector: value = true or false, size = [0, 4]. // IntVector: value = [0, 100), size = [0, 4]. // FloatVector: value = [0.0, 1.0), size = [0, 4]. // GeoPointVector: value = { [0, 100), [0, 100) }, size = [0, 4]. @@ -187,30 +179,32 @@ void init_test() try { test.text2_values.resize(NUM_ROWS); test.text_bodies.resize(NUM_ROWS); test.text2_bodies.resize(NUM_ROWS); -// assert(test.bool_vector_values.resize(&error, NUM_ROWS + 1)); -// assert(test.bool_vector2_values.resize(&error, NUM_ROWS + 1)); -// assert(test.int_vector_values.resize(&error, NUM_ROWS + 1)); -// assert(test.int_vector2_values.resize(&error, NUM_ROWS + 1)); -// assert(test.int_vector_bodies.resize(&error, NUM_ROWS + 1)); -// assert(test.int_vector2_bodies.resize(&error, NUM_ROWS + 1)); -// assert(test.float_vector_values.resize(&error, NUM_ROWS + 1)); -// assert(test.float_vector2_values.resize(&error, NUM_ROWS + 1)); -// assert(test.float_vector_bodies.resize(&error, NUM_ROWS + 1)); -// assert(test.float_vector2_bodies.resize(&error, NUM_ROWS + 1)); -// assert(test.geo_point_vector_values.resize(&error, NUM_ROWS + 1)); -// assert(test.geo_point_vector2_values.resize(&error, NUM_ROWS + 1)); -// assert(test.geo_point_vector_bodies.resize(&error, NUM_ROWS + 1)); -// assert(test.geo_point_vector2_bodies.resize(&error, NUM_ROWS + 1)); + test.bool_vector_values.resize(NUM_ROWS); + test.bool_vector2_values.resize(NUM_ROWS); + test.bool_vector_bodies.resize(NUM_ROWS); + test.bool_vector2_bodies.resize(NUM_ROWS); + test.int_vector_values.resize(NUM_ROWS); + test.int_vector2_values.resize(NUM_ROWS); + test.int_vector_bodies.resize(NUM_ROWS); + test.int_vector2_bodies.resize(NUM_ROWS); + test.float_vector_values.resize(NUM_ROWS); + test.float_vector2_values.resize(NUM_ROWS); + test.float_vector_bodies.resize(NUM_ROWS); + test.float_vector2_bodies.resize(NUM_ROWS); + test.geo_point_vector_values.resize(NUM_ROWS); + test.geo_point_vector2_values.resize(NUM_ROWS); + test.geo_point_vector_bodies.resize(NUM_ROWS); + test.geo_point_vector2_bodies.resize(NUM_ROWS); // assert(test.text_vector_values.resize(&error, NUM_ROWS + 1)); // assert(test.text_vector2_values.resize(&error, NUM_ROWS + 1)); // assert(test.text_vector_bodies.resize(&error, NUM_ROWS + 1)); // assert(test.text_vector2_bodies.resize(&error, NUM_ROWS + 1)); test.ref_values.resize(NUM_ROWS + 1); test.ref2_values.resize(NUM_ROWS + 1); -// assert(test.ref_vector_values.resize(&error, NUM_ROWS + 1)); -// assert(test.ref_vector2_values.resize(&error, NUM_ROWS + 1)); -// assert(test.ref_vector_bodies.resize(&error, NUM_ROWS + 1)); -// assert(test.ref_vector2_bodies.resize(&error, NUM_ROWS + 1)); + test.ref_vector_values.resize(NUM_ROWS); + test.ref_vector2_values.resize(NUM_ROWS); + test.ref_vector_bodies.resize(NUM_ROWS); + test.ref_vector2_bodies.resize(NUM_ROWS); for (std::size_t i = 0; i < NUM_ROWS; ++i) { test.bool_values.set(i, grnxx::Bool((mersenne_twister() & 1) != 0)); @@ -243,58 +237,82 @@ void init_test() try { text_body->length())); // grnxx::uint64_t bits = mersenne_twister(); -// grnxx::Int size = mersenne_twister() % 59; +// size_t size = mersenne_twister() % 59; // test.bool_vector_values.set(i, grnxx::BoolVector(bits, size)); // bits = mersenne_twister(); // size = mersenne_twister() % 59; // test.bool_vector2_values.set(i, grnxx::BoolVector(bits, size)); -// size = mersenne_twister() % (MAX_SIZE + 1); -// assert(test.int_vector_bodies[i].resize(&error, size)); -// for (grnxx::Int j = 0; j < size; ++j) { -// test.int_vector_bodies[i][j] = mersenne_twister() % 100; -// } -// test.int_vector_values.set( -// i, grnxx::IntVector(test.int_vector_bodies[i].data(), size)); -// size = mersenne_twister() % (MAX_SIZE + 1); -// assert(test.int_vector2_bodies[i].resize(&error, size)); -// for (grnxx::Int j = 0; j < size; ++j) { -// test.int_vector2_bodies[i][j] = mersenne_twister() % 100; -// } -// test.int_vector2_values.set( -// i, grnxx::IntVector(test.int_vector2_bodies[i].data(), size)); - -// size = mersenne_twister() % (MAX_SIZE + 1); -// assert(test.float_vector_bodies[i].resize(&error, size)); -// for (grnxx::Int j = 0; j < size; ++j) { -// test.float_vector_bodies[i][j] = (mersenne_twister() % 100) / 100.0; -// } -// test.float_vector_values.set( -// i, grnxx::FloatVector(test.float_vector_bodies[i].data(), size)); -// size = mersenne_twister() % (MAX_SIZE + 1); -// assert(test.float_vector2_bodies[i].resize(&error, size)); -// for (grnxx::Int j = 0; j < size; ++j) { -// test.float_vector2_bodies[i][j] = (mersenne_twister() % 100) / 100.0; -// } -// test.float_vector2_values.set( -// i, grnxx::FloatVector(test.float_vector2_bodies[i].data(), size)); + size_t size = mersenne_twister() % (MAX_SIZE + 1); + test.bool_vector_bodies[i].resize(size); + for (size_t j = 0; j < size; ++j) { + test.bool_vector_bodies[i][j] = + grnxx::Bool((mersenne_twister() & 1) == 1); + } + test.bool_vector_values.set( + i, grnxx::BoolVector(test.bool_vector_bodies[i].data(), size)); + size = mersenne_twister() % (MAX_SIZE + 1); + test.bool_vector2_bodies[i].resize(size); + for (size_t j = 0; j < size; ++j) { + test.bool_vector2_bodies[i][j] = + grnxx::Bool((mersenne_twister() & 1) == 1); + } + test.bool_vector2_values.set( + i, grnxx::BoolVector(test.bool_vector2_bodies[i].data(), size)); -// size = mersenne_twister() % (MAX_SIZE + 1); -// assert(test.geo_point_vector_bodies[i].resize(&error, size)); -// for (grnxx::Int j = 0; j < size; ++j) { -// test.geo_point_vector_bodies[i][j] = -// grnxx::GeoPoint(mersenne_twister() % 100, mersenne_twister() % 100); -// } -// test.geo_point_vector_values.set( -// i, grnxx::GeoPointVector(test.geo_point_vector_bodies[i].data(), size)); -// size = mersenne_twister() % (MAX_SIZE + 1); -// assert(test.geo_point_vector2_bodies[i].resize(&error, size)); -// for (grnxx::Int j = 0; j < size; ++j) { -// test.geo_point_vector2_bodies[i][j] = -// grnxx::GeoPoint(mersenne_twister() % 100, mersenne_twister() % 100); -// } -// test.geo_point_vector2_values.set( -// i, grnxx::GeoPointVector(test.geo_point_vector2_bodies[i].data(), size)); + size = mersenne_twister() % (MAX_SIZE + 1); + test.int_vector_bodies[i].resize(size); + for (size_t j = 0; j < size; ++j) { + test.int_vector_bodies[i][j] = grnxx::Int(mersenne_twister() % 100); + } + test.int_vector_values.set( + i, grnxx::IntVector(test.int_vector_bodies[i].data(), size)); + size = mersenne_twister() % (MAX_SIZE + 1); + test.int_vector2_bodies[i].resize(size); + for (size_t j = 0; j < size; ++j) { + test.int_vector2_bodies[i][j] = grnxx::Int(mersenne_twister() % 100); + } + test.int_vector2_values.set( + i, grnxx::IntVector(test.int_vector2_bodies[i].data(), size)); + + size = mersenne_twister() % (MAX_SIZE + 1); + test.float_vector_bodies[i].resize(size); + for (size_t j = 0; j < size; ++j) { + test.float_vector_bodies[i][j] = + grnxx::Float((mersenne_twister() % 100) / 100.0); + } + test.float_vector_values.set( + i, grnxx::FloatVector(test.float_vector_bodies[i].data(), size)); + size = mersenne_twister() % (MAX_SIZE + 1); + test.float_vector2_bodies[i].resize(size); + for (size_t j = 0; j < size; ++j) { + test.float_vector2_bodies[i][j] = + grnxx::Float((mersenne_twister() % 100) / 100.0); + } + test.float_vector2_values.set( + i, grnxx::FloatVector(test.float_vector2_bodies[i].data(), size)); + + size = mersenne_twister() % (MAX_SIZE + 1); + test.geo_point_vector_bodies[i].resize(size); + for (size_t j = 0; j < size; ++j) { + test.geo_point_vector_bodies[i][j] = + grnxx::GeoPoint(grnxx::Int(mersenne_twister() % 100), + grnxx::Int(mersenne_twister() % 100)); + } + const grnxx::GeoPoint *geo_point_data = + test.geo_point_vector_bodies[i].data(); + test.geo_point_vector_values.set( + i, grnxx::GeoPointVector(geo_point_data, size)); + size = mersenne_twister() % (MAX_SIZE + 1); + test.geo_point_vector2_bodies[i].resize(size); + for (size_t j = 0; j < size; ++j) { + test.geo_point_vector2_bodies[i][j] = + grnxx::GeoPoint(grnxx::Int(mersenne_twister() % 100), + grnxx::Int(mersenne_twister() % 100)); + } + geo_point_data = test.geo_point_vector2_bodies[i].data(); + test.geo_point_vector2_values.set( + i, grnxx::GeoPointVector(geo_point_data, size)); // size = mersenne_twister() % (MAX_SIZE + 1); // assert(test.text_vector_bodies[i].resize(&error, size)); @@ -316,20 +334,22 @@ void init_test() try { test.ref_values.set(i, grnxx::Int(mersenne_twister() % NUM_ROWS)); test.ref2_values.set(i, grnxx::Int(mersenne_twister() % NUM_ROWS)); -// size = mersenne_twister() % (MAX_SIZE + 1); -// assert(test.ref_vector_bodies[i].resize(&error, size)); -// for (grnxx::Int j = 0; j < size; ++j) { -// test.ref_vector_bodies[i][j] = 1 + (mersenne_twister() % NUM_ROWS); -// } -// test.ref_vector_values.set( -// i, grnxx::IntVector(test.ref_vector_bodies[i].data(), size)); -// size = mersenne_twister() % (MAX_SIZE + 1); -// assert(test.ref_vector2_bodies[i].resize(&error, size)); -// for (grnxx::Int j = 0; j < size; ++j) { -// test.ref_vector2_bodies[i][j] = 1 + (mersenne_twister() % NUM_ROWS); -// } -// test.ref_vector2_values.set( -// i, grnxx::IntVector(test.ref_vector2_bodies[i].data(), size)); + size = mersenne_twister() % (MAX_SIZE + 1); + test.ref_vector_bodies[i].resize(size); + for (size_t j = 0; j < size; ++j) { + test.ref_vector_bodies[i][j] = + grnxx::Int(mersenne_twister() % NUM_ROWS); + } + test.ref_vector_values.set( + i, grnxx::IntVector(test.ref_vector_bodies[i].data(), size)); + size = mersenne_twister() % (MAX_SIZE + 1); + test.ref_vector2_bodies[i].resize(size); + for (size_t j = 0; j < size; ++j) { + test.ref_vector2_bodies[i][j] = + grnxx::Int(mersenne_twister() % NUM_ROWS); + } + test.ref_vector2_values.set( + i, grnxx::IntVector(test.ref_vector2_bodies[i].data(), size)); } // Store generated values into columns. @@ -347,22 +367,14 @@ void init_test() try { geo_point2_column->set(row_id, test.geo_point2_values[i]); text_column->set(row_id, test.text_values[i]); text2_column->set(row_id, test.text2_values[i]); -// assert(bool_vector_column->set(&error, row_id, -// test.bool_vector_values[i])); -// assert(bool_vector2_column->set(&error, row_id, -// test.bool_vector2_values[i])); -// assert(int_vector_column->set(&error, row_id, -// test.int_vector_values[i])); -// assert(int_vector2_column->set(&error, row_id, -// test.int_vector2_values[i])); -// assert(float_vector_column->set(&error, row_id, -// test.float_vector_values[i])); -// assert(float_vector2_column->set(&error, row_id, -// test.float_vector2_values[i])); -// assert(geo_point_vector_column->set(&error, row_id, -// test.geo_point_vector_values[i])); -// assert(geo_point_vector2_column->set(&error, row_id, -// test.geo_point_vector2_values[i])); + bool_vector_column->set(row_id, test.bool_vector_values[i]); + bool_vector2_column->set(row_id, test.bool_vector2_values[i]); + int_vector_column->set(row_id, test.int_vector_values[i]); + int_vector2_column->set(row_id, test.int_vector2_values[i]); + float_vector_column->set(row_id, test.float_vector_values[i]); + float_vector2_column->set(row_id, test.float_vector2_values[i]); + geo_point_vector_column->set(row_id, test.geo_point_vector_values[i]); + geo_point_vector2_column->set(row_id, test.geo_point_vector2_values[i]); // assert(text_vector_column->set(&error, row_id, // test.text_vector_values[i])); // assert(text_vector2_column->set(&error, row_id, @@ -373,8 +385,8 @@ void init_test() try { grnxx::Int row_id(i); ref_column->set(row_id, test.ref_values[i]); ref2_column->set(row_id, test.ref2_values[i]); -// assert(ref_vector_column->set(&error, i, test.ref_vector_values[i])); -// assert(ref_vector2_column->set(&error, i, test.ref_vector2_values[i])); + ref_vector_column->set(row_id, test.ref_vector_values[i]); + ref_vector2_column->set(row_id, test.ref_vector2_values[i]); } } catch (const char *msg) { std::cout << msg << std::endl; @@ -704,65 +716,65 @@ void test_column() { assert((text_results[i] == test.text_values[row_id]).is_true()); } -// // Test an expression (BoolVector). -// assert(builder->push_column(&error, "BoolVector")); -// expression = builder->release(&error); -// assert(expression); + // Test an expression (BoolVector). + builder->push_column("BoolVector"); + expression = builder->release(); -// records = create_input_records(); + records = create_input_records(); -// grnxx::Array<grnxx::BoolVector> bool_vector_results; -// assert(expression->evaluate(&error, records, &bool_vector_results)); -// assert(bool_vector_results.size() == test.table->num_rows()); -// for (grnxx::Int i = 0; i < bool_vector_results.size(); ++i) { -// grnxx::Int row_id = records.get_row_id(i); -// assert(bool_vector_results[i] == test.bool_vector_values[row_id]); -// } + grnxx::Array<grnxx::BoolVector> bool_vector_results; + expression->evaluate(records, &bool_vector_results); + assert(bool_vector_results.size() == test.table->num_rows()); + for (size_t i = 0; i < bool_vector_results.size(); ++i) { + size_t row_id = records[i].row_id.value(); + assert((bool_vector_results[i] == + test.bool_vector_values[row_id]).is_true()); + } -// // Test an expression (IntVector). -// assert(builder->push_column(&error, "IntVector")); -// expression = builder->release(&error); -// assert(expression); + // Test an expression (IntVector). + builder->push_column("IntVector"); + expression = builder->release(); -// records = create_input_records(); + records = create_input_records(); -// grnxx::Array<grnxx::IntVector> int_vector_results; -// assert(expression->evaluate(&error, records, &int_vector_results)); -// assert(int_vector_results.size() == test.table->num_rows()); -// for (grnxx::Int i = 0; i < int_vector_results.size(); ++i) { -// grnxx::Int row_id = records.get_row_id(i); -// assert(int_vector_results[i] == test.int_vector_values[row_id]); -// } + grnxx::Array<grnxx::IntVector> int_vector_results; + expression->evaluate(records, &int_vector_results); + assert(int_vector_results.size() == test.table->num_rows()); + for (size_t i = 0; i < int_vector_results.size(); ++i) { + size_t row_id = records[i].row_id.value(); + assert((int_vector_results[i] == + test.int_vector_values[row_id]).is_true()); + } -// // Test an expression (FloatVector). -// assert(builder->push_column(&error, "FloatVector")); -// expression = builder->release(&error); -// assert(expression); + // Test an expression (FloatVector). + builder->push_column("FloatVector"); + expression = builder->release(); -// records = create_input_records(); + records = create_input_records(); -// grnxx::Array<grnxx::FloatVector> float_vector_results; -// assert(expression->evaluate(&error, records, &float_vector_results)); -// assert(float_vector_results.size() == test.table->num_rows()); -// for (grnxx::Int i = 0; i < float_vector_results.size(); ++i) { -// grnxx::Int row_id = records.get_row_id(i); -// assert(float_vector_results[i] == test.float_vector_values[row_id]); -// } + grnxx::Array<grnxx::FloatVector> float_vector_results; + expression->evaluate(records, &float_vector_results); + assert(float_vector_results.size() == test.table->num_rows()); + for (size_t i = 0; i < float_vector_results.size(); ++i) { + size_t row_id = records[i].row_id.value(); + assert((float_vector_results[i] == + test.float_vector_values[row_id]).is_true()); + } -// // Test an expression (GeoPointVector). -// assert(builder->push_column(&error, "GeoPointVector")); -// expression = builder->release(&error); -// assert(expression); + // Test an expression (GeoPointVector). + builder->push_column("GeoPointVector"); + expression = builder->release(); -// records = create_input_records(); + records = create_input_records(); -// grnxx::Array<grnxx::GeoPointVector> geo_point_vector_results; -// assert(expression->evaluate(&error, records, &geo_point_vector_results)); -// assert(geo_point_vector_results.size() == test.table->num_rows()); -// for (grnxx::Int i = 0; i < geo_point_vector_results.size(); ++i) { -// grnxx::Int row_id = records.get_row_id(i); -// assert(geo_point_vector_results[i] == test.geo_point_vector_values[row_id]); -// } + grnxx::Array<grnxx::GeoPointVector> geo_point_vector_results; + expression->evaluate(records, &geo_point_vector_results); + assert(geo_point_vector_results.size() == test.table->num_rows()); + for (size_t i = 0; i < geo_point_vector_results.size(); ++i) { + size_t row_id = records[i].row_id.value(); + assert((geo_point_vector_results[i] == + test.geo_point_vector_values[row_id]).is_true()); + } // // Test an expression (TextVector). // assert(builder->push_column(&error, "TextVector")); -------------- next part -------------- HTML����������������������������...Download