susumu.yata
null+****@clear*****
Wed Oct 1 10:50:36 JST 2014
susumu.yata 2014-10-01 10:50:36 +0900 (Wed, 01 Oct 2014) New Revision: 4bbc11f67912cc6db43db86782d07b9c40ae071c https://github.com/groonga/grnxx/commit/4bbc11f67912cc6db43db86782d07b9c40ae071c Message: Add a test for key column. (#70) Modified files: test/test_table.cpp Modified: test/test_table.cpp (+74 -2) =================================================================== --- test/test_table.cpp 2014-10-01 10:49:48 +0900 (9d26b60) +++ test/test_table.cpp 2014-10-01 10:50:36 +0900 (76db7d4) @@ -210,7 +210,7 @@ void test_bitmap() { assert(table->max_row_id() == NUM_ROWS); } -void test_key() { +void test_int_key() { // TODO: find_row() is not supported yet. grnxx::Error error; @@ -281,6 +281,77 @@ void test_key() { assert(!table->key_column()); } +void test_text_key() { + // TODO: find_row() is not supported yet. + grnxx::Error error; + + // Create a database with the default options. + auto db = grnxx::open_db(&error, ""); + assert(db); + + // Create a table named "Table". + auto table = db->create_table(&error, "Table"); + assert(table); + + // Create a column named "Column". + auto column = table->create_column(&error, "Column", grnxx::TEXT_DATA); + assert(column); + + // Append three rows. + grnxx::Int row_id; + assert(table->insert_row(&error, grnxx::NULL_ROW_ID, + grnxx::Datum(), &row_id)); + assert(column->set(&error, row_id, grnxx::Text("1"))); + assert(table->insert_row(&error, grnxx::NULL_ROW_ID, + grnxx::Datum(), &row_id)); + assert(column->set(&error, row_id, grnxx::Text("12"))); + assert(table->insert_row(&error, grnxx::NULL_ROW_ID, + grnxx::Datum(), &row_id)); + assert(column->set(&error, row_id, grnxx::Text("123"))); + + // Set key column. + assert(table->set_key_column(&error, "Column")); + assert(table->key_column() == column); + + // Duplicate keys must be rejected. + assert(!table->insert_row(&error, grnxx::NULL_ROW_ID, + grnxx::Text("1"), &row_id)); + assert(row_id == 1); + assert(!table->insert_row(&error, grnxx::NULL_ROW_ID, + grnxx::Text("12"), &row_id)); + assert(row_id == 2); + assert(!table->insert_row(&error, grnxx::NULL_ROW_ID, + grnxx::Text("123"), &row_id)); + assert(row_id == 3); + + // Append new keys. + grnxx::Datum datum; + assert(table->insert_row(&error, grnxx::NULL_ROW_ID, + grnxx::Text("A"), &row_id)); + assert(column->get(&error, row_id, &datum)); + assert(datum.force_text() == "A"); + assert(table->insert_row(&error, grnxx::NULL_ROW_ID, + grnxx::Text("AB"), &row_id)); + assert(column->get(&error, row_id, &datum)); + assert(datum.force_text() == "AB"); + assert(table->insert_row(&error, grnxx::NULL_ROW_ID, + grnxx::Text("ABC"), &row_id)); + assert(column->get(&error, row_id, &datum)); + assert(datum.force_text() == "ABC"); + + // Find rows by key. + assert(table->find_row(&error, grnxx::Text("1")) == 1); + assert(table->find_row(&error, grnxx::Text("12")) == 2); + assert(table->find_row(&error, grnxx::Text("123")) == 3); + assert(table->find_row(&error, grnxx::Text("A")) == 4); + assert(table->find_row(&error, grnxx::Text("AB")) == 5); + assert(table->find_row(&error, grnxx::Text("ABC")) == 6); + + // Unset key column. + assert(table->unset_key_column(&error)); + assert(!table->key_column()); +} + void test_cursor() { grnxx::Error error; @@ -366,7 +437,8 @@ int main() { test_table(); test_rows(); test_bitmap(); - test_key(); + test_int_key(); + test_text_key(); test_cursor(); return 0; } -------------- next part -------------- HTML����������������������������... 下载