[Groonga-commit] droonga/fluent-plugin-droonga at 3270b12 [master] Reduce indent level

Back to archive index

YUKI Hiroshi null+****@clear*****
Fri Jan 31 19:24:17 JST 2014


YUKI Hiroshi	2014-01-31 19:24:17 +0900 (Fri, 31 Jan 2014)

  New Revision: 3270b129efc45fca0b755c358e55fd9f15fb9382
  https://github.com/droonga/fluent-plugin-droonga/commit/3270b129efc45fca0b755c358e55fd9f15fb9382

  Message:
    Reduce indent level

  Modified files:
    test/unit/plugin/distributor/search_planner/test_group_by.rb
    test/unit/plugin/distributor/search_planner/test_output.rb
    test/unit/plugin/distributor/search_planner/test_sort_by.rb

  Modified: test/unit/plugin/distributor/search_planner/test_group_by.rb (+495 -495)
===================================================================
--- test/unit/plugin/distributor/search_planner/test_group_by.rb    2014-01-31 19:20:51 +0900 (97d60df)
+++ test/unit/plugin/distributor/search_planner/test_group_by.rb    2014-01-31 19:24:17 +0900 (6620fb6)
@@ -16,558 +16,558 @@
 class DistributedSearchPlannerGroupByTest < Test::Unit::TestCase
   include DistributedSearchPlannerHelper
 
