activegroonga 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.textile +55 -0
- data/Rakefile +45 -165
- data/{license/LGPL → doc/text/lgpl.txt} +0 -0
- data/doc/text/news.textile +60 -0
- data/doc/text/tutorial.textile +3 -0
- data/lib/active_groonga/base.rb +50 -2
- data/lib/active_groonga/railtie.rb +6 -5
- data/lib/active_groonga/railties/groonga.rake +8 -4
- data/lib/active_groonga/result_set.rb +133 -8
- data/lib/active_groonga/version.rb +1 -1
- data/test/active-groonga-test-utils.rb +6 -0
- data/test/run-test.rb +11 -24
- data/test/test-base.rb +10 -4
- data/test/test-result-set.rb +121 -9
- metadata +90 -138
- data/AUTHORS +0 -1
- data/NEWS.ja.rdoc +0 -46
- data/NEWS.rdoc +0 -46
- data/README.ja.rdoc +0 -52
- data/README.rdoc +0 -52
- data/test-unit-notify/Rakefile +0 -47
- data/test-unit-notify/lib/test/unit/notify.rb +0 -104
- data/test-unit/COPYING +0 -56
- data/test-unit/GPL +0 -340
- data/test-unit/PSFL +0 -271
- data/test-unit/Rakefile +0 -53
- data/test-unit/TODO +0 -5
- data/test-unit/bin/testrb +0 -5
- data/test-unit/html/bar.svg +0 -153
- data/test-unit/html/developer.svg +0 -469
- data/test-unit/html/favicon.ico +0 -0
- data/test-unit/html/favicon.svg +0 -82
- data/test-unit/html/heading-mark.svg +0 -393
- data/test-unit/html/index.html +0 -247
- data/test-unit/html/index.html.ja +0 -270
- data/test-unit/html/install.svg +0 -636
- data/test-unit/html/logo.svg +0 -483
- data/test-unit/html/test-unit.css +0 -339
- data/test-unit/html/tutorial.svg +0 -559
- data/test-unit/lib/test/unit.rb +0 -328
- data/test-unit/lib/test/unit/assertionfailederror.rb +0 -25
- data/test-unit/lib/test/unit/assertions.rb +0 -1334
- data/test-unit/lib/test/unit/attribute.rb +0 -125
- data/test-unit/lib/test/unit/autorunner.rb +0 -363
- data/test-unit/lib/test/unit/collector.rb +0 -36
- data/test-unit/lib/test/unit/collector/descendant.rb +0 -23
- data/test-unit/lib/test/unit/collector/dir.rb +0 -108
- data/test-unit/lib/test/unit/collector/load.rb +0 -144
- data/test-unit/lib/test/unit/collector/objectspace.rb +0 -34
- data/test-unit/lib/test/unit/color-scheme.rb +0 -106
- data/test-unit/lib/test/unit/color.rb +0 -96
- data/test-unit/lib/test/unit/diff.rb +0 -740
- data/test-unit/lib/test/unit/error.rb +0 -130
- data/test-unit/lib/test/unit/exceptionhandler.rb +0 -39
- data/test-unit/lib/test/unit/failure.rb +0 -136
- data/test-unit/lib/test/unit/fixture.rb +0 -176
- data/test-unit/lib/test/unit/notification.rb +0 -129
- data/test-unit/lib/test/unit/omission.rb +0 -191
- data/test-unit/lib/test/unit/pending.rb +0 -150
- data/test-unit/lib/test/unit/priority.rb +0 -180
- data/test-unit/lib/test/unit/runner/console.rb +0 -52
- data/test-unit/lib/test/unit/runner/emacs.rb +0 -8
- data/test-unit/lib/test/unit/runner/tap.rb +0 -8
- data/test-unit/lib/test/unit/testcase.rb +0 -483
- data/test-unit/lib/test/unit/testresult.rb +0 -121
- data/test-unit/lib/test/unit/testsuite.rb +0 -110
- data/test-unit/lib/test/unit/ui/console/outputlevel.rb +0 -14
- data/test-unit/lib/test/unit/ui/console/testrunner.rb +0 -430
- data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +0 -63
- data/test-unit/lib/test/unit/ui/tap/testrunner.rb +0 -82
- data/test-unit/lib/test/unit/ui/testrunner.rb +0 -53
- data/test-unit/lib/test/unit/ui/testrunnermediator.rb +0 -77
- data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +0 -41
- data/test-unit/lib/test/unit/util/backtracefilter.rb +0 -42
- data/test-unit/lib/test/unit/util/method-owner-finder.rb +0 -28
- data/test-unit/lib/test/unit/util/observable.rb +0 -90
- data/test-unit/lib/test/unit/util/output.rb +0 -31
- data/test-unit/lib/test/unit/util/procwrapper.rb +0 -48
- data/test-unit/lib/test/unit/version.rb +0 -7
- data/test-unit/sample/adder.rb +0 -13
- data/test-unit/sample/subtracter.rb +0 -12
- data/test-unit/sample/test_adder.rb +0 -20
- data/test-unit/sample/test_subtracter.rb +0 -20
- data/test-unit/sample/test_user.rb +0 -23
- data/test-unit/test/collector/test-descendant.rb +0 -133
- data/test-unit/test/collector/test-load.rb +0 -442
- data/test-unit/test/collector/test_dir.rb +0 -406
- data/test-unit/test/collector/test_objectspace.rb +0 -100
- data/test-unit/test/run-test.rb +0 -15
- data/test-unit/test/test-attribute.rb +0 -86
- data/test-unit/test/test-color-scheme.rb +0 -69
- data/test-unit/test/test-color.rb +0 -47
- data/test-unit/test/test-diff.rb +0 -518
- data/test-unit/test/test-emacs-runner.rb +0 -60
- data/test-unit/test/test-fixture.rb +0 -287
- data/test-unit/test/test-notification.rb +0 -33
- data/test-unit/test/test-omission.rb +0 -81
- data/test-unit/test/test-pending.rb +0 -70
- data/test-unit/test/test-priority.rb +0 -119
- data/test-unit/test/test-testcase.rb +0 -544
- data/test-unit/test/test_assertions.rb +0 -1197
- data/test-unit/test/test_error.rb +0 -26
- data/test-unit/test/test_failure.rb +0 -33
- data/test-unit/test/test_testresult.rb +0 -113
- data/test-unit/test/test_testsuite.rb +0 -129
- data/test-unit/test/testunit-test-util.rb +0 -14
- data/test-unit/test/ui/test_tap.rb +0 -33
- data/test-unit/test/ui/test_testrunmediator.rb +0 -20
- data/test-unit/test/util/test-method-owner-finder.rb +0 -38
- data/test-unit/test/util/test-output.rb +0 -11
- data/test-unit/test/util/test_backtracefilter.rb +0 -41
- data/test-unit/test/util/test_observable.rb +0 -102
- data/test-unit/test/util/test_procwrapper.rb +0 -36
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2010 Kouhei Sutou <kou@clear-code.com>
|
|
1
|
+
# Copyright (C) 2010-2011 Kouhei Sutou <kou@clear-code.com>
|
|
2
2
|
#
|
|
3
3
|
# This library is free software; you can redistribute it and/or
|
|
4
4
|
# modify it under the terms of the GNU Lesser General Public
|
|
@@ -23,14 +23,15 @@ module ActiveGroonga
|
|
|
23
23
|
class Railtie < Rails::Railtie
|
|
24
24
|
config.active_groonga = ActiveSupport::OrderedOptions.new
|
|
25
25
|
|
|
26
|
-
config.
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
config.app_generators.orm(:active_groonga,
|
|
27
|
+
:migration => true,
|
|
28
|
+
:timestamps => true)
|
|
29
29
|
|
|
30
30
|
config.before_configuration do
|
|
31
31
|
application_config = Rails.application.config
|
|
32
32
|
application_config.extend(Railties::Configurable)
|
|
33
|
-
application_config.paths.
|
|
33
|
+
application_config.paths.add("config/groonga",
|
|
34
|
+
:with => "config/groonga.yml")
|
|
34
35
|
end
|
|
35
36
|
|
|
36
37
|
rake_tasks do
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- ruby -*-
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2010 Kouhei Sutou <kou@clear-code.com>
|
|
3
|
+
# Copyright (C) 2010-2011 Kouhei Sutou <kou@clear-code.com>
|
|
4
4
|
#
|
|
5
5
|
# This library is free software; you can redistribute it and/or
|
|
6
6
|
# modify it under the terms of the GNU Lesser General Public
|
|
@@ -121,15 +121,16 @@ namespace :groonga do
|
|
|
121
121
|
desc('Load the seed data from db/groonga/seeds/#{RAILS_ENV}.grn, ' +
|
|
122
122
|
'db/groonga/seeds/#{RAILS_ENV}.rb, db/groonga/seeds.grn or ' +
|
|
123
123
|
'db/groonga/seeds.rb')
|
|
124
|
-
task :seed => :
|
|
124
|
+
task :seed => :environment do
|
|
125
125
|
base_dir = Rails.root + "db" + "groonga"
|
|
126
126
|
candidates = [base_dir + "seeds" + "#{Rails.env}.grn",
|
|
127
127
|
base_dir + "seeds" + "#{Rails.env}.rb",
|
|
128
128
|
base_dir + "seeds.grn",
|
|
129
129
|
base_dir + "seeds.rb"]
|
|
130
130
|
seed_file_path = candidates.find(&:exist?)
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
extension = nil
|
|
132
|
+
extension = seed_file_path.extname if seed_file_path
|
|
133
|
+
case extension
|
|
133
134
|
when /\A\.grn\z/i
|
|
134
135
|
ActiveGroonga::Base.database.ensure_available
|
|
135
136
|
context = ActiveGroonga::Base.context
|
|
@@ -143,6 +144,9 @@ namespace :groonga do
|
|
|
143
144
|
end
|
|
144
145
|
when /\A\.rb\z/i
|
|
145
146
|
load(seed_file_path)
|
|
147
|
+
when nil
|
|
148
|
+
candidate_paths = candidates.collect(&:to_s)
|
|
149
|
+
raise "seed file doesn't exist. candidates: #{candidate_paths.inspect}"
|
|
146
150
|
else
|
|
147
151
|
raise "unsupported seed file type: <#{seed_file_path}>"
|
|
148
152
|
end
|
|
@@ -27,21 +27,122 @@ module ActiveGroonga
|
|
|
27
27
|
@expression = @records.expression
|
|
28
28
|
end
|
|
29
29
|
@n_records = options[:n_records] || @records.size
|
|
30
|
+
@default_sort_keys = options[:default_sort_keys]
|
|
31
|
+
@default_limit = options[:default_limit]
|
|
30
32
|
compute_n_key_nested
|
|
31
33
|
end
|
|
32
34
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
# Paginates the result set.
|
|
36
|
+
#
|
|
37
|
+
# @overload paginate(sort_keys, options={})
|
|
38
|
+
# @param [Array<Array<String, Symbol>>] sort_keys
|
|
39
|
+
# The array of sort key for paginating. Each sort
|
|
40
|
+
# key is an array of sort key column name and order.
|
|
41
|
+
# @option options [Integer] :size The page size.
|
|
42
|
+
# {Base.limit} is used as the default value.
|
|
43
|
+
# @option options [Integer] :page The target page.
|
|
44
|
+
# The page is 1 origin not 0 origin. 1 is used as
|
|
45
|
+
# the default value.
|
|
46
|
+
# @return [ResultSet] paginated result set.
|
|
47
|
+
#
|
|
48
|
+
# @example
|
|
49
|
+
# result_set = User.all
|
|
50
|
+
# # Paginates by sorting by "name" column value in
|
|
51
|
+
# # ascending order. The paginated result set has
|
|
52
|
+
# # less than or equal 10 records. And the returned
|
|
53
|
+
# # page is user requested page. If user doesn't
|
|
54
|
+
# # specify page, the first page is returned.
|
|
55
|
+
# result_set.paginate([["name", :ascending]],
|
|
56
|
+
# :size => 10,
|
|
57
|
+
# :page => param[:page])
|
|
58
|
+
#
|
|
59
|
+
# @overload paginate(options={})
|
|
60
|
+
# @option options [Integer] :size The page size.
|
|
61
|
+
# {Base.limit} is used as the default value.
|
|
62
|
+
# @option options [Integer] :page The target page.
|
|
63
|
+
# 1 is used as the default value.
|
|
64
|
+
# @return [ResultSet] paginated result set.
|
|
65
|
+
#
|
|
66
|
+
# @example
|
|
67
|
+
# # The default sort keys.
|
|
68
|
+
# User.sort_keys = [["name", :ascending]]
|
|
69
|
+
# result_set = User.all
|
|
70
|
+
# # Paginates by sorting by "name" column value in
|
|
71
|
+
# # ascending order because it is the default sort
|
|
72
|
+
# # keys. The paginated result set has
|
|
73
|
+
# # less than or equal 10 records. And the returned
|
|
74
|
+
# # page is user requested page. If user doesn't
|
|
75
|
+
# # specify page, the first page is returned.
|
|
76
|
+
# result_set.paginate(:size => 10,
|
|
77
|
+
# :page => param[:page])
|
|
78
|
+
#
|
|
79
|
+
# {Base.sort_keys} is used as the sort keys.
|
|
80
|
+
def paginate(sort_keys=nil, options={})
|
|
81
|
+
if sort_keys.is_a?(Hash) and options.empty?
|
|
82
|
+
options = sort_keys
|
|
83
|
+
sort_keys = nil
|
|
84
|
+
end
|
|
85
|
+
options[:size] = normalize_limit(options[:size])
|
|
86
|
+
options[:page] = normalize_page(options[:page])
|
|
87
|
+
sort_keys = normalize_sort_keys(sort_keys)
|
|
35
88
|
records = @records.paginate(sort_keys, options)
|
|
36
|
-
set =
|
|
37
|
-
:expression => @expression)
|
|
89
|
+
set = create_result_set(records)
|
|
38
90
|
set.extend(PaginationProxy)
|
|
39
91
|
set
|
|
40
92
|
end
|
|
41
93
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
94
|
+
# Sorts the result set.
|
|
95
|
+
#
|
|
96
|
+
# @overload sort(keys, options={})
|
|
97
|
+
# @param [Array<Array<String, Symbol>>] keys
|
|
98
|
+
# The array of sort key for sort. Each sort
|
|
99
|
+
# key is an array of sort key column name and order.
|
|
100
|
+
# @option options [Integer] :limit The max number of records.
|
|
101
|
+
# {Base.limit} is used as the default value.
|
|
102
|
+
# If {Base.limit} is nil, all records are returned.
|
|
103
|
+
# @option options [Integer] :offset The record start offset.
|
|
104
|
+
# Offset is 0-origin not 1-origin.
|
|
105
|
+
# The default value is 0.
|
|
106
|
+
# @return [ResultSet] sorted result set.
|
|
107
|
+
#
|
|
108
|
+
# @example
|
|
109
|
+
# result_set = User.all
|
|
110
|
+
# # Sorts by "name" column value in
|
|
111
|
+
# # ascending order. The sorted result set has
|
|
112
|
+
# # from the 5th records to the 14th records.
|
|
113
|
+
# result_set.paginate([["name", :ascending]],
|
|
114
|
+
# :limit => 10,
|
|
115
|
+
# :offset => 4)
|
|
116
|
+
#
|
|
117
|
+
# @overload sort(options={})
|
|
118
|
+
# @option options [Integer] :limit The max number of records.
|
|
119
|
+
# {Base.limit} is used as the default value.
|
|
120
|
+
# If {Base.limit} is nil, all records are returned.
|
|
121
|
+
# @option options [Integer] :offset The record start offset.
|
|
122
|
+
# Offset is 0-origin not 1-origin.
|
|
123
|
+
# The default value is 0.
|
|
124
|
+
# @return [ResultSet] sorted result set.
|
|
125
|
+
#
|
|
126
|
+
# @example
|
|
127
|
+
# # The default sort keys.
|
|
128
|
+
# User.sort_keys = [["name", :ascending]]
|
|
129
|
+
# result_set = User.all
|
|
130
|
+
# # Sorts by "name" column value in
|
|
131
|
+
# # ascending order because it is the default sort
|
|
132
|
+
# # keys. The sorted result set has
|
|
133
|
+
# # from the 5th records to the 14th records.
|
|
134
|
+
# result_set.paginate(:limit => 10,
|
|
135
|
+
# :offset => 4)
|
|
136
|
+
#
|
|
137
|
+
# {Base.sort_keys} is used as the sort keys.
|
|
138
|
+
def sort(keys=nil, options={})
|
|
139
|
+
if keys.is_a?(Hash) and options.empty?
|
|
140
|
+
options = keys
|
|
141
|
+
keys = nil
|
|
142
|
+
end
|
|
143
|
+
keys = normalize_sort_keys(keys)
|
|
144
|
+
options[:limit] = normalize_limit(options[:limit]) || @n_records
|
|
145
|
+
create_result_set(@records.sort(keys, options))
|
|
45
146
|
end
|
|
46
147
|
|
|
47
148
|
def group(key)
|
|
@@ -82,7 +183,18 @@ module ActiveGroonga
|
|
|
82
183
|
end
|
|
83
184
|
end
|
|
84
185
|
|
|
85
|
-
def
|
|
186
|
+
def normalize_limit(limit)
|
|
187
|
+
unless limit.blank?
|
|
188
|
+
begin
|
|
189
|
+
Integer(limit)
|
|
190
|
+
rescue
|
|
191
|
+
limit = nil
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
limit || @default_limit
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
def normalize_page(page)
|
|
86
198
|
if page.blank?
|
|
87
199
|
1
|
|
88
200
|
else
|
|
@@ -94,6 +206,19 @@ module ActiveGroonga
|
|
|
94
206
|
end
|
|
95
207
|
end
|
|
96
208
|
|
|
209
|
+
def normalize_sort_keys(keys)
|
|
210
|
+
keys = @default_sort_keys if keys.blank?
|
|
211
|
+
keys = [["_id", :ascending]] if keys.blank?
|
|
212
|
+
keys
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def create_result_set(records)
|
|
216
|
+
self.class.new(records, @klass,
|
|
217
|
+
:default_sort_keys => @default_sort_keys,
|
|
218
|
+
:default_limit => @default_limit,
|
|
219
|
+
:expression => @expression)
|
|
220
|
+
end
|
|
221
|
+
|
|
97
222
|
module PaginationProxy
|
|
98
223
|
Groonga::Pagination.instance_methods.each do |method_name|
|
|
99
224
|
define_method(method_name) do
|
|
@@ -208,6 +208,12 @@ module ActiveGroongaTestUtils
|
|
|
208
208
|
"fulltext search engine",
|
|
209
209
|
"<html><body>groonga</body></html>")
|
|
210
210
|
|
|
211
|
+
@bookmark_records[:rroonga] =
|
|
212
|
+
create_bookmark(@user_records[:daijiro],
|
|
213
|
+
"http://groonga.rubyforge.org/",
|
|
214
|
+
"The Ruby bindings for groonga",
|
|
215
|
+
"<html><body>rroonga</body></html>")
|
|
216
|
+
|
|
211
217
|
@bookmark_records[:cutter] =
|
|
212
218
|
create_bookmark(@user_records[:gunyarakun],
|
|
213
219
|
"http://cutter.sourceforge.net/",
|
data/test/run-test.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2009-
|
|
3
|
+
# Copyright (C) 2009-2011 Kouhei Sutou <kou@clear-code.com>
|
|
4
4
|
#
|
|
5
5
|
# This library is free software; you can redistribute it and/or
|
|
6
6
|
# modify it under the terms of the GNU Lesser General Public
|
|
@@ -20,21 +20,12 @@
|
|
|
20
20
|
require 'pathname'
|
|
21
21
|
require 'shellwords'
|
|
22
22
|
|
|
23
|
+
require "rubygems"
|
|
24
|
+
gem "test-unit"
|
|
25
|
+
require "test/unit"
|
|
26
|
+
require "test/unit/notify"
|
|
27
|
+
|
|
23
28
|
base_dir = Pathname(__FILE__).dirname.parent.expand_path
|
|
24
|
-
test_unit_dir = base_dir + "test-unit"
|
|
25
|
-
test_unit_notify_dir = base_dir + "test-unit-notify"
|
|
26
|
-
test_unit_repository_base = "http://test-unit.rubyforge.org/svn"
|
|
27
|
-
unless test_unit_dir.exist?
|
|
28
|
-
system("svn", "co", "#{test_unit_repository_base}/trunk",
|
|
29
|
-
test_unit_dir.to_s)
|
|
30
|
-
end
|
|
31
|
-
unless test_unit_notify_dir.exist?
|
|
32
|
-
test_unit_notify_repository = "#{test_unit_repository_base}/extensions/test-unit-notify/trunk/"
|
|
33
|
-
system("svn", "co",
|
|
34
|
-
test_unit_notify_repository.to_s,
|
|
35
|
-
test_unit_notify_dir.to_s) or exit(false)
|
|
36
|
-
system("svn", "up", test_unit_dir.to_s) or exit(false)
|
|
37
|
-
end
|
|
38
29
|
|
|
39
30
|
rroonga_dir = base_dir.parent + "rroonga"
|
|
40
31
|
lib_dir = base_dir + "lib"
|
|
@@ -55,16 +46,9 @@ if rroonga_dir.exist?
|
|
|
55
46
|
$LOAD_PATH.unshift(rroonga_dir + "lib")
|
|
56
47
|
end
|
|
57
48
|
|
|
58
|
-
$LOAD_PATH.unshift(test_unit_notify_dir + "lib")
|
|
59
|
-
$LOAD_PATH.unshift(test_unit_dir + "lib")
|
|
60
|
-
|
|
61
49
|
ENV["TEST_UNIT_MAX_DIFF_TARGET_STRING_SIZE"] = "10000"
|
|
62
50
|
|
|
63
|
-
|
|
64
|
-
require 'test/unit/notify'
|
|
65
|
-
|
|
66
|
-
ARGV.unshift("--priority-mode")
|
|
67
|
-
ARGV.unshift("--notify")
|
|
51
|
+
Test::Unit::Priority.enable
|
|
68
52
|
|
|
69
53
|
$LOAD_PATH.unshift(lib_dir)
|
|
70
54
|
|
|
@@ -75,4 +59,7 @@ Dir.glob("test/**/test{_,-}*.rb") do |file|
|
|
|
75
59
|
require file.sub(/\.rb$/, '')
|
|
76
60
|
end
|
|
77
61
|
|
|
78
|
-
|
|
62
|
+
success = Test::Unit::AutoRunner.run do |runner|
|
|
63
|
+
runner.runner_options[:show_detail_immediately] = true
|
|
64
|
+
end
|
|
65
|
+
exit(success)
|
data/test/test-base.rb
CHANGED
|
@@ -19,7 +19,9 @@ class TestBase < Test::Unit::TestCase
|
|
|
19
19
|
|
|
20
20
|
def test_select
|
|
21
21
|
bookmarks = Bookmark.select
|
|
22
|
-
assert_equal(["http://groonga.org/",
|
|
22
|
+
assert_equal(["http://groonga.org/",
|
|
23
|
+
"http://groonga.rubyforge.org/",
|
|
24
|
+
"http://cutter.sourceforge.net/"].sort,
|
|
23
25
|
bookmarks.collect(&:uri).sort)
|
|
24
26
|
end
|
|
25
27
|
|
|
@@ -158,14 +160,17 @@ class TestBase < Test::Unit::TestCase
|
|
|
158
160
|
bookmarks = Bookmark.select do |record|
|
|
159
161
|
record.user == daijiro
|
|
160
162
|
end
|
|
161
|
-
assert_equal([Bookmark.find(@bookmark_records[:groonga].id),
|
|
163
|
+
assert_equal([Bookmark.find(@bookmark_records[:groonga].id),
|
|
164
|
+
Bookmark.find(@bookmark_records[:rroonga].id),
|
|
165
|
+
google],
|
|
162
166
|
bookmarks.to_a)
|
|
163
167
|
end
|
|
164
168
|
|
|
165
169
|
def test_find_reference_by_id
|
|
166
170
|
daijiro = @user_records[:daijiro]
|
|
167
171
|
bookmarks = Bookmark.select {|record| record.user == daijiro}
|
|
168
|
-
assert_equal([Bookmark.find(@bookmark_records[:groonga])
|
|
172
|
+
assert_equal([Bookmark.find(@bookmark_records[:groonga]),
|
|
173
|
+
Bookmark.find(@bookmark_records[:rroonga])],
|
|
169
174
|
bookmarks.to_a)
|
|
170
175
|
end
|
|
171
176
|
|
|
@@ -225,7 +230,8 @@ class TestBase < Test::Unit::TestCase
|
|
|
225
230
|
end
|
|
226
231
|
target =~ "groonga"
|
|
227
232
|
end
|
|
228
|
-
assert_equal([["http://groonga.org/", 10]
|
|
233
|
+
assert_equal([["http://groonga.org/", 10],
|
|
234
|
+
["http://groonga.rubyforge.org/", 5]],
|
|
229
235
|
bookmarks.collect {|bookmark| [bookmark.uri, bookmark.score]})
|
|
230
236
|
end
|
|
231
237
|
end
|
data/test/test-result-set.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2010 Kouhei Sutou <kou@clear-code.com>
|
|
1
|
+
# Copyright (C) 2010-2011 Kouhei Sutou <kou@clear-code.com>
|
|
2
2
|
#
|
|
3
3
|
# This library is free software; you can redistribute it and/or
|
|
4
4
|
# modify it under the terms of the GNU Lesser General Public
|
|
@@ -17,15 +17,127 @@
|
|
|
17
17
|
class TestResultSet < Test::Unit::TestCase
|
|
18
18
|
include ActiveGroongaTestUtils
|
|
19
19
|
|
|
20
|
-
def
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
bookmarks.paginate(["uri"], :size => 1).collect(&:uri))
|
|
20
|
+
def teardown
|
|
21
|
+
Bookmark.sort_keys = nil
|
|
22
|
+
Bookmark.limit = nil
|
|
24
23
|
end
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
class TestPaginate < self
|
|
26
|
+
def test_explicit
|
|
27
|
+
bookmarks = Bookmark.select
|
|
28
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
|
29
|
+
bookmarks.paginate(["uri"], :size => 1).collect(&:uri))
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
class TestPaginateSortKeys < self
|
|
34
|
+
def test_implicit
|
|
35
|
+
Bookmark.sort_keys = ["uri"]
|
|
36
|
+
bookmarks = Bookmark.select
|
|
37
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
|
38
|
+
bookmarks.paginate(:size => 1).collect(&:uri))
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_explicit
|
|
42
|
+
Bookmark.sort_keys = ["uri"]
|
|
43
|
+
bookmarks = Bookmark.select
|
|
44
|
+
assert_equal([User.find(@user_records[:daijiro].id)].sort,
|
|
45
|
+
bookmarks.paginate(["user"], :size => 1).collect(&:user))
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
class TestPaginateLimit < self
|
|
50
|
+
def test_implicit
|
|
51
|
+
Bookmark.limit = 2
|
|
52
|
+
bookmarks = Bookmark.select
|
|
53
|
+
assert_equal(["http://cutter.sourceforge.net/",
|
|
54
|
+
"http://groonga.org/"].sort,
|
|
55
|
+
bookmarks.paginate(["uri"]).collect(&:uri))
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def test_explicit
|
|
59
|
+
Bookmark.limit = 2
|
|
60
|
+
bookmarks = Bookmark.select
|
|
61
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
|
62
|
+
bookmarks.paginate(["uri"], :size => 1).collect(&:uri))
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
class TestPaginateAll < self
|
|
67
|
+
def test_implicit
|
|
68
|
+
Bookmark.sort_keys = ["uri"]
|
|
69
|
+
Bookmark.limit = 2
|
|
70
|
+
bookmarks = Bookmark.select
|
|
71
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
|
72
|
+
bookmarks.paginate(:size => 1).collect(&:uri))
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_explicit
|
|
76
|
+
Bookmark.sort_keys = ["uri"]
|
|
77
|
+
Bookmark.limit = 2
|
|
78
|
+
bookmarks = Bookmark.select
|
|
79
|
+
assert_equal([User.find(@user_records[:daijiro].id)].sort,
|
|
80
|
+
bookmarks.paginate(["user"], :size => 1).collect(&:user))
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
class TestSort < self
|
|
85
|
+
def test_explicit
|
|
86
|
+
bookmarks = Bookmark.select
|
|
87
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
|
88
|
+
bookmarks.sort(["uri"], :limit => 1).collect(&:uri))
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
class TestSortSortKeys < self
|
|
93
|
+
def test_implicit
|
|
94
|
+
Bookmark.sort_keys = ["uri"]
|
|
95
|
+
bookmarks = Bookmark.select
|
|
96
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
|
97
|
+
bookmarks.sort(:limit => 1).collect(&:uri))
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def test_explicit
|
|
101
|
+
Bookmark.sort_keys = ["uri"]
|
|
102
|
+
bookmarks = Bookmark.select
|
|
103
|
+
assert_equal([User.find(@user_records[:daijiro].id)].sort,
|
|
104
|
+
bookmarks.sort(["user"], :limit => 1).collect(&:user))
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
class TestSortLimit < self
|
|
109
|
+
def test_implicit
|
|
110
|
+
Bookmark.limit = 2
|
|
111
|
+
bookmarks = Bookmark.select
|
|
112
|
+
assert_equal(["http://cutter.sourceforge.net/",
|
|
113
|
+
"http://groonga.org/",].sort,
|
|
114
|
+
bookmarks.sort(["uri"]).collect(&:uri))
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def test_explicit
|
|
118
|
+
Bookmark.limit = 2
|
|
119
|
+
bookmarks = Bookmark.select
|
|
120
|
+
assert_equal(["http://cutter.sourceforge.net/"].sort,
|
|
121
|
+
bookmarks.sort(["uri"], :limit => 1).collect(&:uri))
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
class TestSortAll < self
|
|
126
|
+
def test_implicit
|
|
127
|
+
Bookmark.sort_keys = ["uri"]
|
|
128
|
+
Bookmark.limit = 2
|
|
129
|
+
bookmarks = Bookmark.select
|
|
130
|
+
assert_equal(["http://cutter.sourceforge.net/",
|
|
131
|
+
"http://groonga.org/"].sort,
|
|
132
|
+
bookmarks.sort.collect(&:uri))
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def test_explicit
|
|
136
|
+
Bookmark.sort_keys = ["uri"]
|
|
137
|
+
Bookmark.limit = 2
|
|
138
|
+
bookmarks = Bookmark.select
|
|
139
|
+
assert_equal([User.find(@user_records[:daijiro].id)].sort,
|
|
140
|
+
bookmarks.sort(["user"], :limit => 1).collect(&:user))
|
|
141
|
+
end
|
|
30
142
|
end
|
|
31
143
|
end
|