null+****@clear*****
null+****@clear*****
2010年 6月 28日 (月) 14:23:02 JST
Kouhei Sutou 2010-06-28 05:23:02 +0000 (Mon, 28 Jun 2010) New Revision: 212ae41aa0a652f3ba2f2e37e5d004eaffbc4d41 Log: add more sortby test. Modified files: test/unit/core/test-command-select-sort.c Modified: test/unit/core/test-command-select-sort.c (+91 -10) =================================================================== --- test/unit/core/test-command-select-sort.c 2010-06-28 03:20:25 +0000 (c50e7df) +++ test/unit/core/test-command-select-sort.c 2010-06-28 05:23:02 +0000 (4e9deb4) @@ -51,6 +51,55 @@ remove_tmp_directory(void) cut_remove_path(tmp_directory, NULL); } +static void +setup_ddl(void) +{ + assert_send_commands("table_create Sites TABLE_PAT_KEY ShortText\n" + "column_create Sites score COLUMN_SCALAR Int32\n" + "column_create Sites age COLUMN_SCALAR Int32"); + + assert_send_commands("table_create Users TABLE_PAT_KEY ShortText\n" + "column_create Users name COLUMN_SCALAR ShortText"); + + assert_send_commands("table_create Bookmarks TABLE_NO_KEY\n" + "column_create Bookmarks site COLUMN_SCALAR Sites\n" + "column_create Bookmarks user COLUMN_SCALAR Users\n" + "column_create Bookmarks rank COLUMN_SCALAR Int32"); + + assert_send_commands("column_create Users bookmarks COLUMN_VECTOR Bookmarks " + "--source Bookmarks.user"); +} + +static void +setup_data(void) +{ + assert_send_commands("load --table Sites\n" + "[\n" + "[\"_key\", \"score\", \"age\"],\n" + "[\"groonga.org\", 100, 2],\n" + "[\"qwik.jp/senna/FrontPageJ.html\", 100, 5],\n" + "[\"2ch.net\", 10, 11]\n" + "]"); + + assert_send_commands("load --table Users\n" + "[\n" + "[\"_key\", \"name\"],\n" + "[\"morita\", \"Daijiro MORI\"],\n" + "[\"gunyara-kun\", \"Tasuku SUENAGA\"],\n" + "[\"yu\", \"Yutaro Shimamura\"]\n" + "]"); + + assert_send_commands("load --table Bookmarks\n" + "[\n" + "[\"site\", \"user\", \"rank\"],\n" + "[\"groonga.org\", \"morita\", 100],\n" + "[\"groonga.org\", \"gunyara-kun\", 100],\n" + "[\"groonga.org\", \"yu\", 50],\n" + "[\"2ch.net\", \"gunyara-kun\", null],\n" + "[\"2ch.net\", \"yu\", 10]\n" + "]"); +} + void cut_setup(void) { @@ -64,6 +113,9 @@ cut_setup(void) database_path = cut_build_path(tmp_directory, "database.groonga", NULL); database = grn_db_create(context, database_path, NULL); + + setup_ddl(); + setup_data(); } void @@ -81,16 +133,6 @@ cut_teardown(void) void test_int(void) { - assert_send_commands("table_create Sites TABLE_PAT_KEY ShortText\n" - "column_create Sites score COLUMN_SCALAR Int32\n" - "column_create Sites age COLUMN_SCALAR Int32\n" - "load --table Sites\n" - "[\n" - "[\"_key\", \"score\", \"age\"],\n" - "[\"groonga.org\", 100, 2],\n" - "[\"qwik.jp/senna/FrontPageJ.html\", 100, 5],\n" - "[\"2ch.net\", 10, 11]\n" - "]"); cut_assert_equal_string( "[[[3]," "[[\"_key\",\"ShortText\"]," @@ -103,3 +145,42 @@ test_int(void) "--sortby \"-score -age\" " "--output_columns \"_key score age\"")); } + +void +test_drilldown(void) +{ + cut_assert_equal_string( + "[[[5]," + "[[\"site._key\",\"ShortText\"]," + "[\"user._key\",\"ShortText\"]," + "[\"rank\",\"Int32\"]]," + "[\"groonga.org\",\"morita\",100]," + "[\"groonga.org\",\"gunyara-kun\",100]," + "[\"groonga.org\",\"yu\",50]," + "[\"2ch.net\",\"gunyara-kun\",0]," + "[\"2ch.net\",\"yu\",10]],\n" + "[[2]," + "[[\"_key\",\"ShortText\"]," + "[\"_nsubrecs\",\"Int32\"]]," + "[\"2ch.net\",2]," + "[\"groonga.org\",3]],\n" + "[[3]," + "[[\"_key\",\"ShortText\"]," + "[\"_nsubrecs\",\"Int32\"]]," + "[\"gunyara-kun\",2]," + "[\"morita\",1]," + "[\"yu\",2]],\n" + "[[4]," + "[[\"_key\",\"Int32\"]," + "[\"_nsubrecs\",\"Int32\"]]," + "[0,1]," + "[10,1]," + "[50,1]," + "[100,2]]]", + send_command("select Bookmarks " + "--output_columns \"site._key user._key rank\" " + "--sortby \"-site.score -site.age\" " + "--drilldown \"site user rank\" " + "--drilldown_output_columns \"_key _nsubrecs\" " + "--drilldown_sortby \"_key\"")); +}