-    class SimpleTest < self
-      def setup
-        @output = {
-          "elements"   => ["records"],
-          "attributes" => ["_nsubrecs", "_key"],
-          "limit"      => 1,
-        }
-        @group_by = "family_name"
-        @request = {
-          "type"    => "search",
-          "dataset" => "Droonga",
-          "body"    => {
-            "queries" => {
-              "families" => {
-                "source"  => "User",
-                "groupBy" => @group_by,
-                "output"  => @output,
-              },
+  class SimpleTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => ["_nsubrecs", "_key"],
+        "limit"      => 1,
+      }
+      @group_by = "family_name"
+      @request = {
+        "type"    => "search",
+        "dataset" => "Droonga",
+        "body"    => {
+          "queries" => {
+            "families" => {
+              "source"  => "User",
+              "groupBy" => @group_by,
+              "output"  => @output,
             },
           },
-        }
-      end
-
-      def test_dependencies
-        reduce_inputs = ["errors", "families"]
-        gather_inputs = ["errors_reduced", "families_reduced"]
-        assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                     dependencies)
-      end
-
-      def test_broadcast_body
-        changed_output_parameters = {
-          "unifiable" => true,
-        }
-        assert_equal({
-                       "queries" => {
-                         "families" => {
-                           "source"  => "User",
-                           "groupBy" => @group_by,
-                           "output"  => @output.merge(changed_output_parameters),
-                         },
+        },
+      }
+    end
+
+    def test_dependencies
+      reduce_inputs = ["errors", "families"]
+      gather_inputs = ["errors_reduced", "families_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
+
+    def test_broadcast_body
+      changed_output_parameters = {
+        "unifiable" => true,
+      }
+      assert_equal({
+                     "queries" => {
+                       "families" => {
+                         "source"  => "User",
+                         "groupBy" => @group_by,
+                         "output"  => @output.merge(changed_output_parameters),
                        },
                      },
-                     broadcast_message["body"])
-      end
-
-      def test_reduce_body
-        assert_equal({
-                       "families_reduced" => {
-                         "records" => {
-                           "type"      => "sort",
-                           "operators" => [],
-                          "key_column" => 1,
-                           "limit"     => 1,
-                         },
+                   },
+                   broadcast_message["body"])
+    end
+
+    def test_reduce_body
+      assert_equal({
+                     "families_reduced" => {
+                       "records" => {
+                         "type"      => "sort",
+                         "operators" => [],
+                        "key_column" => 1,
+                         "limit"     => 1,
                        },
                      },
-                     reduce_message["body"]["families"])
-      end
-
-      def test_gather_records
-        assert_equal({
-                       "elements" => {
-                         "records" => {
-                           "attributes" => ["_nsubrecs", "_key"],
-                           "limit"      => 1,
-                         },
+                   },
+                   reduce_message["body"]["families"])
+    end
+
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["_nsubrecs", "_key"],
+                         "limit"      => 1,
                        },
-                       "output" => "families",
                      },
-                     gather_message["body"]["families_reduced"])
-      end
+                     "output" => "families",
+                   },
+                   gather_message["body"]["families_reduced"])
     end
-
-    class WithHashAttributesTest < self
-      def setup
-        @output = {
-          "elements"   => ["records"],
-          "attributes" => {
-            "family_name" => "_key",
-            "count"       => { "source" => "_nsubrecs" },
-          },
-          "limit"      => 1,
-        }
-        @group_by = "family_name"
-        @request = {
-          "type"    => "search",
-          "dataset" => "Droonga",
-          "body"    => {
-            "queries" => {
-              "families" => {
-                "source"  => "User",
-                "groupBy" => @group_by,
-                "output"  => @output,
-              },
+  end
+
+  class WithHashAttributesTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => {
+          "family_name" => "_key",
+          "count"       => { "source" => "_nsubrecs" },
+        },
+        "limit"      => 1,
+      }
+      @group_by = "family_name"
+      @request = {
+        "type"    => "search",
+        "dataset" => "Droonga",
+        "body"    => {
+          "queries" => {
+            "families" => {
+              "source"  => "User",
+              "groupBy" => @group_by,
+              "output"  => @output,
             },
           },
-        }
-      end
-
-      def test_dependencies
-        reduce_inputs = ["errors", "families"]
-        gather_inputs = ["errors_reduced", "families_reduced"]
-        assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                     dependencies)
-      end
-
-      def test_broadcast_body
-        changed_output_parameters = {
-          "attributes" => [
-            { "label" => "family_name", "source" => "_key" },
-            { "label" => "count",       "source" => "_nsubrecs" },
-          ],
-          "unifiable" => true,
-        }
-        assert_equal({
-                       "queries" => {
-                         "families" => {
-                           "source"  => "User",
-                           "groupBy" => @group_by,
-                           "output"  => @output.merge(changed_output_parameters),
-                         },
+        },
+      }
+    end
+
+    def test_dependencies
+      reduce_inputs = ["errors", "families"]
+      gather_inputs = ["errors_reduced", "families_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
+
+    def test_broadcast_body
+      changed_output_parameters = {
+        "attributes" => [
+          { "label" => "family_name", "source" => "_key" },
+          { "label" => "count",       "source" => "_nsubrecs" },
+        ],
+        "unifiable" => true,
+      }
+      assert_equal({
+                     "queries" => {
+                       "families" => {
+                         "source"  => "User",
+                         "groupBy" => @group_by,
+                         "output"  => @output.merge(changed_output_parameters),
                        },
                      },
-                     broadcast_message["body"])
-      end
-
-      def test_reduce_body
-        assert_equal({
-                       "families_reduced" => {
-                         "records" => {
-                           "type"       => "sort",
-                           "operators"  => [],
-                           "key_column" => 0,
-                           "limit"      => 1,
-                         },
+                   },
+                   broadcast_message["body"])
+    end
+
+    def test_reduce_body
+      assert_equal({
+                     "families_reduced" => {
+                       "records" => {
+                         "type"       => "sort",
+                         "operators"  => [],
+                         "key_column" => 0,
+                         "limit"      => 1,
                        },
                      },
-                     reduce_message["body"]["families"])
-      end
-
-      def test_gather_records
-        assert_equal({
-                       "elements" => {
-                         "records" => {
-                           "attributes" => ["family_name", "count"],
-                           "limit"      => 1,
-                         },
+                   },
+                   reduce_message["body"]["families"])
+    end
+
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["family_name", "count"],
+                         "limit"      => 1,
                        },
-                       "output" => "families",
                      },
-                     gather_message["body"]["families_reduced"])
-      end
+                     "output" => "families",
+                   },
+                   gather_message["body"]["families_reduced"])
     end
-
-    class WithHashAttributesMissingKeyTest < self
-      def setup
-        @output = {
-          "elements"   => ["records"],
-          "attributes" => {
-            "count"       => { "source" => "_nsubrecs" },
-          },
-          "limit"      => 1,
-        }
-        @group_by = "family_name"
-        @request = {
-          "type"    => "search",
-          "dataset" => "Droonga",
-          "body"    => {
-            "queries" => {
-              "families" => {
-                "source"  => "User",
-                "groupBy" => @group_by,
-                "output"  => @output,
-              },
+  end
+
+  class WithHashAttributesMissingKeyTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => {
+          "count"       => { "source" => "_nsubrecs" },
+        },
+        "limit"      => 1,
+      }
+      @group_by = "family_name"
+      @request = {
+        "type"    => "search",
+        "dataset" => "Droonga",
+        "body"    => {
+          "queries" => {
+            "families" => {
+              "source"  => "User",
+              "groupBy" => @group_by,
+              "output"  => @output,
             },
           },
-        }
-      end
-
-      def test_dependencies
-        reduce_inputs = ["errors", "families"]
-        gather_inputs = ["errors_reduced", "families_reduced"]
-        assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                     dependencies)
-      end
-
-      def test_broadcast_body
-        changed_output_parameters = {
-          "attributes" => [
-            { "label" => "count", "source" => "_nsubrecs" },
-            "_key",
-          ],
-          "unifiable" => true,
-        }
-        assert_equal({
-                       "queries" => {
-                         "families" => {
-                           "source"  => "User",
-                           "groupBy" => @group_by,
-                           "output"  => @output.merge(changed_output_parameters),
-                         },
+        },
+      }
+    end
+
+    def test_dependencies
+      reduce_inputs = ["errors", "families"]
+      gather_inputs = ["errors_reduced", "families_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
+
+    def test_broadcast_body
+      changed_output_parameters = {
+        "attributes" => [
+          { "label" => "count", "source" => "_nsubrecs" },
+          "_key",
+        ],
+        "unifiable" => true,
+      }
+      assert_equal({
+                     "queries" => {
+                       "families" => {
+                         "source"  => "User",
+                         "groupBy" => @group_by,
+                         "output"  => @output.merge(changed_output_parameters),
                        },
                      },
-                     broadcast_message["body"])
-      end
-
-      def test_reduce_body
-        assert_equal({
-                       "families_reduced" => {
-                         "records" => {
-                           "type"       => "sort",
-                           "operators"  => [],
-                           "key_column" => 1,
-                           "limit"      => 1,
-                         },
+                   },
+                   broadcast_message["body"])
+    end
+
+    def test_reduce_body
+      assert_equal({
+                     "families_reduced" => {
+                       "records" => {
+                         "type"       => "sort",
+                         "operators"  => [],
+                         "key_column" => 1,
+                         "limit"      => 1,
                        },
                      },
-                     reduce_message["body"]["families"])
-      end
-
-      def test_gather_records
-        assert_equal({
-                       "elements" => {
-                         "records" => {
-                           "attributes" => ["count"],
-                           "limit"      => 1,
-                         },
+                   },
+                   reduce_message["body"]["families"])
+    end
+
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["count"],
+                         "limit"      => 1,
                        },
-                       "output" => "families",
                      },
-                     gather_message["body"]["families_reduced"])
-      end
-    end
-
-    class WithComplexAttributesArrayTest < self
-      def setup
-        @output = {
-          "elements"   => ["records"],
-          "attributes" => [
-            { "label" => "family_name", "source" => "_key" },
-            { "label" => "count",       "source" => "_nsubrecs" },
-          ],
-          "limit"      => 1,
-        }
-        @group_by = "family_name"
-        @request = {
-          "type"    => "search",
-          "dataset" => "Droonga",
-          "body"    => {
-            "queries" => {
-              "families" => {
-                "source"  => "User",
-                "groupBy" => @group_by,
-                "output"  => @output,
-              },
+                     "output" => "families",
+                   },
+                   gather_message["body"]["families_reduced"])
+    end
+  end
+
+  class WithComplexAttributesArrayTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => [
+          { "label" => "family_name", "source" => "_key" },
+          { "label" => "count",       "source" => "_nsubrecs" },
+        ],
+        "limit"      => 1,
+      }
+      @group_by = "family_name"
+      @request = {
+        "type"    => "search",
+        "dataset" => "Droonga",
+        "body"    => {
+          "queries" => {
+            "families" => {
+              "source"  => "User",
+              "groupBy" => @group_by,
+              "output"  => @output,
             },
           },
-        }
-      end
-
-      def test_dependencies
-        reduce_inputs = ["errors", "families"]
-        gather_inputs = ["errors_reduced", "families_reduced"]
-        assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                     dependencies)
-      end
-
-      def test_broadcast_body
-        changed_output_parameters = {
-          "unifiable" => true,
-        }
-        assert_equal({
-                       "queries" => {
-                         "families" => {
-                           "source"  => "User",
-                           "groupBy" => @group_by,
-                           "output"  => @output.merge(changed_output_parameters),
-                         },
+        },
+      }
+    end
+
+    def test_dependencies
+      reduce_inputs = ["errors", "families"]
+      gather_inputs = ["errors_reduced", "families_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
+
+    def test_broadcast_body
+      changed_output_parameters = {
+        "unifiable" => true,
+      }
+      assert_equal({
+                     "queries" => {
+                       "families" => {
+                         "source"  => "User",
+                         "groupBy" => @group_by,
+                         "output"  => @output.merge(changed_output_parameters),
                        },
                      },
-                     broadcast_message["body"])
-      end
-
-      def test_reduce_body
-        assert_equal({
-                       "families_reduced" => {
-                         "records" => {
-                           "type"       => "sort",
-                           "operators"  => [],
-                           "key_column" => 0,
-                           "limit"      => 1,
-                         },
+                   },
+                   broadcast_message["body"])
+    end
+
+    def test_reduce_body
+      assert_equal({
+                     "families_reduced" => {
+                       "records" => {
+                         "type"       => "sort",
+                         "operators"  => [],
+                         "key_column" => 0,
+                         "limit"      => 1,
                        },
                      },
-                     reduce_message["body"]["families"])
-      end
-
-      def test_gather_records
-        assert_equal({
-                       "elements" => {
-                         "records" => {
-                           "attributes" => ["family_name", "count"],
-                           "limit"      => 1,
-                         },
+                   },
+                   reduce_message["body"]["families"])
+    end
+
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["family_name", "count"],
+                         "limit"      => 1,
                        },
-                       "output" => "families",
                      },
-                     gather_message["body"]["families_reduced"])
-      end
-    end
-
-    class WithComplexAttributesArrayMissingKeyTest < self
-      def setup
-        @output = {
-          "elements"   => ["records"],
-          "attributes" => [
-            { "label" => "count", "source" => "_nsubrecs" },
-          ],
-          "limit"      => 1,
-        }
-        @group_by = "family_name"
-        @request = {
-          "type"    => "search",
-          "dataset" => "Droonga",
-          "body"    => {
-            "queries" => {
-              "families" => {
-                "source"  => "User",
-                "groupBy" => @group_by,
-                "output"  => @output,
-              },
+                     "output" => "families",
+                   },
+                   gather_message["body"]["families_reduced"])
+    end
+  end
+
+  class WithComplexAttributesArrayMissingKeyTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => [
+          { "label" => "count", "source" => "_nsubrecs" },
+        ],
+        "limit"      => 1,
+      }
+      @group_by = "family_name"
+      @request = {
+        "type"    => "search",
+        "dataset" => "Droonga",
+        "body"    => {
+          "queries" => {
+            "families" => {
+              "source"  => "User",
+              "groupBy" => @group_by,
+              "output"  => @output,
             },
           },
-        }
-      end
-
-      def test_dependencies
-        reduce_inputs = ["errors", "families"]
-        gather_inputs = ["errors_reduced", "families_reduced"]
-        assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                     dependencies)
-      end
-
-      def test_broadcast_body
-        changed_output_parameters = {
-          "attributes" => [
-            { "label" => "count", "source" => "_nsubrecs" },
-            "_key",
-          ],
-          "unifiable"  => true,
-        }
-        assert_equal({
-                       "queries" => {
-                         "families" => {
-                           "source"  => "User",
-                           "groupBy" => @group_by,
-                           "output"  => @output.merge(changed_output_parameters),
-                         },
+        },
+      }
+    end
+
+    def test_dependencies
+      reduce_inputs = ["errors", "families"]
+      gather_inputs = ["errors_reduced", "families_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
+
+    def test_broadcast_body
+      changed_output_parameters = {
+        "attributes" => [
+          { "label" => "count", "source" => "_nsubrecs" },
+          "_key",
+        ],
+        "unifiable"  => true,
+      }
+      assert_equal({
+                     "queries" => {
+                       "families" => {
+                         "source"  => "User",
+                         "groupBy" => @group_by,
+                         "output"  => @output.merge(changed_output_parameters),
                        },
                      },
-                     broadcast_message["body"])
-      end
-
-      def test_reduce_body
-        assert_equal({
-                       "families_reduced" => {
-                         "records" => {
-                           "type"       => "sort",
-                           "operators"  => [],
-                           "key_column" => 1,
-                           "limit"      => 1,
-                         },
+                   },
+                   broadcast_message["body"])
+    end
+
+    def test_reduce_body
+      assert_equal({
+                     "families_reduced" => {
+                       "records" => {
+                         "type"       => "sort",
+                         "operators"  => [],
+                         "key_column" => 1,
+                         "limit"      => 1,
                        },
                      },
-                     reduce_message["body"]["families"])
-      end
-
-      def test_gather_records
-        assert_equal({
-                       "elements" => {
-                         "records" => {
-                           "attributes" => ["count"],
-                           "limit"      => 1,
-                         },
+                   },
+                   reduce_message["body"]["families"])
+    end
+
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["count"],
+                         "limit"      => 1,
                        },
-                       "output" => "families",
                      },
-                     gather_message["body"]["families_reduced"])
-      end
-    end
-
-    class SubRecodsTest < self
-      def setup
-        @output = {
-          "elements"   => ["records"],
-          "attributes" => [
-            "_key",
-            "_nsubrecs",
-            { "label" => "users",
-              "source" => "_subrecs",
-              "attributes" => ["_key"] },
-          ],
-          "limit"      => 1,
-        }
-        @group_by = {
-          "key"            => "family_name",
-          "maxNSubRecords" => 3,
-        }
-        @request = {
-          "type"    => "search",
-          "dataset" => "Droonga",
-          "body"    => {
-            "queries" => {
-              "families" => {
-                "source"  => "User",
-                "groupBy" => @group_by,
-                "output"  => @output,
-              },
+                     "output" => "families",
+                   },
+                   gather_message["body"]["families_reduced"])
+    end
+  end
+
+  class SubRecodsTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => [
+          "_key",
+          "_nsubrecs",
+          { "label" => "users",
+            "source" => "_subrecs",
+            "attributes" => ["_key"] },
+        ],
+        "limit"      => 1,
+      }
+      @group_by = {
+        "key"            => "family_name",
+        "maxNSubRecords" => 3,
+      }
+      @request = {
+        "type"    => "search",
+        "dataset" => "Droonga",
+        "body"    => {
+          "queries" => {
+            "families" => {
+              "source"  => "User",
+              "groupBy" => @group_by,
+              "output"  => @output,
             },
           },
-        }
-      end
-
-      def test_dependencies
-        reduce_inputs = ["errors", "families"]
-        gather_inputs = ["errors_reduced", "families_reduced"]
-        assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                     dependencies)
-      end
-
-      def test_broadcast_body
-        changed_output_parameters = {
-          "unifiable"  => true,
-        }
-        assert_equal({
-                       "queries" => {
-                         "families" => {
-                           "source"  => "User",
-                           "groupBy" => @group_by,
-                           "output"  => @output.merge(changed_output_parameters),
-                         },
+        },
+      }
+    end
+
+    def test_dependencies
+      reduce_inputs = ["errors", "families"]
+      gather_inputs = ["errors_reduced", "families_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
+
+    def test_broadcast_body
+      changed_output_parameters = {
+        "unifiable"  => true,
+      }
+      assert_equal({
+                     "queries" => {
+                       "families" => {
+                         "source"  => "User",
+                         "groupBy" => @group_by,
+                         "output"  => @output.merge(changed_output_parameters),
                        },
                      },
-                     broadcast_message["body"])
-      end
-
-      def test_reduce_body
-        assert_equal({
-                       "families_reduced" => {
-                         "records" => {
-                           "type"       => "sort",
-                           "operators"  => [],
-                           "key_column" => 0,
-                           "limit"      => 1,
-                         },
+                   },
+                   broadcast_message["body"])
+    end
+
+    def test_reduce_body
+      assert_equal({
+                     "families_reduced" => {
+                       "records" => {
+                         "type"       => "sort",
+                         "operators"  => [],
+                         "key_column" => 0,
+                         "limit"      => 1,
                        },
                      },
-                     reduce_message["body"]["families"])
-      end
-
-      def test_gather_records
-        assert_equal({
-                       "elements" => {
-                         "records" => {
-                           "attributes" => ["_key", "_nsubrecs", "users"],
-                           "limit"      => 1,
-                         },
+                   },
+                   reduce_message["body"]["families"])
+    end
+
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["_key", "_nsubrecs", "users"],
+                         "limit"      => 1,
                        },
-                       "output" => "families",
                      },
-                     gather_message["body"]["families_reduced"])
-      end
-    end
-
-    class CountOnlyTest < self
-      def setup
-        @output = {
-          "elements" => ["count"],
-        }
-        @group_by = "family_name"
-        @request = {
-          "type"    => "search",
-          "dataset" => "Droonga",
-          "body"    => {
-            "queries" => {
-              "families" => {
-                "source"  => "User",
-                "groupBy" => @group_by,
-                "output"  => @output,
-              },
+                     "output" => "families",
+                   },
+                   gather_message["body"]["families_reduced"])
+    end
+  end
+
+  class CountOnlyTest < self
+    def setup
+      @output = {
+        "elements" => ["count"],
+      }
+      @group_by = "family_name"
+      @request = {
+        "type"    => "search",
+        "dataset" => "Droonga",
+        "body"    => {
+          "queries" => {
+            "families" => {
+              "source"  => "User",
+              "groupBy" => @group_by,
+              "output"  => @output,
             },
           },
-        }
-      end
-
-      def test_dependencies
-        reduce_inputs = ["errors", "families"]
-        gather_inputs = ["errors_reduced", "families_reduced"]
-        assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                     dependencies)
-      end
-
-      def test_broadcast_body
-        changed_output_parameters = {
-          "elements"   => ["count", "records"],
-          "attributes" => ["_key"],
-          "limit"      => -1,
-          "unifiable"  => true,
-        }
-        assert_equal({
-                       "queries" => {
-                         "families" => {
-                           "source"  => "User",
-                           "groupBy" => @group_by,
-                           "output"  => @output.merge(changed_output_parameters),
-                         },
+        },
+      }
+    end
+
+    def test_dependencies
+      reduce_inputs = ["errors", "families"]
+      gather_inputs = ["errors_reduced", "families_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
+
+    def test_broadcast_body
+      changed_output_parameters = {
+        "elements"   => ["count", "records"],
+        "attributes" => ["_key"],
+        "limit"      => -1,
+        "unifiable"  => true,
+      }
+      assert_equal({
+                     "queries" => {
+                       "families" => {
+                         "source"  => "User",
+                         "groupBy" => @group_by,
+                         "output"  => @output.merge(changed_output_parameters),
                        },
                      },
-                     broadcast_message["body"])
-      end
-
-      def test_reduce_body
-        assert_equal({
-                       "families_reduced" => {
-                         "count"   => {
-                           "type" => "sum",
-                         },
-                         "records" => {
-                           "type"       => "sort",
-                           "operators"  => [],
-                           "key_column" => 0,
-                           "limit"      => -1,
-                         },
+                   },
+                   broadcast_message["body"])
+    end
+
+    def test_reduce_body
+      assert_equal({
+                     "families_reduced" => {
+                       "count"   => {
+                         "type" => "sum",
+                       },
+                       "records" => {
+                         "type"       => "sort",
+                         "operators"  => [],
+                         "key_column" => 0,
+                         "limit"      => -1,
                        },
                      },
-                     reduce_message["body"]["families"])
-      end
-
-      def test_gather_records
-        assert_equal({
-                       "elements" => {
-                         "count" => {
-                           "target" => "records",
-                         },
-                         "records" => {
-                           "no_output" => true,
-                         },
+                   },
+                   reduce_message["body"]["families"])
+    end
+
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "count" => {
+                         "target" => "records",
+                       },
+                       "records" => {
+                         "no_output" => true,
                        },
-                       "output" => "families",
                      },
-                     gather_message["body"]["families_reduced"])
-      end
+                     "output" => "families",
+                   },
+                   gather_message["body"]["families_reduced"])
     end
+  end
 end

  Modified: test/unit/plugin/distributor/search_planner/test_output.rb (+240 -240)
===================================================================
--- test/unit/plugin/distributor/search_planner/test_output.rb    2014-01-31 19:20:51 +0900 (db1a3d9)
+++ test/unit/plugin/distributor/search_planner/test_output.rb    2014-01-31 19:24:17 +0900 (811ed05)
@@ -16,41 +16,102 @@
 class DistributedSearchPlannerOutputTest < Test::Unit::TestCase
   include DistributedSearchPlannerHelper
 
-    class NoOutputTest < self
-      def setup
-        @request = {
-          "type"    => "search",
-          "dataset" => "Droonga",
-          "body"    => {
-            "queries" => {
-              "users" => {
-                "source" => "User",
+  class NoOutputTest < self
+    def setup
+      @request = {
+        "type"    => "search",
+        "dataset" => "Droonga",
+        "body"    => {
+          "queries" => {
+            "users" => {
+              "source" => "User",
+            },
+          },
+        },
+      }
+    end
+
+    def test_dependencies
+      reduce_inputs = ["errors"]
+      gather_inputs = ["errors_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
+
+    def test_broadcast_body
+      assert_equal({
+                     "queries" => {
+                       "users" => {
+                         "source" => "User",
+                       },
+                     },
+                   },
+                   broadcast_message["body"])
+    end
+  end
+
+  class NoLimitTest < self
+    def setup
+      @request = {
+        "type"    => "search",
+        "dataset" => "Droonga",
+        "body"    => {
+          "queries" => {
+            "users" => {
+              "source" => "User",
+              "output" => {
+                "format"   => "complex",
+                "elements" => ["count", "records"],
               },
             },
           },
-        }
-      end
+        },
+      }
+    end
 
-      def test_dependencies
-        reduce_inputs = ["errors"]
-        gather_inputs = ["errors_reduced"]
-        assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                     dependencies)
-      end
+    def test_dependencies
+      reduce_inputs = ["errors", "users"]
+      gather_inputs = ["errors_reduced", "users_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
 
-      def test_broadcast_body
-        assert_equal({
-                       "queries" => {
-                         "users" => {
-                           "source" => "User",
+    def test_broadcast_body
+      assert_equal({
+                     "queries" => {
+                       "users" => {
+                         "source" => "User",
+                         "output" => {
+                           "format"   => "simple",
+                           "elements" => ["count", "records"],
                          },
                        },
                      },
-                     broadcast_message["body"])
-      end
+                   },
+                   broadcast_message["body"])
     end
 
-    class NoLimitTest < self
+    def test_reduce_body
+      assert_equal({
+                     "users_reduced" => {
+                       "count" => {
+                         "type" => "sum",
+                       },
+                     },
+                   },
+                   reduce_message["body"]["users"])
+    end
+
+    def test_gather_body
+      assert_equal({
+                     "output" => "users",
+                   },
+                   gather_message["body"]["users_reduced"])
+    end
+  end
+
+  class ElementsTest < self
+    class CountTest < self
       def setup
         @request = {
           "type"    => "search",
@@ -60,8 +121,7 @@ class DistributedSearchPlannerOutputTest < Test::Unit::TestCase
               "users" => {
                 "source" => "User",
                 "output" => {
-                  "format"   => "complex",
-                  "elements" => ["count", "records"],
+                  "elements" => ["count"],
                 },
               },
             },
@@ -80,11 +140,10 @@ class DistributedSearchPlannerOutputTest < Test::Unit::TestCase
         assert_equal({
                        "queries" => {
                          "users" => {
-                           "source" => "User",
                            "output" => {
-                             "format"   => "simple",
-                             "elements" => ["count", "records"],
+                             "elements" => ["count"],
                            },
+                           "source" => "User",
                          },
                        },
                      },
@@ -110,145 +169,8 @@ class DistributedSearchPlannerOutputTest < Test::Unit::TestCase
       end
     end
 
-    class ElementsTest < self
-      class CountTest < self
-        def setup
-          @request = {
-            "type"    => "search",
-            "dataset" => "Droonga",
-            "body"    => {
-              "queries" => {
-                "users" => {
-                  "source" => "User",
-                  "output" => {
-                    "elements" => ["count"],
-                  },
-                },
-              },
-            },
-          }
-        end
-
-        def test_dependencies
-          reduce_inputs = ["errors", "users"]
-          gather_inputs = ["errors_reduced", "users_reduced"]
-          assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                       dependencies)
-        end
-
-        def test_broadcast_body
-          assert_equal({
-                         "queries" => {
-                           "users" => {
-                             "output" => {
-                               "elements" => ["count"],
-                             },
-                             "source" => "User",
-                           },
-                         },
-                       },
-                       broadcast_message["body"])
-        end
-
-        def test_reduce_body
-          assert_equal({
-                         "users_reduced" => {
-                           "count" => {
-                             "type" => "sum",
-                           },
-                         },
-                       },
-                       reduce_message["body"]["users"])
-        end
-
-        def test_gather_body
-          assert_equal({
-                         "output" => "users",
-                       },
-                       gather_message["body"]["users_reduced"])
-        end
-      end
-
-      class RecordsTest < self
-        def setup
-          @request = {
-            "type"    => "search",
-            "dataset" => "Droonga",
-            "body"    => {
-              "queries" => {
-                "users" => {
-                  "source" => "User",
-                  "output" => {
-                    "elements"   => ["records"],
-                    "attributes" => ["_key"],
-                    "limit"      => 1,
-                  },
-                },
-              },
-            },
-          }
-        end
-
-        def test_dependencies
-          reduce_inputs = ["errors", "users"]
-          gather_inputs = ["errors_reduced", "users_reduced"]
-          assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                       dependencies)
-        end
-
-        def test_broadcast_body
-          assert_equal({
-                         "queries" => {
-                           "users" => {
-                             "output" => {
-                               "elements"   => ["records"],
-                               "attributes" => ["_key"],
-                               "limit"      => 1,
-                             },
-                             "source" => "User",
-                           },
-                         },
-                       },
-                       broadcast_message["body"])
-        end
-
-        def test_reduce_body
-          assert_equal({
-                         "users_reduced" => {
-                           "records" => {
-                             "type"      => "sort",
-                             "operators" => [],
-                             "limit"     => 1,
-                           },
-                         },
-                       },
-                       reduce_message["body"]["users"])
-        end
-
-        def test_gather_body
-          assert_equal({
-                       "elements" => {
-                         "records" => {
-                           "attributes" => ["_key"],
-                           "limit"      => 1,
-                         },
-                       },
-                         "output" => "users",
-                       },
-                       gather_message["body"]["users_reduced"])
-        end
-      end
-    end
-
-    class FormatTest < self
+    class RecordsTest < self
       def setup
-        @output = {
-          "format"     => "complex",
-          "elements"   => ["records"],
-          "attributes" => ["_id"],
-          "offset"     => 0,
-          "limit"      => 10,
-        }
         @request = {
           "type"    => "search",
           "dataset" => "Droonga",
@@ -256,7 +178,11 @@ class DistributedSearchPlannerOutputTest < Test::Unit::TestCase
             "queries" => {
               "users" => {
                 "source" => "User",
-                "output" => @output,
+                "output" => {
+                  "elements"   => ["records"],
+                  "attributes" => ["_key"],
+                  "limit"      => 1,
+                },
               },
             },
           },
@@ -271,14 +197,15 @@ class DistributedSearchPlannerOutputTest < Test::Unit::TestCase
       end
 
       def test_broadcast_body
-        changed_output_parameters = {
-          "format" => "simple",
-        }
         assert_equal({
                        "queries" => {
                          "users" => {
+                           "output" => {
+                             "elements"   => ["records"],
+                             "attributes" => ["_key"],
+                             "limit"      => 1,
+                           },
                            "source" => "User",
-                           "output" => @output.merge(changed_output_parameters),
                          },
                        },
                      },
@@ -291,98 +218,171 @@ class DistributedSearchPlannerOutputTest < Test::Unit::TestCase
                          "records" => {
                            "type"      => "sort",
                            "operators" => [],
-                           "limit"     => 10,
+                           "limit"     => 1,
                          },
                        },
                      },
                      reduce_message["body"]["users"])
       end
 
-      def test_gather_records
+      def test_gather_body
         assert_equal({
-                       "elements" => {
-                         "records" => {
-                           "format"     => "complex",
-                           "attributes" => ["_id"],
-                           "limit"      => 10,
-                         },
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["_key"],
+                         "limit"      => 1,
                        },
+                     },
                        "output" => "users",
                      },
                      gather_message["body"]["users_reduced"])
       end
     end
+  end
 
-    class OffsetTest < self
-      def setup
-        @output = {
-          "elements"   => ["records"],
-          "attributes" => ["_key"],
-          "offset"     => 1,
-          "limit"      => 1,
-        }
-        @request = {
-          "type" => "search",
-          "dataset" => "Droonga",
-          "body" => {
-            "queries" => {
-              "users" => {
-                "source" => "User",
-                "output" => @output,
-              },
+  class FormatTest < self
+    def setup
+      @output = {
+        "format"     => "complex",
+        "elements"   => ["records"],
+        "attributes" => ["_id"],
+        "offset"     => 0,
+        "limit"      => 10,
+      }
+      @request = {
+        "type"    => "search",
+        "dataset" => "Droonga",
+        "body"    => {
+          "queries" => {
+            "users" => {
+              "source" => "User",
+              "output" => @output,
             },
           },
-        }
-      end
+        },
+      }
+    end
 
-      def test_dependencies
-        reduce_inputs = ["errors", "users"]
-        gather_inputs = ["errors_reduced", "users_reduced"]
-        assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                     dependencies)
-      end
+    def test_dependencies
+      reduce_inputs = ["errors", "users"]
+      gather_inputs = ["errors_reduced", "users_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
 
-      def test_broadcast_body
-        changed_output_parameters = {
-          "offset" => 0,
-          "limit"  => 2,
-        }
-        assert_equal({
-                       "queries" => {
-                         "users" => {
-                           "source" => "User",
-                           "output" => @output.merge(changed_output_parameters),
-                         },
+    def test_broadcast_body
+      changed_output_parameters = {
+        "format" => "simple",
+      }
+      assert_equal({
+                     "queries" => {
+                       "users" => {
+                         "source" => "User",
+                         "output" => @output.merge(changed_output_parameters),
                        },
                      },
-                     broadcast_message["body"])
-      end
+                   },
+                   broadcast_message["body"])
+    end
 
-      def test_reduce_body
-        assert_equal({
-                       "users_reduced" => {
-                         "records" => {
-                           "type"      => "sort",
-                           "operators" => [],
-                           "limit"     => 2,
-                         },
+    def test_reduce_body
+      assert_equal({
+                     "users_reduced" => {
+                       "records" => {
+                         "type"      => "sort",
+                         "operators" => [],
+                         "limit"     => 10,
                        },
                      },
-                     reduce_message["body"]["users"])
-      end
+                   },
+                   reduce_message["body"]["users"])
+    end
 
-      def test_gather_records
-        assert_equal({
-                       "elements" => {
-                         "records" => {
-                           "attributes" => ["_key"],
-                           "offset"     => 1,
-                           "limit"      => 1,
-                         },
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "format"     => "complex",
+                         "attributes" => ["_id"],
+                         "limit"      => 10,
                        },
-                       "output" => "users",
                      },
-                     gather_message["body"]["users_reduced"])
-      end
+                     "output" => "users",
+                   },
+                   gather_message["body"]["users_reduced"])
+    end
+  end
+
+  class OffsetTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => ["_key"],
+        "offset"     => 1,
+        "limit"      => 1,
+      }
+      @request = {
+        "type" => "search",
+        "dataset" => "Droonga",
+        "body" => {
+          "queries" => {
+            "users" => {
+              "source" => "User",
+              "output" => @output,
+            },
+          },
+        },
+      }
+    end
+
+    def test_dependencies
+      reduce_inputs = ["errors", "users"]
+      gather_inputs = ["errors_reduced", "users_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
+
+    def test_broadcast_body
+      changed_output_parameters = {
+        "offset" => 0,
+        "limit"  => 2,
+      }
+      assert_equal({
+                     "queries" => {
+                       "users" => {
+                         "source" => "User",
+                         "output" => @output.merge(changed_output_parameters),
+                       },
+                     },
+                   },
+                   broadcast_message["body"])
+    end
+
+    def test_reduce_body
+      assert_equal({
+                     "users_reduced" => {
+                       "records" => {
+                         "type"      => "sort",
+                         "operators" => [],
+                         "limit"     => 2,
+                       },
+                     },
+                   },
+                   reduce_message["body"]["users"])
+    end
+
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["_key"],
+                         "offset"     => 1,
+                         "limit"      => 1,
+                       },
+                     },
+                     "output" => "users",
+                   },
+                   gather_message["body"]["users_reduced"])
     end
+  end
 end

  Modified: test/unit/plugin/distributor/search_planner/test_sort_by.rb (+589 -589)
===================================================================
--- test/unit/plugin/distributor/search_planner/test_sort_by.rb    2014-01-31 19:20:51 +0900 (29a2cce)
+++ test/unit/plugin/distributor/search_planner/test_sort_by.rb    2014-01-31 19:24:17 +0900 (b542032)
@@ -16,238 +16,593 @@
 class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
   include DistributedSearchPlannerHelper
 
-    class SimpleTest < self
-      def setup
-        @output = {
-          "elements"   => ["records"],
-          "attributes" => ["_key"],
-          "limit"      => 1,
-        }
-        @request = {
-          "type" => "search",
-          "dataset" => "Droonga",
-          "body" => {
-            "queries" => {
-              "users" => {
-                "source" => "User",
-                "sortBy" => ["_key"],
-                "output" => @output,
-              },
+  class SimpleTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => ["_key"],
+        "limit"      => 1,
+      }
+      @request = {
+        "type" => "search",
+        "dataset" => "Droonga",
+        "body" => {
+          "queries" => {
+            "users" => {
+              "source" => "User",
+              "sortBy" => ["_key"],
+              "output" => @output,
             },
           },
-        }
-      end
+        },
+      }
+    end
 
-      def test_dependencies
-        reduce_inputs = ["errors", "users"]
-        gather_inputs = ["errors_reduced", "users_reduced"]
-        assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                     dependencies)
-      end
+    def test_dependencies
+      reduce_inputs = ["errors", "users"]
+      gather_inputs = ["errors_reduced", "users_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
 
-      def test_broadcast_body
-        assert_equal({
-                       "queries" => {
-                         "users" => {
-                           "source" => "User",
-                           "sortBy" => ["_key"],
-                           "output" => @output,
-                         },
+    def test_broadcast_body
+      assert_equal({
+                     "queries" => {
+                       "users" => {
+                         "source" => "User",
+                         "sortBy" => ["_key"],
+                         "output" => @output,
                        },
                      },
-                     broadcast_message["body"])
-      end
+                   },
+                   broadcast_message["body"])
+    end
 
-      def test_reduce_body
-        assert_equal({
-                       "users_reduced" => {
-                         "records" => {
-                           "type"      => "sort",
-                           "operators" => [
-                             { "column" => 0, "operator" => "<" },
-                           ],
-                           "limit"     => 1,
-                         },
+    def test_reduce_body
+      assert_equal({
+                     "users_reduced" => {
+                       "records" => {
+                         "type"      => "sort",
+                         "operators" => [
+                           { "column" => 0, "operator" => "<" },
+                         ],
+                         "limit"     => 1,
                        },
                      },
-                     reduce_message["body"]["users"])
-      end
+                   },
+                   reduce_message["body"]["users"])
+    end
 
-      def test_gather_records
-        assert_equal({
-                       "elements" => {
-                         "records" => {
-                           "attributes" => ["_key"],
-                           "limit"      => 1,
-                         },
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["_key"],
+                         "limit"      => 1,
                        },
-                       "output" => "users",
                      },
-                     gather_message["body"]["users_reduced"])
-      end
+                     "output" => "users",
+                   },
+                   gather_message["body"]["users_reduced"])
+    end
+  end
+
+  class SimpleHiddenColumnTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => ["_key"],
+        "limit"      => 1,
+      }
+      @request = {
+        "type" => "search",
+        "dataset" => "Droonga",
+        "body" => {
+          "queries" => {
+            "users" => {
+              "source" => "User",
+              "sortBy" => ["name"],
+              "output" => @output,
+            },
+          },
+        },
+      }
     end
 
-    class SimpleHiddenColumnTest < self
-      def setup
-        @output = {
-          "elements"   => ["records"],
-          "attributes" => ["_key"],
-          "limit"      => 1,
-        }
-        @request = {
-          "type" => "search",
-          "dataset" => "Droonga",
-          "body" => {
-            "queries" => {
-              "users" => {
-                "source" => "User",
-                "sortBy" => ["name"],
-                "output" => @output,
-              },
+    def test_dependencies
+      reduce_inputs = ["errors", "users"]
+      gather_inputs = ["errors_reduced", "users_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
+
+    def test_broadcast_body
+      changed_output_parameters = {
+        "attributes" => ["_key", "name"],
+      }
+      assert_equal({
+                     "queries" => {
+                       "users" => {
+                         "source" => "User",
+                         "sortBy" => ["name"],
+                         "output" => @output.merge(changed_output_parameters),
+                       },
+                     },
+                   },
+                   broadcast_message["body"])
+    end
+
+    def test_reduce_body
+      assert_equal({
+                     "users_reduced" => {
+                       "records" => {
+                         "type"      => "sort",
+                         "operators" => [
+                           { "column" => 1, "operator" => "<" },
+                         ],
+                         "limit"     => 1,
+                       },
+                     },
+                   },
+                   reduce_message["body"]["users"])
+    end
+
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["_key"],
+                         "limit"      => 1,
+                       },
+                     },
+                     "output" => "users",
+                   },
+                   gather_message["body"]["users_reduced"])
+    end
+  end
+
+  class ComplexTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => ["_key"],
+        "limit"      => 1,
+      }
+      @sort_by = {
+        "keys" => ["_key"],
+      }
+      @request = {
+        "type" => "search",
+        "dataset" => "Droonga",
+        "body" => {
+          "queries" => {
+            "users" => {
+              "source" => "User",
+              "sortBy" => @sort_by,
+              "output" => @output,
             },
           },
-        }
-      end
+        },
+      }
+    end
 
-      def test_dependencies
-        reduce_inputs = ["errors", "users"]
-        gather_inputs = ["errors_reduced", "users_reduced"]
-        assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                     dependencies)
-      end
+    def test_dependencies
+      reduce_inputs = ["errors", "users"]
+      gather_inputs = ["errors_reduced", "users_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
 
-      def test_broadcast_body
-        changed_output_parameters = {
-          "attributes" => ["_key", "name"],
-        }
-        assert_equal({
-                       "queries" => {
-                         "users" => {
-                           "source" => "User",
-                           "sortBy" => ["name"],
-                           "output" => @output.merge(changed_output_parameters),
-                         },
+    def test_broadcast_body
+      changed_sort_by_parameters = {
+        "offset" => 0,
+        "limit"  => 1,
+      }
+      assert_equal({
+                     "queries" => {
+                       "users" => {
+                         "source" => "User",
+                         "sortBy" => @sort_by.merge(changed_sort_by_parameters),
+                         "output" => @output,
                        },
                      },
-                     broadcast_message["body"])
-      end
+                   },
+                   broadcast_message["body"])
+    end
 
-      def test_reduce_body
-        assert_equal({
-                       "users_reduced" => {
-                         "records" => {
-                           "type"      => "sort",
-                           "operators" => [
-                             { "column" => 1, "operator" => "<" },
-                           ],
-                           "limit"     => 1,
-                         },
+    def test_reduce_body
+      assert_equal({
+                     "users_reduced" => {
+                       "records" => {
+                         "type"      => "sort",
+                         "operators" => [
+                           { "column" => 0, "operator" => "<" },
+                         ],
+                         "limit"     => 1,
                        },
                      },
-                     reduce_message["body"]["users"])
-      end
+                   },
+                   reduce_message["body"]["users"])
+    end
 
-      def test_gather_records
-        assert_equal({
-                       "elements" => {
-                         "records" => {
-                           "attributes" => ["_key"],
-                           "limit"      => 1,
-                         },
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["_key"],
+                         "limit"      => 1,
                        },
-                       "output" => "users",
                      },
-                     gather_message["body"]["users_reduced"])
-      end
+                     "output" => "users",
+                   },
+                   gather_message["body"]["users_reduced"])
+    end
+  end
+
+  class ComplexHiddenColumnTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => ["_key"],
+        "limit"      => 1,
+      }
+      @sort_by = {
+        "keys" => ["name"],
+      }
+      @request = {
+        "type" => "search",
+        "dataset" => "Droonga",
+        "body" => {
+          "queries" => {
+            "users" => {
+              "source" => "User",
+              "sortBy" => @sort_by,
+              "output" => @output,
+            },
+          },
+        },
+      }
     end
 
-    class ComplexTest < self
-      def setup
-        @output = {
-          "elements"   => ["records"],
-          "attributes" => ["_key"],
-          "limit"      => 1,
-        }
-        @sort_by = {
-          "keys" => ["_key"],
-        }
-        @request = {
-          "type" => "search",
-          "dataset" => "Droonga",
-          "body" => {
-            "queries" => {
-              "users" => {
-                "source" => "User",
-                "sortBy" => @sort_by,
-                "output" => @output,
-              },
+    def test_dependencies
+      reduce_inputs = ["errors", "users"]
+      gather_inputs = ["errors_reduced", "users_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
+
+    def test_broadcast_body
+      changed_sort_by_parameters = {
+        "offset" => 0,
+        "limit"  => 1,
+      }
+      changed_output_parameters = {
+        "attributes" => ["_key", "name"],
+      }
+      assert_equal({
+                     "queries" => {
+                       "users" => {
+                         "source" => "User",
+                         "sortBy" => @sort_by.merge(changed_sort_by_parameters),
+                         "output" => @output.merge(changed_output_parameters),
+                       },
+                     },
+                   },
+                   broadcast_message["body"])
+    end
+
+    def test_reduce_body
+      assert_equal({
+                     "users_reduced" => {
+                       "records" => {
+                         "type"      => "sort",
+                         "operators" => [
+                           { "column" => 1, "operator" => "<" },
+                         ],
+                         "limit"     => 1,
+                       },
+                     },
+                   },
+                   reduce_message["body"]["users"])
+    end
+
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["_key"],
+                         "limit"      => 1,
+                       },
+                     },
+                     "output" => "users",
+                   },
+                   gather_message["body"]["users_reduced"])
+    end
+  end
+
+  class WithHashAttributesTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => {
+          "id"   => "_key",
+          "name" => { "source" => "name" },
+        },
+        "limit"      => 1,
+      }
+      @sort_by = {
+        "keys" => ["hidden"],
+      }
+      @request = {
+        "type" => "search",
+        "dataset" => "Droonga",
+        "body" => {
+          "queries" => {
+            "users" => {
+              "source" => "User",
+              "sortBy" => @sort_by,
+              "output" => @output,
             },
           },
-        }
-      end
+        },
+      }
+    end
 
-      def test_dependencies
-        reduce_inputs = ["errors", "users"]
-        gather_inputs = ["errors_reduced", "users_reduced"]
-        assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                     dependencies)
-      end
+    def test_dependencies
+      reduce_inputs = ["errors", "users"]
+      gather_inputs = ["errors_reduced", "users_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
 
-      def test_broadcast_body
-        changed_sort_by_parameters = {
-          "offset" => 0,
-          "limit"  => 1,
-        }
-        assert_equal({
-                       "queries" => {
-                         "users" => {
-                           "source" => "User",
-                           "sortBy" => @sort_by.merge(changed_sort_by_parameters),
-                           "output" => @output,
-                         },
+    def test_broadcast_body
+      changed_sort_by_parameters = {
+        "offset" => 0,
+        "limit"  => 1,
+      }
+      changed_output_parameters = {
+        "attributes" => [
+          { "label" => "id",   "source" => "_key" },
+          { "label" => "name", "source" => "name" },
+          "hidden",
+        ],
+      }
+      assert_equal({
+                     "queries" => {
+                       "users" => {
+                         "source" => "User",
+                         "sortBy" => @sort_by.merge(changed_sort_by_parameters),
+                         "output" => @output.merge(changed_output_parameters),
                        },
                      },
-                     broadcast_message["body"])
-      end
+                   },
+                   broadcast_message["body"])
+    end
 
-      def test_reduce_body
-        assert_equal({
-                       "users_reduced" => {
-                         "records" => {
-                           "type"      => "sort",
-                           "operators" => [
-                             { "column" => 0, "operator" => "<" },
-                           ],
-                           "limit"     => 1,
-                         },
+    def test_reduce_body
+      assert_equal({
+                     "users_reduced" => {
+                       "records" => {
+                         "type"      => "sort",
+                         "operators" => [
+                           { "column" => 2, "operator" => "<" },
+                         ],
+                         "limit"     => 1,
                        },
                      },
-                     reduce_message["body"]["users"])
-      end
+                   },
+                   reduce_message["body"]["users"])
+    end
 
-      def test_gather_records
-        assert_equal({
-                       "elements" => {
-                         "records" => {
-                           "attributes" => ["_key"],
-                           "limit"      => 1,
-                         },
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["id", "name"],
+                         "limit"      => 1,
                        },
-                       "output" => "users",
                      },
-                     gather_message["body"]["users_reduced"])
-      end
+                     "output" => "users",
+                   },
+                   gather_message["body"]["users_reduced"])
+    end
+  end
+
+  class WithComplexAttributesArrayTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => [
+          { "label" => "id",        "source" => "_key" },
+          { "label" => "real_name", "source" => "name" },
+        ],
+        "limit"      => 1,
+      }
+      @sort_by = {
+        "keys" => ["name"],
+      }
+      @request = {
+        "type" => "search",
+        "dataset" => "Droonga",
+        "body" => {
+          "queries" => {
+            "users" => {
+              "source" => "User",
+              "sortBy" => @sort_by,
+              "output" => @output,
+            },
+          },
+        },
+      }
+    end
+
+    def test_dependencies
+      reduce_inputs = ["errors", "users"]
+      gather_inputs = ["errors_reduced", "users_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
     end
 
-    class ComplexHiddenColumnTest < self
+    def test_broadcast_body
+      changed_sort_by_parameters = {
+        "offset" => 0,
+        "limit"  => 1,
+      }
+      changed_output_parameters = {
+        "attributes" => [
+          { "label" => "id",        "source" => "_key" },
+          { "label" => "real_name", "source" => "name" },
+        ],
+      }
+      assert_equal({
+                     "queries" => {
+                       "users" => {
+                         "source" => "User",
+                         "sortBy" => @sort_by.merge(changed_sort_by_parameters),
+                         "output" => @output.merge(changed_output_parameters),
+                       },
+                     },
+                   },
+                   broadcast_message["body"])
+    end
+
+    def test_reduce_body
+      assert_equal({
+                     "users_reduced" => {
+                       "records" => {
+                         "type"      => "sort",
+                         "operators" => [
+                           { "column" => 1, "operator" => "<" },
+                         ],
+                         "limit"     => 1,
+                       },
+                     },
+                   },
+                   reduce_message["body"]["users"])
+    end
+
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["id", "real_name"],
+                         "limit"      => 1,
+                       },
+                     },
+                     "output" => "users",
+                   },
+                   gather_message["body"]["users_reduced"])
+    end
+  end
+
+  class MultipleColumnsTest < self
+    def setup
+      @output = {
+        "elements"   => ["records"],
+        "attributes" => ["_key"],
+        "limit"      => 1,
+      }
+      @sort_by = {
+        "keys" => ["-age", "name", "_key"],
+      }
+      @request = {
+        "type" => "search",
+        "dataset" => "Droonga",
+        "body" => {
+          "queries" => {
+            "users" => {
+              "source" => "User",
+              "sortBy" => @sort_by,
+              "output" => @output,
+            },
+          },
+        },
+      }
+    end
+
+    def test_dependencies
+      reduce_inputs = ["errors", "users"]
+      gather_inputs = ["errors_reduced", "users_reduced"]
+      assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
+                   dependencies)
+    end
+
+    def test_broadcast_body
+      changed_sort_by_parameters = {
+        "offset" => 0,
+        "limit"  => 1,
+      }
+      changed_output_parameters = {
+        "attributes" => ["_key", "age", "name"],
+      }
+      assert_equal({
+                     "queries" => {
+                       "users" => {
+                         "source" => "User",
+                         "sortBy" => @sort_by.merge(changed_sort_by_parameters),
+                         "output" => @output.merge(changed_output_parameters),
+                       },
+                     },
+                   },
+                   broadcast_message["body"])
+    end
+
+    def test_reduce_body
+      assert_equal({
+                     "users_reduced" => {
+                       "records" => {
+                         "type"      => "sort",
+                         "operators" => [
+                           { "column" => 1, "operator" => ">" },
+                           { "column" => 2, "operator" => "<" },
+                           { "column" => 0, "operator" => "<" },
+                         ],
+                         "limit"     => 1,
+                       },
+                     },
+                   },
+                   reduce_message["body"]["users"])
+    end
+
+    def test_gather_records
+      assert_equal({
+                     "elements" => {
+                       "records" => {
+                         "attributes" => ["_key"],
+                         "limit"      => 1,
+                       },
+                     },
+                     "output" => "users",
+                   },
+                   gather_message["body"]["users_reduced"])
+    end
+  end
+
+  class OffsetLimitTest < self
+    def max_limit
+      [@sort_by["limit"], @output["limit"]].max
+    end
+
+    def min_limit
+      [@sort_by["limit"], @output["limit"]].min
+    end
+
+    def total_offset
+      @sort_by["offset"] + @output["offset"]
+    end
+
+    class RegularRangeTest < self
       def setup
         @output = {
           "elements"   => ["records"],
           "attributes" => ["_key"],
-          "limit"      => 1,
+          "offset"     => 4,
+          "limit"      => 8,
         }
         @sort_by = {
-          "keys" => ["name"],
+          "keys"   => ["_key"],
+          "offset" => 1,
+          "limit"  => 2,
         }
         @request = {
           "type" => "search",
@@ -274,10 +629,11 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
       def test_broadcast_body
         changed_sort_by_parameters = {
           "offset" => 0,
-          "limit"  => 1,
+          "limit"  => total_offset + max_limit,
         }
         changed_output_parameters = {
-          "attributes" => ["_key", "name"],
+          "offset" => 0,
+          "limit"  => total_offset + min_limit,
         }
         assert_equal({
                        "queries" => {
@@ -297,9 +653,9 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
                          "records" => {
                            "type"      => "sort",
                            "operators" => [
-                             { "column" => 1, "operator" => "<" },
+                             { "column" => 0, "operator" => "<" },
                            ],
-                           "limit"     => 1,
+                           "limit"     => total_offset + min_limit,
                          },
                        },
                      },
@@ -311,7 +667,8 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
                        "elements" => {
                          "records" => {
                            "attributes" => ["_key"],
-                           "limit"      => 1,
+                           "offset"     => total_offset,
+                           "limit"      => min_limit,
                          },
                        },
                        "output" => "users",
@@ -320,18 +677,18 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
       end
     end
 
-    class WithHashAttributesTest < self
+    class InfinitOutputLimitTest < self
       def setup
         @output = {
           "elements"   => ["records"],
-          "attributes" => {
-            "id"   => "_key",
-            "name" => { "source" => "name" },
-          },
-          "limit"      => 1,
+          "attributes" => ["_key"],
+          "offset"     => 4,
+          "limit"      => -1,
         }
         @sort_by = {
-          "keys" => ["hidden"],
+          "keys"   => ["_key"],
+          "offset" => 1,
+          "limit"  => 2,
         }
         @request = {
           "type" => "search",
@@ -358,14 +715,11 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
       def test_broadcast_body
         changed_sort_by_parameters = {
           "offset" => 0,
-          "limit"  => 1,
+          "limit"  => total_offset + max_limit,
         }
         changed_output_parameters = {
-          "attributes" => [
-            { "label" => "id",   "source" => "_key" },
-            { "label" => "name", "source" => "name" },
-            "hidden",
-          ],
+          "offset" => 0,
+          "limit"  => total_offset + max_limit,
         }
         assert_equal({
                        "queries" => {
@@ -385,9 +739,9 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
                          "records" => {
                            "type"      => "sort",
                            "operators" => [
-                             { "column" => 2, "operator" => "<" },
+                             { "column" => 0, "operator" => "<" },
                            ],
-                           "limit"     => 1,
+                           "limit"     => total_offset + max_limit,
                          },
                        },
                      },
@@ -398,8 +752,9 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
         assert_equal({
                        "elements" => {
                          "records" => {
-                           "attributes" => ["id", "name"],
-                           "limit"      => 1,
+                           "attributes" => ["_key"],
+                           "offset"     => total_offset,
+                           "limit"      => max_limit,
                          },
                        },
                        "output" => "users",
@@ -408,18 +763,18 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
       end
     end
 
-    class WithComplexAttributesArrayTest < self
+    class InifinitSortLimitTest < self
       def setup
         @output = {
           "elements"   => ["records"],
-          "attributes" => [
-            { "label" => "id",        "source" => "_key" },
-            { "label" => "real_name", "source" => "name" },
-          ],
-          "limit"      => 1,
+          "attributes" => ["_key"],
+          "offset"     => 4,
+          "limit"      => 8,
         }
         @sort_by = {
-          "keys" => ["name"],
+          "keys"   => ["_key"],
+          "offset" => 1,
+          "limit"  => -1,
         }
         @request = {
           "type" => "search",
@@ -446,13 +801,11 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
       def test_broadcast_body
         changed_sort_by_parameters = {
           "offset" => 0,
-          "limit"  => 1,
+          "limit"  => total_offset + max_limit,
         }
         changed_output_parameters = {
-          "attributes" => [
-            { "label" => "id",        "source" => "_key" },
-            { "label" => "real_name", "source" => "name" },
-          ],
+          "offset" => 0,
+          "limit"  => total_offset + max_limit,
         }
         assert_equal({
                        "queries" => {
@@ -472,9 +825,9 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
                          "records" => {
                            "type"      => "sort",
                            "operators" => [
-                             { "column" => 1, "operator" => "<" },
+                             { "column" => 0, "operator" => "<" },
                            ],
-                           "limit"     => 1,
+                           "limit"     => total_offset + max_limit,
                          },
                        },
                      },
@@ -485,8 +838,9 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
         assert_equal({
                        "elements" => {
                          "records" => {
-                           "attributes" => ["id", "real_name"],
-                           "limit"      => 1,
+                           "attributes" => ["_key"],
+                           "offset"     => total_offset,
+                           "limit"      => max_limit,
                          },
                        },
                        "output" => "users",
@@ -495,15 +849,18 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
       end
     end
 
-    class MultipleColumnsTest < self
+    class InifinitBothLimitTest < self
       def setup
         @output = {
           "elements"   => ["records"],
           "attributes" => ["_key"],
-          "limit"      => 1,
+          "offset"     => 4,
+          "limit"      => -1,
         }
         @sort_by = {
-          "keys" => ["-age", "name", "_key"],
+          "keys"   => ["_key"],
+          "offset" => 1,
+          "limit"  => -1,
         }
         @request = {
           "type" => "search",
@@ -530,10 +887,11 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
       def test_broadcast_body
         changed_sort_by_parameters = {
           "offset" => 0,
-          "limit"  => 1,
+          "limit"  => min_limit,
         }
         changed_output_parameters = {
-          "attributes" => ["_key", "age", "name"],
+          "offset" => 0,
+          "limit"  => min_limit,
         }
         assert_equal({
                        "queries" => {
@@ -553,11 +911,9 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
                          "records" => {
                            "type"      => "sort",
                            "operators" => [
-                             { "column" => 1, "operator" => ">" },
-                             { "column" => 2, "operator" => "<" },
                              { "column" => 0, "operator" => "<" },
                            ],
-                           "limit"     => 1,
+                           "limit"     => min_limit,
                          },
                        },
                      },
@@ -569,7 +925,8 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
                        "elements" => {
                          "records" => {
                            "attributes" => ["_key"],
-                           "limit"      => 1,
+                           "offset"     => total_offset,
+                           "limit"      => min_limit,
                          },
                        },
                        "output" => "users",
@@ -577,362 +934,5 @@ class DistributedSearchPlannerSortByTest < Test::Unit::TestCase
                      gather_message["body"]["users_reduced"])
       end
     end
-
-    class OffsetLimitTest < self
-      def max_limit
-        [@sort_by["limit"], @output["limit"]].max
-      end
-
-      def min_limit
-        [@sort_by["limit"], @output["limit"]].min
-      end
-
-      def total_offset
-        @sort_by["offset"] + @output["offset"]
-      end
-
-      class RegularRangeTest < self
-        def setup
-          @output = {
-            "elements"   => ["records"],
-            "attributes" => ["_key"],
-            "offset"     => 4,
-            "limit"      => 8,
-          }
-          @sort_by = {
-            "keys"   => ["_key"],
-            "offset" => 1,
-            "limit"  => 2,
-          }
-          @request = {
-            "type" => "search",
-            "dataset" => "Droonga",
-            "body" => {
-              "queries" => {
-                "users" => {
-                  "source" => "User",
-                  "sortBy" => @sort_by,
-                  "output" => @output,
-                },
-              },
-            },
-          }
-        end
-
-        def test_dependencies
-          reduce_inputs = ["errors", "users"]
-          gather_inputs = ["errors_reduced", "users_reduced"]
-          assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                       dependencies)
-        end
-
-        def test_broadcast_body
-          changed_sort_by_parameters = {
-            "offset" => 0,
-            "limit"  => total_offset + max_limit,
-          }
-          changed_output_parameters = {
-            "offset" => 0,
-            "limit"  => total_offset + min_limit,
-          }
-          assert_equal({
-                         "queries" => {
-                           "users" => {
-                             "source" => "User",
-                             "sortBy" => @sort_by.merge(changed_sort_by_parameters),
-                             "output" => @output.merge(changed_output_parameters),
-                           },
-                         },
-                       },
-                       broadcast_message["body"])
-        end
-
-        def test_reduce_body
-          assert_equal({
-                         "users_reduced" => {
-                           "records" => {
-                             "type"      => "sort",
-                             "operators" => [
-                               { "column" => 0, "operator" => "<" },
-                             ],
-                             "limit"     => total_offset + min_limit,
-                           },
-                         },
-                       },
-                       reduce_message["body"]["users"])
-        end
-
-        def test_gather_records
-          assert_equal({
-                         "elements" => {
-                           "records" => {
-                             "attributes" => ["_key"],
-                             "offset"     => total_offset,
-                             "limit"      => min_limit,
-                           },
-                         },
-                         "output" => "users",
-                       },
-                       gather_message["body"]["users_reduced"])
-        end
-      end
-
-      class InfinitOutputLimitTest < self
-        def setup
-          @output = {
-            "elements"   => ["records"],
-            "attributes" => ["_key"],
-            "offset"     => 4,
-            "limit"      => -1,
-          }
-          @sort_by = {
-            "keys"   => ["_key"],
-            "offset" => 1,
-            "limit"  => 2,
-          }
-          @request = {
-            "type" => "search",
-            "dataset" => "Droonga",
-            "body" => {
-              "queries" => {
-                "users" => {
-                  "source" => "User",
-                  "sortBy" => @sort_by,
-                  "output" => @output,
-                },
-              },
-            },
-          }
-        end
-
-        def test_dependencies
-          reduce_inputs = ["errors", "users"]
-          gather_inputs = ["errors_reduced", "users_reduced"]
-          assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                       dependencies)
-        end
-
-        def test_broadcast_body
-          changed_sort_by_parameters = {
-            "offset" => 0,
-            "limit"  => total_offset + max_limit,
-          }
-          changed_output_parameters = {
-            "offset" => 0,
-            "limit"  => total_offset + max_limit,
-          }
-          assert_equal({
-                         "queries" => {
-                           "users" => {
-                             "source" => "User",
-                             "sortBy" => @sort_by.merge(changed_sort_by_parameters),
-                             "output" => @output.merge(changed_output_parameters),
-                           },
-                         },
-                       },
-                       broadcast_message["body"])
-        end
-
-        def test_reduce_body
-          assert_equal({
-                         "users_reduced" => {
-                           "records" => {
-                             "type"      => "sort",
-                             "operators" => [
-                               { "column" => 0, "operator" => "<" },
-                             ],
-                             "limit"     => total_offset + max_limit,
-                           },
-                         },
-                       },
-                       reduce_message["body"]["users"])
-        end
-
-        def test_gather_records
-          assert_equal({
-                         "elements" => {
-                           "records" => {
-                             "attributes" => ["_key"],
-                             "offset"     => total_offset,
-                             "limit"      => max_limit,
-                           },
-                         },
-                         "output" => "users",
-                       },
-                       gather_message["body"]["users_reduced"])
-        end
-      end
-
-      class InifinitSortLimitTest < self
-        def setup
-          @output = {
-            "elements"   => ["records"],
-            "attributes" => ["_key"],
-            "offset"     => 4,
-            "limit"      => 8,
-          }
-          @sort_by = {
-            "keys"   => ["_key"],
-            "offset" => 1,
-            "limit"  => -1,
-          }
-          @request = {
-            "type" => "search",
-            "dataset" => "Droonga",
-            "body" => {
-              "queries" => {
-                "users" => {
-                  "source" => "User",
-                  "sortBy" => @sort_by,
-                  "output" => @output,
-                },
-              },
-            },
-          }
-        end
-
-        def test_dependencies
-          reduce_inputs = ["errors", "users"]
-          gather_inputs = ["errors_reduced", "users_reduced"]
-          assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                       dependencies)
-        end
-
-        def test_broadcast_body
-          changed_sort_by_parameters = {
-            "offset" => 0,
-            "limit"  => total_offset + max_limit,
-          }
-          changed_output_parameters = {
-            "offset" => 0,
-            "limit"  => total_offset + max_limit,
-          }
-          assert_equal({
-                         "queries" => {
-                           "users" => {
-                             "source" => "User",
-                             "sortBy" => @sort_by.merge(changed_sort_by_parameters),
-                             "output" => @output.merge(changed_output_parameters),
-                           },
-                         },
-                       },
-                       broadcast_message["body"])
-        end
-
-        def test_reduce_body
-          assert_equal({
-                         "users_reduced" => {
-                           "records" => {
-                             "type"      => "sort",
-                             "operators" => [
-                               { "column" => 0, "operator" => "<" },
-                             ],
-                             "limit"     => total_offset + max_limit,
-                           },
-                         },
-                       },
-                       reduce_message["body"]["users"])
-        end
-
-        def test_gather_records
-          assert_equal({
-                         "elements" => {
-                           "records" => {
-                             "attributes" => ["_key"],
-                             "offset"     => total_offset,
-                             "limit"      => max_limit,
-                           },
-                         },
-                         "output" => "users",
-                       },
-                       gather_message["body"]["users_reduced"])
-        end
-      end
-
-      class InifinitBothLimitTest < self
-        def setup
-          @output = {
-            "elements"   => ["records"],
-            "attributes" => ["_key"],
-            "offset"     => 4,
-            "limit"      => -1,
-          }
-          @sort_by = {
-            "keys"   => ["_key"],
-            "offset" => 1,
-            "limit"  => -1,
-          }
-          @request = {
-            "type" => "search",
-            "dataset" => "Droonga",
-            "body" => {
-              "queries" => {
-                "users" => {
-                  "source" => "User",
-                  "sortBy" => @sort_by,
-                  "output" => @output,
-                },
-              },
-            },
-          }
-        end
-
-        def test_dependencies
-          reduce_inputs = ["errors", "users"]
-          gather_inputs = ["errors_reduced", "users_reduced"]
-          assert_equal(expected_dependencies(reduce_inputs, gather_inputs),
-                       dependencies)
-        end
-
-        def test_broadcast_body
-          changed_sort_by_parameters = {
-            "offset" => 0,
-            "limit"  => min_limit,
-          }
-          changed_output_parameters = {
-            "offset" => 0,
-            "limit"  => min_limit,
-          }
-          assert_equal({
-                         "queries" => {
-                           "users" => {
-                             "source" => "User",
-                             "sortBy" => @sort_by.merge(changed_sort_by_parameters),
-                             "output" => @output.merge(changed_output_parameters),
-                           },
-                         },
-                       },
-                       broadcast_message["body"])
-        end
-
-        def test_reduce_body
-          assert_equal({
-                         "users_reduced" => {
-                           "records" => {
-                             "type"      => "sort",
-                             "operators" => [
-                               { "column" => 0, "operator" => "<" },
-                             ],
-                             "limit"     => min_limit,
-                           },
-                         },
-                       },
-                       reduce_message["body"]["users"])
-        end
-
-        def test_gather_records
-          assert_equal({
-                         "elements" => {
-                           "records" => {
-                             "attributes" => ["_key"],
-                             "offset"     => total_offset,
-                             "limit"      => min_limit,
-                           },
-                         },
-                         "output" => "users",
-                       },
-                       gather_message["body"]["users_reduced"])
-        end
-      end
-    end
+  end
 end




More information about the Groonga-commit mailing list
Back to archive index